/// <summary> /// Start Runbook and wait for result /// </summary> /// <param name="resourceGroup"></param> /// <param name="automationAccount"></param> /// <param name="runbookName"></param> /// <param name="jobName">Specify custom unique name. Use other overload of method without jobName to default to random guid</param> /// <param name="parameters"></param> /// <param name="timeOutSeconds"></param> /// <returns></returns> public async Task <Tuple <string, string> > StartRunbookAndReturnResult(string resourceGroup, string automationAccount, string runbookName, string jobName, Dictionary <string, string> parameters, int timeOutSeconds = 300) { //Create job Job job = await CreateJob(resourceGroup, automationAccount, runbookName, jobName, parameters); if (job != null) { await StaticRepo.SendMessageJobStartedSuccessfully(); //Wait for job to complete or fail job = await WaitForJobCompletion(resourceGroup, automationAccount, job, timeOutSeconds); //Get job streams IPage <JobStream> jobStreams = await GetJobStreams(resourceGroup, automationAccount, job); //get job output for completed, failed or something else switch (job.Status) { //case JobStatus.Completed: // return new Tuple<string, string>(GetJobOutputs(jobStreams), JobStatus.Completed); //case JobStatus.Failed: // return new Tuple<string, string>(job.Exception, JobStatus.Failed); default: return(new Tuple <string, string>(GetJobOutputs(jobStreams), job.Status)); } } return(new Tuple <string, string>($"Job could not be created for job with name:{jobName} and Runbook: {runbookName}", JobStatus.Failed)); }
/// <summary> /// Create a new runbook job with specified jobname /// </summary> /// <param name="resourceGroup"></param> /// <param name="automationAccount"></param> /// <param name="runbookName"></param> /// <param name="jobName"></param> /// <param name="parameters"></param> /// <returns></returns> public async Task <Job> CreateJob(string resourceGroup, string automationAccount, string runbookName, string jobName, Dictionary <string, string> parameters) { try { //Create parameters for job JobCreateParameters jobCreateParameters = new JobCreateParameters(new RunbookAssociationProperty { Name = runbookName }, parameters); //Create job return(await Client.Job.CreateAsync(resourceGroup, automationAccount, jobName, jobCreateParameters)); } catch (Exception ex) { await StaticRepo.SendErrorMessage(ex.Message); return(null); } }