Exemplo n.º 1
0
        /// <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));
        }
Exemplo n.º 2
0
        /// <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);
            }
        }