Exemplo n.º 1
0
        public ObjectiveTaskTracker MakeObjectiveTracker(ObjectiveSpec spec)
        {
            SequenceSpec sequenceSpec = spec as SequenceSpec;

            if (sequenceSpec != null)
            {
                return(new SequenceTaskTracker(this, sequenceSpec));
            }
            else
            {
                ChoiceSpec choiceSpec = spec as ChoiceSpec;
                if (choiceSpec != null)
                {
                    return(new ChoiceTracker(this, choiceSpec));
                }
                else
                {
                    TargetSpec targetSpec = spec as TargetSpec;
                    if (targetSpec != null)
                    {
                        return(new SingleTargetTaskTracker(this, targetSpec));
                    }
                    else
                    {
                        throw new ArgumentException("Unknown objective type.");
                    }
                }
            }
        }
Exemplo n.º 2
0
        //*********************************************************************
        ///
        /// <summary> Executes a runbook with the specified parameters at a
        /// specified time
        /// </summary>
        /// <param name="sequence">The sequence spec specifying which runbook
        /// to run, its parameters, and the time to run the runbook</param>
        /// <returns>The sequence containing details of the runbook's
        /// execution.</returns>
        ///
        //*********************************************************************
        public static SequenceSpec ExecuteSmaScript(SequenceSpec sequence)
        {
            var pvm = new CmpServiceLib.ProcessorVm(null);

            pvm.ExecuteSmaScript(sequence);
            return(sequence);
        }
Exemplo n.º 3
0
        //*********************************************************************
        ///
        /// <summary>
        /// Creates a new sequence spec and returns null
        /// </summary>
        /// <param name="wapSubscriptionId">A WAP subscription ID for the
        /// script </param>
        /// <param name="providerJobId">ID for the job provider</param>
        /// <returns>null</returns>
        ///
        //*********************************************************************
        /* todo: remove or complete this */
        public static SequenceSpec GetSmaScript(string wapSubscriptionId, string providerJobId)
        {
            //var rnbookops = new RunBookOperations(sequence.SmaConfig.SmaServerUrl);
            //var runbookJobStatus = rnbookops.GetJobStatus(new Guid(sequence.RunResult.JobId));

            var ss = new SequenceSpec();

            return(null);
        }
        public SequenceTaskTracker(TargetTaskTracker parent, SequenceSpec spec)
        {
            subObjectives = new List <ObjectiveTaskTracker>();
            foreach (ObjectiveSpec os in spec.Objective)
            {
                subObjectives.Add(parent.MakeObjectiveTracker(os));
            }

            current      = 0;
            accomplished = false;
        }
Exemplo n.º 5
0
        //*********************************************************************
        ///
        /// <summary>
        ///     This method is used to return list of ScriptJob type
        /// </summary>
        /// <param name="sequenceReqList"></param>
        /// <returns>list of ScriptJob</returns>
        ///
        //*********************************************************************

        private static List <ScriptJob> Convert(List <SequenceRequest> sequenceReqList)
        {
            try
            {
                return(sequenceReqList.Select(
                           sequenceReq => Convert(SequenceSpec.Deserialize(sequenceReq.Config))).ToList());
            }
            catch (Exception ex)
            {
                throw new Exception("Exception in ScriptInterface.Convert() : " +
                                    CmpInterfaceModel.Utilities.UnwindExceptionMessages(ex));
            }
        }
Exemplo n.º 6
0
        //*********************************************************************
        ///
        /// <summary>
        ///     This method is used to return ScriptJob type
        /// </summary>
        /// <param name="sequenceReq"></param>
        /// <returns>ScriptJob</returns>
        ///
        //*********************************************************************

        private static ScriptJob Convert(SequenceRequest sequenceReq)
        {
            try
            {
                var ss = Convert(SequenceSpec.Deserialize(sequenceReq.Config));
                return(ss);
            }
            catch (Exception ex)
            {
                throw new Exception("Exception in ScriptInterface.Convert() : " +
                                    CmpInterfaceModel.Utilities.UnwindExceptionMessages(ex));
            }
        }
