Esempio n. 1
0
        /// <summary>
        /// Create job collection.
        /// </summary>
        /// <param name="createJobCollectionParams">Job collection properties entered by user via Powershell.</param>
        /// <returns>Job collection definition.</returns>
        public PSJobCollectionDefinition CreateJobCollection(PSJobCollectionsParams createJobCollectionParams)
        {
            if (string.IsNullOrWhiteSpace(createJobCollectionParams.ResourceGroupName))
            {
                throw new PSArgumentNullException(paramName: "ResourceGroupName");
            }

            if (string.IsNullOrWhiteSpace(createJobCollectionParams.JobCollectionName))
            {
                throw new PSArgumentNullException(paramName: "JobCollectionName");
            }

            if (string.IsNullOrWhiteSpace(createJobCollectionParams.Region))
            {
                throw new PSArgumentNullException(paramName: "Region");
            }

            if (!DoesResourceGroupExists(createJobCollectionParams.ResourceGroupName))
            {
                throw new PSArgumentException(Resources.SchedulerInvalidResourceGroup);
            }

            if (!this.AvailableRegions.Contains(createJobCollectionParams.Region))
            {
                throw new PSArgumentException(Resources.SchedulerInvalidLocation);
            }

            if (HasJobCollection(createJobCollectionParams.ResourceGroupName, createJobCollectionParams.JobCollectionName))
            {
                throw new PSInvalidOperationException(string.Format(Resources.SchedulerExistingJobCollection, createJobCollectionParams.JobCollectionName, createJobCollectionParams.ResourceGroupName));
            }

            var skuDefinition = createJobCollectionParams.Plan.GetValueOrDefaultEnum <SkuDefinition>(defaultValue: SkuDefinition.Standard);

            if (skuDefinition == SkuDefinition.Free &&
                HasFreeJobCollection())
            {
                throw new PSInvalidOperationException(Resources.SchedulerNoMoreFreeJobCollection);
            }

            var quota = new JobCollectionQuota();

            this.PopulateJobCollectionQuota(quota, skuDefinition, createJobCollectionParams, newQuota: true);

            var jcProperties = new JobCollectionProperties()
            {
                Sku   = new Sku(skuDefinition),
                Quota = quota,
            };

            var jobCollectionDefinition = new JobCollectionDefinition()
            {
                Location   = createJobCollectionParams.Region,
                Name       = createJobCollectionParams.JobCollectionName,
                Properties = jcProperties,
            };

            var jobCollectionDefinitionResult = this.SchedulerManagementClient.JobCollections.CreateOrUpdate(
                createJobCollectionParams.ResourceGroupName,
                createJobCollectionParams.JobCollectionName,
                jobCollectionDefinition);

            return(Converter.ConvertJobCollectionDefinitionToPS(jobCollectionDefinitionResult));
        }
        /// <summary>
        /// Create job collection.
        /// </summary>
        /// <param name="createJobCollectionParams">Job collection properties entered by user via Powershell.</param>
        /// <returns>Job collection definition.</returns>
        public PSJobCollectionDefinition CreateJobCollection(PSJobCollectionsParams createJobCollectionParams)
        {
            if (string.IsNullOrWhiteSpace(createJobCollectionParams.ResourceGroupName))
            {
                throw new PSArgumentNullException(paramName: "ResourceGroupName");
            }

            if (string.IsNullOrWhiteSpace(createJobCollectionParams.JobCollectionName))
            {
                throw new PSArgumentNullException(paramName: "JobCollectionName");
            }

            if (string.IsNullOrWhiteSpace(createJobCollectionParams.Region))
            {
                throw new PSArgumentNullException(paramName: "Region");
            }

            if (!DoesResourceGroupExists(createJobCollectionParams.ResourceGroupName))
            {
                throw new PSArgumentException(Resources.SchedulerInvalidResourceGroup);
            }

            if (!this.AvailableRegions.Contains(createJobCollectionParams.Region))
            {
                throw new PSArgumentException(Resources.SchedulerInvalidLocation);
            }

            if (HasJobCollection(createJobCollectionParams.ResourceGroupName, createJobCollectionParams.JobCollectionName))
            {
                throw new PSInvalidOperationException(string.Format(Resources.SchedulerExistingJobCollection, createJobCollectionParams.JobCollectionName, createJobCollectionParams.ResourceGroupName));
            }

            var skuDefinition = createJobCollectionParams.Plan.GetValueOrDefaultEnum<SkuDefinition>(defaultValue: SkuDefinition.Standard);

            if (skuDefinition == SkuDefinition.Free &&
                HasFreeJobCollection())
            {
                throw new PSInvalidOperationException(Resources.SchedulerNoMoreFreeJobCollection);
            }

            var quota = new JobCollectionQuota();

            this.PopulateJobCollectionQuota(quota, skuDefinition, createJobCollectionParams, newQuota: true);

            var jcProperties = new JobCollectionProperties()
            {
                Sku = new Sku(skuDefinition),
                Quota = quota,
            };

            var jobCollectionDefinition = new JobCollectionDefinition()
            {
                Location = createJobCollectionParams.Region,
                Name = createJobCollectionParams.JobCollectionName,
                Properties = jcProperties,
            };

            var jobCollectionDefinitionResult = this.SchedulerManagementClient.JobCollections.CreateOrUpdate(
                createJobCollectionParams.ResourceGroupName,
                createJobCollectionParams.JobCollectionName,
                jobCollectionDefinition);

            return Converter.ConvertJobCollectionDefinitionToPS(jobCollectionDefinitionResult);
        }
