/// <summary> /// Create a job collection. /// </summary> /// <param name='operations'> /// Reference to the /// Microsoft.WindowsAzure.Management.Scheduler.IJobCollectionOperations. /// </param> /// <param name='cloudServiceName'> /// Required. The name of the cloud service containing the job /// collection. /// </param> /// <param name='jobCollectionName'> /// Required. The name of the job collection to create. /// </param> /// <param name='parameters'> /// Required. Parameters supplied to the Create Job Collection /// operation. /// </param> /// <returns> /// The Create Job Collection operation response. /// </returns> public static JobCollectionCreateResponse BeginCreating(this IJobCollectionOperations operations, string cloudServiceName, string jobCollectionName, JobCollectionCreateParameters parameters) { return Task.Factory.StartNew((object s) => { return ((IJobCollectionOperations)s).BeginCreatingAsync(cloudServiceName, jobCollectionName, parameters); } , operations, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default).Unwrap().GetAwaiter().GetResult(); }
/// <summary> /// Create a job collection. /// </summary> /// <param name='operations'> /// Reference to the /// Microsoft.WindowsAzure.Management.Scheduler.IJobCollectionOperations. /// </param> /// <param name='cloudServiceName'> /// The name of the cloud service containing the job collection. /// </param> /// <param name='jobCollectionName'> /// The name of the job collection to create. /// </param> /// <param name='parameters'> /// Parameters supplied to the Create Job Collection operation. /// </param> /// <returns> /// The Create Job Collection operation response. /// </returns> public static JobCollectionCreateResponse BeginCreating(this IJobCollectionOperations operations, string cloudServiceName, string jobCollectionName, JobCollectionCreateParameters parameters) { try { return operations.BeginCreatingAsync(cloudServiceName, jobCollectionName, parameters).Result; } catch (AggregateException ex) { if (ex.InnerExceptions.Count > 1) { throw; } else { throw ex.InnerException; } } }
public override void ExecuteCommand() { var cred = new CertificateCloudCredentials(SubscriptionId, ManagementCertificate); var schman = CloudContext.Clients.CreateSchedulerManagementClient(cred); var createParams = new JobCollectionCreateParameters() { Label = Label, IntrinsicSettings = new JobCollectionIntrinsicSettings() { Plan = Plan, Quota = new JobCollectionQuota() { MaxJobCount = MaxJobCount, MaxJobOccurrence = MaxJobOccurrence, MaxRecurrence = MaxRecurrenceFrequency.HasValue ? new JobCollectionMaxRecurrence() { Frequency = MaxRecurrenceFrequency.Value, Interval = MaxRecurrenceInterval.Value } : null } } }; if (WhatIf) { Log.Info("Would create job collection {0} in {1} with the following params:", Arguments[0], CloudService); Log.Info(JsonConvert.SerializeObject(createParams, new StringEnumConverter())); } else { Log.Info("Creating job collection {0} in {1}...", Arguments[0], CloudService); schman.JobCollections.CreateAsync( CloudService, Arguments[0], createParams, CancellationToken.None).Wait(); } }
/// <summary> /// Create a job collection. /// </summary> /// <param name='operations'> /// Reference to the /// Microsoft.WindowsAzure.Management.Scheduler.IJobCollectionOperations. /// </param> /// <param name='cloudServiceName'> /// The name of the cloud service containing the job collection. /// </param> /// <param name='jobCollectionName'> /// The name of the job collection to create. /// </param> /// <param name='parameters'> /// Parameters supplied to the Create Job Collection operation. /// </param> /// <returns> /// The Create Job Collection operation response. /// </returns> public static Task<JobCollectionCreateResponse> BeginCreatingAsync(this IJobCollectionOperations operations, string cloudServiceName, string jobCollectionName, JobCollectionCreateParameters parameters) { return operations.BeginCreatingAsync(cloudServiceName, jobCollectionName, parameters, CancellationToken.None); }
/// <summary> /// Create a job collection. /// </summary> /// <param name='operations'> /// Reference to the /// Microsoft.WindowsAzure.Management.Scheduler.IJobCollectionOperations. /// </param> /// <param name='cloudServiceName'> /// The name of the cloud service containing the job collection. /// </param> /// <param name='jobCollectionName'> /// The name of the job collection to create. /// </param> /// <param name='parameters'> /// Parameters supplied to the Create Job Collection operation. /// </param> /// <returns> /// The response body contains the status of the specified asynchronous /// operation, indicating whether it has succeeded, is inprogress, or /// has failed. Note that this status is distinct from the HTTP status /// code returned for the Get Operation Status operation itself. If /// the asynchronous operation succeeded, the response body includes /// the HTTP status code for the successful request. If the /// asynchronous operation failed, the response body includes the HTTP /// status code for the failed request, and also includes error /// information regarding the failure. /// </returns> public static Task<SchedulerOperationStatusResponse> CreateAsync(this IJobCollectionOperations operations, string cloudServiceName, string jobCollectionName, JobCollectionCreateParameters parameters) { return operations.CreateAsync(cloudServiceName, jobCollectionName, parameters, CancellationToken.None); }
/// <summary> /// Creates a new Scheduler Job Collection /// </summary> /// <param name="jobCollectionRequest">Request values</param> /// <param name="status">Status of create action</param> /// <returns>Created Scheduler Job Collection</returns> public PSJobCollection CreateJobCollection(PSCreateJobCollectionParams jobCollectionRequest, out string status) { if (!this.AvailableRegions.Contains(jobCollectionRequest.Region, StringComparer.OrdinalIgnoreCase)) throw new Exception(Resources.SchedulerInvalidLocation); //Only one free job collection can exist in a subscription if (this.HasFreeJobCollections(jobCollectionRequest.Region) && !string.IsNullOrEmpty(jobCollectionRequest.JobCollectionPlan) && jobCollectionRequest.JobCollectionPlan.Equals("Free")) throw new Exception(Resources.SchedulerNoMoreFreeJobCollection); //Job collection name should be unique in a region if (this.HasJobCollection(jobCollectionRequest.Region, jobCollectionRequest.JobCollectionName)) throw new Exception(string.Format(Resources.SchedulerExistingJobCollection, jobCollectionRequest.JobCollectionName, jobCollectionRequest.Region)); //Create cloud service, if not available if (!IsCloudServiceCreated(jobCollectionRequest.Region)) { csmClient.CloudServices.Create( cloudServiceName: jobCollectionRequest.Region.ToCloudServiceName(), parameters: new CloudServiceCreateParameters { Description = "Cloud service created by scheduler powershell", GeoRegion = jobCollectionRequest.Region, Label = "Cloud service created by scheduler powershell" }); } JobCollectionCreateParameters jobCollectionCreateParams = new JobCollectionCreateParameters { IntrinsicSettings = new JobCollectionIntrinsicSettings { Plan = !string.IsNullOrWhiteSpace(jobCollectionRequest.JobCollectionPlan) ? (JobCollectionPlan)Enum.Parse(typeof(JobCollectionPlan), jobCollectionRequest.JobCollectionPlan) : JobCollectionPlan.Standard } }; switch (jobCollectionCreateParams.IntrinsicSettings.Plan) { case JobCollectionPlan.Free: jobCollectionCreateParams.IntrinsicSettings.Quota = new JobCollectionQuota { MaxJobCount = jobCollectionRequest.MaxJobCount.HasValue ? jobCollectionRequest.MaxJobCount : this.FreeMaxJobCountValue, MaxRecurrence = new JobCollectionMaxRecurrence { Interval = jobCollectionRequest.MaxJobInterval.HasValue ? jobCollectionRequest.MaxJobInterval.Value : this.FreeMinRecurrenceValue.GetInterval(), Frequency = !string.IsNullOrWhiteSpace(jobCollectionRequest.MaxJobFrequency) ? (JobCollectionRecurrenceFrequency)Enum.Parse(typeof(JobCollectionRecurrenceFrequency), jobCollectionRequest.MaxJobFrequency) : this.FreeMinRecurrenceValue.GetFrequency() } }; break; case JobCollectionPlan.Standard: default: jobCollectionCreateParams.IntrinsicSettings.Quota = new JobCollectionQuota { MaxJobCount = jobCollectionRequest.MaxJobCount.HasValue ? jobCollectionRequest.MaxJobCount : this.StandardMaxJobCountValue, MaxRecurrence = new JobCollectionMaxRecurrence { Interval = jobCollectionRequest.MaxJobInterval.HasValue ? jobCollectionRequest.MaxJobInterval.Value : this.StandardMinRecurrenceValue.GetInterval(), Frequency = !string.IsNullOrWhiteSpace(jobCollectionRequest.MaxJobFrequency) ? (JobCollectionRecurrenceFrequency)Enum.Parse(typeof(JobCollectionRecurrenceFrequency), jobCollectionRequest.MaxJobFrequency) : this.StandardMinRecurrenceValue.GetFrequency() } }; break; case JobCollectionPlan.Premium: jobCollectionCreateParams.IntrinsicSettings.Quota = new JobCollectionQuota { MaxJobCount = jobCollectionRequest.MaxJobCount.HasValue ? jobCollectionRequest.MaxJobCount : this.PremiumMaxJobCountValue, MaxRecurrence = new JobCollectionMaxRecurrence { Interval = jobCollectionRequest.MaxJobInterval.HasValue ? jobCollectionRequest.MaxJobInterval.Value : this.PremiumMinRecurrenceValue.GetInterval(), Frequency = !string.IsNullOrWhiteSpace(jobCollectionRequest.MaxJobFrequency) ? (JobCollectionRecurrenceFrequency)Enum.Parse(typeof(JobCollectionRecurrenceFrequency), jobCollectionRequest.MaxJobFrequency) : this.PremiumMinRecurrenceValue.GetFrequency() } }; break; } SchedulerOperationStatusResponse jobCollectionCreateResponse = schedulerManagementClient.JobCollections.Create( cloudServiceName: jobCollectionRequest.Region.ToCloudServiceName(), jobCollectionName: jobCollectionRequest.JobCollectionName, parameters: jobCollectionCreateParams); status = jobCollectionCreateResponse.StatusCode.ToString().Equals("OK") ? "Job Collection has been created" : jobCollectionCreateResponse.StatusCode.ToString(); return GetJobCollection(jobCollectionRequest.Region, jobCollectionRequest.JobCollectionName).FirstOrDefault(); }