Exemplo n.º 7
0
        //*********************************************************************
        ///
        /// <summary>
        ///     This method is used to convert to ScriptJob type
        /// </summary>
        /// <param name="sequence"></param>
        /// <returns>list of ScriptJob</returns>
        ///
        //*********************************************************************

        private static ScriptJob Convert(SequenceSpec sequence)
        {
            if (null == sequence)
            {
                return(null);
            }

            try
            {
                return(new ScriptJob
                {
                    BreakOn = sequence.BreakOn,
                    Config = sequence.Config,
                    Engine = sequence.Engine,
                    ErrorList = sequence.ErrorList,
                    ExecuteInState = sequence.ExecuteInState,
                    ID = sequence.ID,
                    Locale = sequence.Locale,
                    Name = sequence.Name,
                    ResultCode = sequence.ResultCode,
                    RunResult = Convert(sequence.RunResult),
                    ScriptList = sequence.ScriptList,
                    SmaConfig = Convert(sequence.SmaConfig),
                    TagData = sequence.TagData,
                    TimeoutMinutes = sequence.TimeoutMinutes,
                    Waitmode = sequence.Waitmode,
                    TargetName = sequence.TargetName,
                    TargetTypeCode = sequence.TargetTypeCode
                });
            }
            catch (Exception ex)
            {
                throw new Exception("Exception in ScriptInterface.Convert() : " +
                                    CmpInterfaceModel.Utilities.UnwindExceptionMessages(ex));
            }
        }
Exemplo n.º 8
0
        /// <summary>
        ///     This method is used to check the status of a Script Job
        /// </summary>
        /// <param name="scriptSpec"></param>
        /// <returns>Sequence specification</returns>
        public static SequenceSpec CheckSequenceStatus(SequenceSpec scriptSpec)
        {
            try
            {
                var    hadError        = false;
                string jobErrorMessage = null;  // IPAK Job Error Message

                if (scriptSpec.Engine.Equals(SequenceSpec.SequenceEngineEnum.SMA.ToString(),
                                             StringComparison.InvariantCultureIgnoreCase))
                {
                    var now              = DateTime.UtcNow;
                    var rnbookops        = new RunBookOperations(scriptSpec.SmaConfig.SmaServerUrl);
                    var runbookJobStatus = rnbookops.GetJobStatus(new Guid(scriptSpec.RunResult.JobId));
                    var runbookJobOutput = rnbookops.GetJSONJobOutput(new Guid(scriptSpec.RunResult.JobId));

                    if (null == scriptSpec.RunResult.Output)
                    {
                        scriptSpec.RunResult.Output = new List <SequenceRunOuputSpec>(1);
                    }

                    if (null != runbookJobStatus.Exception)
                    {
                        hadError = true;
                        scriptSpec.ResultCode           = "Exception";
                        scriptSpec.RunResult.StatusCode = "Exception";
                        jobErrorMessage = runbookJobStatus.Exception;
                        scriptSpec.RunResult.Output.Add(new SequenceRunOuputSpec()
                        {
                            Output = jobErrorMessage, When = now
                        });
                    }
                    else if (runbookJobOutput == null)
                    {
                        hadError = true;
                        scriptSpec.ResultCode           = "Exception";
                        scriptSpec.RunResult.StatusCode = "Exception";
                        jobErrorMessage = "Unable to get Job information from the SMA environment";
                        scriptSpec.RunResult.Output.Add(new SequenceRunOuputSpec()
                        {
                            Output = jobErrorMessage, When = now
                        });
                    }
                    else if (runbookJobOutput.Result == "Fail")
                    {
                        hadError = true;
                        scriptSpec.ResultCode           = "Exception";
                        scriptSpec.RunResult.StatusCode = "Exception";
                        jobErrorMessage = runbookJobOutput.Message;
                        scriptSpec.RunResult.Output.Add(new SequenceRunOuputSpec()
                        {
                            Output = jobErrorMessage, When = now
                        });
                    }
                    else
                    {
                        scriptSpec.ResultCode           = runbookJobStatus.Status;
                        scriptSpec.RunResult.StatusCode = runbookJobStatus.Status;
                        scriptSpec.RunResult.Output.Add(new SequenceRunOuputSpec()
                        {
                            Output = runbookJobStatus.Output, When = now
                        });
                    }
                }

                return(scriptSpec);
            }

            catch (Exception ex)
            {
                throw new Exception("Exception in CheckSequencesStatus() : " +
                                    CmpInterfaceModel.Utilities.UnwindExceptionMessages(ex));
            }
        }