Esempio n. 3
0
        /// <summary>
        /// Updates job collection.
        /// </summary>
        /// <param name="updateJobCollectionParams">Job collection properties to update.</param>
        /// <returns>Job collection definition.</returns>
        public PSJobCollectionDefinition UpdateJobCollection(PSJobCollectionsParams updateJobCollectionParams)
        {
            if (string.IsNullOrWhiteSpace(updateJobCollectionParams.ResourceGroupName))
            {
                throw new PSArgumentNullException(paramName: "ResourceGroupName");
            }

            if (string.IsNullOrWhiteSpace(updateJobCollectionParams.JobCollectionName))
            {
                throw new PSArgumentNullException(paramName: "JobCollectionName");
            }

            if (!string.IsNullOrWhiteSpace(updateJobCollectionParams.Region) &&
                !this.AvailableRegions.Contains(updateJobCollectionParams.Region))
            {
                throw new PSArgumentException(Resources.SchedulerInvalidLocation);
            }

            IList <JobCollectionDefinition> jobCollectionsDefition = this.ListJobCollection(
                updateJobCollectionParams.ResourceGroupName,
                updateJobCollectionParams.JobCollectionName);

            if (jobCollectionsDefition == null)
            {
                throw new PSArgumentException(
                          string.Format(Resources.JobCollectionDoesnotExist, updateJobCollectionParams.ResourceGroupName, updateJobCollectionParams.JobCollectionName));
            }

            JobCollectionDefinition jobCollectionDefinition = jobCollectionsDefition[0];

            if (jobCollectionDefinition.Properties.Sku.Name != SkuDefinition.Free &&
                !string.IsNullOrWhiteSpace(updateJobCollectionParams.Plan) &&
                updateJobCollectionParams.Plan.Equals(Constants.FreePlan, StringComparison.InvariantCultureIgnoreCase) &&
                this.HasFreeJobCollection())
            {
                throw new PSInvalidOperationException(Resources.SchedulerNoMoreFreeJobCollection);
            }

            JobCollectionQuota quota = jobCollectionDefinition.Properties.Quota;

            SkuDefinition skuDefinition = jobCollectionDefinition.Properties.Sku.Name.Value;
            bool          newQuota      = false;

            if (!string.IsNullOrWhiteSpace(updateJobCollectionParams.Plan))
            {
                skuDefinition = updateJobCollectionParams.Plan.GetValueOrDefaultEnum <SkuDefinition>(defaultValue: SkuDefinition.Standard);
                newQuota      = true;
            }

            this.PopulateJobCollectionQuota(quota, skuDefinition, updateJobCollectionParams, newQuota);

            var jcProperties = new JobCollectionProperties()
            {
                Sku   = new Sku(skuDefinition),
                Quota = quota,
            };


            jobCollectionDefinition.Location   = updateJobCollectionParams.Region != null ? updateJobCollectionParams.Region : jobCollectionDefinition.Location;
            jobCollectionDefinition.Properties = jcProperties;

            var jobCollectionDefinitionResult = this.SchedulerManagementClient.JobCollections.CreateOrUpdate(
                updateJobCollectionParams.ResourceGroupName,
                updateJobCollectionParams.JobCollectionName,
                jobCollectionDefinition);

            return(Converter.ConvertJobCollectionDefinitionToPS(jobCollectionDefinitionResult));
        }
        /// <summary>
        /// Updates job collection.
        /// </summary>
        /// <param name="updateJobCollectionParams">Job collection properties to update.</param>
        /// <returns>Job collection definition.</returns>
        public PSJobCollectionDefinition UpdateJobCollection(PSJobCollectionsParams updateJobCollectionParams)
        {
            if (string.IsNullOrWhiteSpace(updateJobCollectionParams.ResourceGroupName))
            {
                throw new PSArgumentNullException(paramName: "ResourceGroupName");
            }

            if (string.IsNullOrWhiteSpace(updateJobCollectionParams.JobCollectionName))
            {
                throw new PSArgumentNullException(paramName: "JobCollectionName");
            }

            if (!string.IsNullOrWhiteSpace(updateJobCollectionParams.Region) &&
               !this.AvailableRegions.Contains(updateJobCollectionParams.Region))
            {
                throw new PSArgumentException(Resources.SchedulerInvalidLocation);
            }

            IList<JobCollectionDefinition> jobCollectionsDefition = this.ListJobCollection(
                updateJobCollectionParams.ResourceGroupName,
                updateJobCollectionParams.JobCollectionName);

            if (jobCollectionsDefition == null)
            {
                throw new PSArgumentException(
                    string.Format(Resources.JobCollectionDoesnotExist, updateJobCollectionParams.ResourceGroupName, updateJobCollectionParams.JobCollectionName));
            }

            JobCollectionDefinition jobCollectionDefinition = jobCollectionsDefition[0];

            if (jobCollectionDefinition.Properties.Sku.Name != SkuDefinition.Free &&
               !string.IsNullOrWhiteSpace(updateJobCollectionParams.Plan) &&
               updateJobCollectionParams.Plan.Equals(Constants.FreePlan, StringComparison.InvariantCultureIgnoreCase) &&
               this.HasFreeJobCollection())
            {
                throw new PSInvalidOperationException(Resources.SchedulerNoMoreFreeJobCollection);
            }

            JobCollectionQuota quota = jobCollectionDefinition.Properties.Quota;

            SkuDefinition skuDefinition = jobCollectionDefinition.Properties.Sku.Name.Value;
            bool newQuota = false;

            if (!string.IsNullOrWhiteSpace(updateJobCollectionParams.Plan))
            {
                skuDefinition = updateJobCollectionParams.Plan.GetValueOrDefaultEnum<SkuDefinition>(defaultValue:SkuDefinition.Standard);
                newQuota = true;
            }

            this.PopulateJobCollectionQuota(quota, skuDefinition, updateJobCollectionParams, newQuota);

            var jcProperties = new JobCollectionProperties()
            {
                Sku = new Sku(skuDefinition),
                Quota = quota,
            };


            jobCollectionDefinition.Location = updateJobCollectionParams.Region != null ? updateJobCollectionParams.Region : jobCollectionDefinition.Location;
            jobCollectionDefinition.Properties = jcProperties;

            var jobCollectionDefinitionResult = this.SchedulerManagementClient.JobCollections.CreateOrUpdate(
                updateJobCollectionParams.ResourceGroupName,
                updateJobCollectionParams.JobCollectionName,
                jobCollectionDefinition);

            return Converter.ConvertJobCollectionDefinitionToPS(jobCollectionDefinitionResult);
        }