private static void pollForJobCompletion(OrchestratorContext sco, Guid jobID) { try { while (!SCOrch.getJobDetails(sco, jobID).job.Status.Equals("Completed")) { System.Threading.Thread.Sleep(new TimeSpan(0, 0, 3)); } JobInstance j = SCOrch.getJobDetails(sco, jobID); Console.WriteLine("<OutputParameters>"); foreach (string key in j.OutputParameters.Keys) { Console.WriteLine(string.Format("\t<{0}>{1}</{0}>", key, j.OutputParameters[key])); } Console.WriteLine("</OutputParameters>"); } // Allow for 1 webservice Error catch { sco = setupOrchestratorConnection(); while (!SCOrch.getJobDetails(sco, jobID).job.Status.Equals("Completed")) { System.Threading.Thread.Sleep(new TimeSpan(0, 0, 3)); } JobInstance j = SCOrch.getJobDetails(sco, jobID); Console.WriteLine("<OutputParameters>"); foreach (string key in j.OutputParameters.Keys) { Console.WriteLine(string.Format("\t<{0}>{1}</{0}>", key, j.OutputParameters[key])); } Console.WriteLine("</OutputParameters>"); } }
private void pollForJobCompletion(OrchestratorContext sco, Guid jobID) { while (!SCOrch.getJobDetails(sco, jobID).job.Status.Equals("Completed")) { System.Threading.Thread.Sleep(new TimeSpan(0, 0, 3)); } }
public void Execute(IActivityRequest request, IActivityResponse response) { String JobId = request.Inputs["Job Id"].AsString(); OrchestratorContext sco = new OrchestratorContext(new Uri(Credentials.OrchestratorServiceURL)); sco.Credentials = new NetworkCredential(Credentials.UserName, Credentials.Password, Credentials.Domain); sco.MergeOption = MergeOption.OverwriteChanges; JobInstance jobInstance = SCOrch.getJobDetails(sco, new Guid(JobId)); response.WithFiltering().PublishRange(parseResults(jobInstance)); }
protected override void ProcessRecord() { String exceptionMessage = String.Empty; bool finished = false; int internalCounter = 0; while (internalCounter < RetryCount && !finished) { sco = setupOrchestratorConnection(); OrchestratorInterop.SCOrchestrator.Job job; try { switch (ParameterSetName) { case "Runbook": if (RunbookServer.Equals(String.Empty)) { job = SCOrch.startRunbookJob(sco, Runbook.Id, HashtableToDictionary(_InputParameters)); } else { job = SCOrch.startRunbookJob(sco, Runbook.Id, RunbookServer, HashtableToDictionary(_InputParameters)); } break; case "RunbookGuid": if (RunbookServer.Equals(String.Empty)) { job = SCOrch.startRunbookJob(sco, RunbookGuid, HashtableToDictionary(_InputParameters)); } else { job = SCOrch.startRunbookJob(sco, RunbookGuid, RunbookServer, HashtableToDictionary(_InputParameters)); } break; default: case "RunbookPath": if (RunbookServer.Equals(String.Empty)) { job = SCOrch.startRunbookJob(sco, RunbookPath, HashtableToDictionary(_InputParameters)); } else { job = SCOrch.startRunbookJob(sco, RunbookPath, RunbookServer, HashtableToDictionary(_InputParameters)); } break; } if (WaitForExit.IsPresent) { pollForJobCompletion(sco, job.Id); WriteObject(SCOrch.getJobDetails(sco, job.Id)); } else { WriteObject(new JobInstance() { job = job }); } finished = true; } catch (Exception e) { exceptionMessage = String.Format("Summary: {0}\nDetails: {1}", e.Message, e.InnerException); if (exceptionMessage.Contains("Summary: No Input Parameter on Runbook Found for Key:")) { throw new Exception(exceptionMessage); } else if (exceptionMessage.Equals("Must pass either -RunbookPath or -RunbookGUID")) { throw new Exception(exceptionMessage); } else if (exceptionMessage.Contains("Runbook Not Found: ")) { throw new Exception(exceptionMessage); } else if (exceptionMessage.Contains("The requested operation requires Publish permissions on the Runbook")) { throw new Exception(exceptionMessage); } internalCounter++; Thread.Sleep(new TimeSpan(0, 0, RetryDelay)); } } if (internalCounter >= RetryCount) { throw new Exception(exceptionMessage); } }
protected override void ProcessRecord() { switch (ParameterSetName) { case "SingleJob": WriteObject(SCOrch.getJobDetails(sco, job.job.Id)); break; case "Runbook": if (string.IsNullOrEmpty(jobStatus)) { foreach (JobInstance ji in SCOrch.getRunbookJobInstances(sco, runbook.Id, LoadJobDetails.IsPresent)) { WriteObject(ji); } } else { foreach (JobInstance ji in SCOrch.getRunbookJobInstances(sco, runbook.Id, jobStatus, LoadJobDetails.IsPresent)) { WriteObject(ji); } } break; case "AllJobs": if (string.IsNullOrEmpty(jobStatus)) { foreach (JobInstance ji in SCOrch.getAllJobs(sco, LoadJobDetails.IsPresent)) { WriteObject(ji); } } else { foreach (JobInstance ji in SCOrch.getAllJobs(sco, jobStatus, LoadJobDetails.IsPresent)) { WriteObject(ji); } } break; case "RunbookServer": if (string.IsNullOrEmpty(jobStatus)) { foreach (JobInstance ji in SCOrch.getAllJobInstancesOnRunbookServer(sco, runbookServer, LoadJobDetails.IsPresent)) { WriteObject(ji); } } else { foreach (JobInstance ji in SCOrch.getAllJobInstancesOnRunbookServer(sco, runbookServer, jobStatus, LoadJobDetails.IsPresent)) { WriteObject(ji); } } break; default: break; } }
public void Execute(IActivityRequest request, IActivityResponse response) { String RunbookIdentifier = request.Inputs["Runbook Identifier"].AsString(); String IdentifierType = request.Inputs["Identifier Type"].AsString(); String WaitForExit = request.Inputs["Wait For Exit"].AsString(); String RunbookServerName = String.Empty; String altUserName = String.Empty; String altUserDomain = String.Empty; String altPassword = String.Empty; if (request.Inputs.Contains("Alternate User Name") && request.Inputs.Contains("Alternate User Domain") && request.Inputs.Contains("Password")) { altPassword = request.Inputs["Password"].AsString(); altUserDomain = request.Inputs["Alternate User Domain"].AsString(); altUserName = request.Inputs["Alternate User Name"].AsString(); } if (request.Inputs.Contains("Runbook Server Name")) { RunbookServerName = request.Inputs["Runbook Server Name"].AsString(); } Dictionary <string, string> ParameterList = new Dictionary <string, string>(); for (int i = 0; i < Credentials.MaxInputParameters; i++) { if (i < 10) { if (request.Inputs.Contains("0" + i.ToString() + "_ParameterName") && request.Inputs.Contains("0" + i.ToString() + "_ParameterValue")) { string paramName = request.Inputs["0" + i.ToString() + "_ParameterName"].AsString(); string paramValue = request.Inputs["0" + i.ToString() + "_ParameterValue"].AsString(); ParameterList.Add(paramName, paramValue); } } else { if (request.Inputs.Contains(i.ToString() + "_ParameterName") && request.Inputs.Contains(i.ToString() + "_ParameterValue")) { string paramName = request.Inputs["0" + i.ToString() + "_ParameterName"].AsString(); string paramValue = request.Inputs["0" + i.ToString() + "_ParameterValue"].AsString(); ParameterList.Add(paramName, paramValue); } } } OrchestratorContext sco = new OrchestratorContext(new Uri(Credentials.OrchestratorServiceURL)); if (altUserName.Equals(String.Empty)) { sco.Credentials = new NetworkCredential(Credentials.UserName, Credentials.Password, Credentials.Domain); } else { sco.Credentials = new NetworkCredential(altUserName, altPassword, altUserDomain); } sco.MergeOption = MergeOption.OverwriteChanges; Guid jobInstanceGUID = Guid.NewGuid(); if (RunbookServerName.Equals(String.Empty)) { switch (IdentifierType.ToUpper()) { case "RUNBOOK PATH": jobInstanceGUID = ((Job)SCOrch.startRunbookJob(sco, RunbookIdentifier, ParameterList)).Id; break; case "RUNBOOK GUID": Guid runbookGUID = new Guid(RunbookIdentifier); jobInstanceGUID = ((Job)SCOrch.startRunbookJob(sco, runbookGUID, ParameterList)).Id; break; default: jobInstanceGUID = ((Job)SCOrch.startRunbookJob(sco, RunbookIdentifier, ParameterList)).Id; break; } } else { switch (IdentifierType.ToUpper()) { case "RUNBOOK PATH": jobInstanceGUID = ((Job)SCOrch.startRunbookJob(sco, RunbookIdentifier, RunbookServerName, ParameterList)).Id; break; case "RUNBOOK GUID": Guid runbookGUID = new Guid(RunbookIdentifier); jobInstanceGUID = ((Job)SCOrch.startRunbookJob(sco, runbookGUID, RunbookServerName, ParameterList)).Id; break; default: jobInstanceGUID = ((Job)SCOrch.startRunbookJob(sco, RunbookIdentifier, RunbookServerName, ParameterList)).Id; break; } } if (WaitForExit.Equals("True")) { JobInstance ji = SCOrch.getJobDetails(sco, jobInstanceGUID); while (!(ji.job.Status.Equals("Completed") || ji.job.Status.Equals("Canceled") || ji.job.Status.Equals("Failed"))) { System.Threading.Thread.Sleep(new TimeSpan(0, 0, 3)); ji = SCOrch.getJobDetails(sco, jobInstanceGUID); } } JobInstance jobInstance = SCOrch.getJobDetails(sco, jobInstanceGUID); response.WithFiltering().PublishRange(parseResults(jobInstance)); }