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."); } } } }
//********************************************************************* /// /// <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); }
//********************************************************************* /// /// <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; }
//********************************************************************* /// /// <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)); } }
//********************************************************************* /// /// <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)); } }
//********************************************************************* /// /// <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)); } }
/// <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)); } }