示例#1
0
        /// <summary>
        /// Filters the deployments at subscription scope.
        /// </summary>
        /// <param name="options">The filtering options</param>
        /// <returns>The filtered list of deployments</returns>
        public virtual List <PSDeployment> FilterDeploymentsAtSubscriptionScope(FilterDeploymentOptions options)
        {
            List <PSDeployment> deployments = new List <PSDeployment>();
            string        name = options.DeploymentName;
            List <string> excludedProvisioningStates = options.ExcludedProvisioningStates ?? new List <string>();

            if (!string.IsNullOrEmpty(name))
            {
                deployments.Add(ResourceManagementClient.Deployments.GetAtSubscriptionScope(name).ToPSDeployment());
            }
            else
            {
                var result = ResourceManagementClient.Deployments.ListAtSubscriptionScope();

                deployments.AddRange(result.Select(d => d.ToPSDeployment()));

                while (!string.IsNullOrEmpty(result.NextPageLink))
                {
                    result = ResourceManagementClient.Deployments.ListAtSubscriptionScopeNext(result.NextPageLink);
                    deployments.AddRange(result.Select(d => d.ToPSDeployment()));
                }
            }

            if (excludedProvisioningStates.Count > 0)
            {
                return(deployments.Where(d => excludedProvisioningStates
                                         .All(s => !s.Equals(d.ProvisioningState, StringComparison.OrdinalIgnoreCase))).ToList());
            }
            else
            {
                return(deployments);
            }
        }
示例#2
0
        /// <summary>
        /// Cancels the active deployment.
        /// </summary>
        /// <param name="deploymentName">Deployment name</param>
        public virtual void CancelDeploymentAtSubscriptionScope(string deploymentName)
        {
            if (string.IsNullOrEmpty(deploymentName))
            {
                throw new ArgumentException(string.Format(ProjectResources.NoDeploymentToCancel, deploymentName));
            }

            FilterDeploymentOptions options = new FilterDeploymentOptions
            {
                DeploymentName             = deploymentName,
                ExcludedProvisioningStates = new List <string>
                {
                    ProvisioningState.Failed.ToString(),
                                    ProvisioningState.Succeeded.ToString()
                }
            };

            List <PSDeployment> deployments = this.FilterDeploymentsAtSubscriptionScope(options);

            if (deployments.Count == 0)
            {
                throw new ArgumentException(string.Format(ProjectResources.NoRunningDeploymentsAtSubscriptionScope, deploymentName));
            }
            else
            {
                ResourceManagementClient.Deployments.CancelAtSubscriptionScope(deployments.First().DeploymentName);
            }
        }
示例#3
0
        protected override void OnProcessRecord()
        {
            ConfirmAction(
                ProjectResources.DeleteDeploymentMessage,
                Name,
                () =>
            {
                var options = new FilterDeploymentOptions(DeploymentScopeType.ManagementGroup)
                {
                    ManagementGroupId = !string.IsNullOrEmpty(this.ManagementGroupId)
                            ? this.ManagementGroupId
                            : !string.IsNullOrEmpty(this.Id) ? ResourceIdUtility.GetManagementGroupId(this.Id) : this.InputObject.ManagementGroupId,
                    DeploymentName = !string.IsNullOrEmpty(this.Name)
                            ? this.Name
                            : !string.IsNullOrEmpty(this.Id) ? ResourceIdUtility.GetDeploymentName(this.Id) : this.InputObject.DeploymentName
                };

                this.ResourceManagerSdkClient.DeleteDeploymentAtManagementGroup(options.ManagementGroupId, options.DeploymentName);

                if (this.PassThru.IsPresent)
                {
                    WriteObject(true);
                }
            });
        }
        public void GetSepcificResourcesGroupDeployment()
        {
            FilterDeploymentOptions options = new FilterDeploymentOptions()
            {
                DeploymentName    = deploymentName,
                ResourceGroupName = resourceGroupName
            };
            FilterDeploymentOptions          actual   = new FilterDeploymentOptions();
            List <PSResourceGroupDeployment> result   = new List <PSResourceGroupDeployment>();
            PSResourceGroupDeployment        expected = new PSResourceGroupDeployment()
            {
                DeploymentName    = deploymentName,
                CorrelationId     = "123",
                ResourceGroupName = resourceGroupName,
                Mode = DeploymentMode.Incremental
            };

            result.Add(expected);
            resourcesClientMock.Setup(f => f.FilterResourceGroupDeployments(It.IsAny <FilterDeploymentOptions>()))
            .Returns(result)
            .Callback((FilterDeploymentOptions o) => { actual = o; });

            cmdlet.ResourceGroupName = resourceGroupName;
            cmdlet.Name = deploymentName;

            cmdlet.ExecuteCmdlet();

            commandRuntimeMock.Verify(f => f.WriteObject(result, true), Times.Once());
            Assert.Equal(options.DeploymentName, actual.DeploymentName);
            Assert.Equal(options.ExcludedProvisioningStates, actual.ExcludedProvisioningStates);
            Assert.Equal(options.ProvisioningStates, actual.ProvisioningStates);
            Assert.Equal(options.ResourceGroupName, actual.ResourceGroupName);
        }
示例#5
0
        /// <summary>
        /// Executes the cmdlet.
        /// </summary>
        protected override void OnProcessRecord()
        {
            base.OnProcessRecord();

            var options = new FilterDeploymentOptions(DeploymentScopeType.Tenant)
            {
                DeploymentName = !string.IsNullOrEmpty(this.DeploymentName) ? this.DeploymentName : this.DeploymentObject.DeploymentName
            };

            if (ShouldProcess(options.DeploymentName, VerbsData.Save))
            {
                var template = ResourceManagerSdkClient.GetDeploymentTemplateAtTenantScope(options.DeploymentName);

                string path = FileUtility.SaveTemplateFile(
                    templateName: options.DeploymentName,
                    contents: template,
                    outputPath:
                    string.IsNullOrEmpty(this.Path)
                            ? System.IO.Path.Combine(CurrentPath(), options.DeploymentName)
                            : this.TryResolvePath(this.Path),
                    overwrite: this.Force,
                    shouldContinue: ShouldContinue);

                WriteObject(new PSTemplatePath()
                {
                    Path = path
                });
            }
        }
示例#6
0
        public override void ExecuteCmdlet()
        {
            FilterDeploymentOptions options = new FilterDeploymentOptions()
            {
                DeploymentName = Name ?? (string.IsNullOrEmpty(Id) ? null : ResourceIdUtility.GetResourceName(Id))
            };

            WriteObject(ResourceManagerSdkClient.FilterDeploymentsAtSubscriptionScope(options), true);
        }
        protected override void OnProcessRecord()
        {
            FilterDeploymentOptions options = new FilterDeploymentOptions(DeploymentScopeType.Subscription)
            {
                DeploymentName = this.Name ?? (string.IsNullOrEmpty(this.Id) ? null : ResourceIdUtility.GetResourceName(this.Id))
            };

            WriteObject(ResourceManagerSdkClient.FilterDeployments(options), true);
        }
示例#8
0
        public override void ExecuteCmdlet()
        {
            FilterDeploymentOptions options = new FilterDeploymentOptions(DeploymentScopeType.Tenant)
            {
                DeploymentName = this.Name ?? (string.IsNullOrEmpty(this.Id) ? null : ResourceIdUtility.GetDeploymentName(this.Id))
            };

            WriteObject(ResourceManagerSdkClient.FilterDeployments(options), true);
        }
示例#9
0
        public override void ExecuteCmdlet()
        {
            FilterDeploymentOptions options = new FilterDeploymentOptions(DeploymentScopeType.ResourceGroup)
            {
                ResourceGroupName = ResourceGroupName ?? ResourceIdUtility.GetResourceGroupName(Id),
                DeploymentName    = Name ?? (string.IsNullOrEmpty(Id) ? null : ResourceIdUtility.GetResourceName(Id))
            };

            WriteObject(ResourceManagerSdkClient.FilterResourceGroupDeployments(options), true);
        }
        public override void ExecuteCmdlet()
        {
            var options = new FilterDeploymentOptions(DeploymentScopeType.Tenant)
            {
                DeploymentName = !string.IsNullOrEmpty(this.DeploymentName) ? this.DeploymentName : this.DeploymentObject.DeploymentName
            };

            var deploymentOperations = ResourceManagerSdkClient.ListDeploymentOperationsAtTenantScope(
                options.DeploymentName, this.OperationId);

            WriteObject(deploymentOperations, true);
        }
示例#11
0
        protected override void OnProcessRecord()
        {
            var options = new FilterDeploymentOptions(DeploymentScopeType.ManagementGroup)
            {
                ManagementGroupId = !string.IsNullOrEmpty(this.ManagementGroupId) ? this.ManagementGroupId : this.DeploymentObject.ManagementGroupId,
                DeploymentName    = !string.IsNullOrEmpty(this.DeploymentName) ? this.DeploymentName : this.DeploymentObject.DeploymentName
            };

            var deploymentOperations = ResourceManagerSdkClient.ListDeploymentOperationsAtManagementGroup(
                options.ManagementGroupId, options.DeploymentName, this.OperationId);

            WriteObject(deploymentOperations, true);
        }
示例#12
0
        public override void ExecuteCmdlet()
        {
            var options = new FilterDeploymentOptions(DeploymentScopeType.ResourceGroup)
            {
                ResourceGroupName = !string.IsNullOrEmpty(this.ResourceGroupName) ? this.ResourceGroupName : ResourceIdUtility.GetResourceGroupName(Id),
                DeploymentName    = !string.IsNullOrEmpty(this.Name) ? this.Name : ResourceIdUtility.GetResourceName(Id)
            };

            ConfirmAction(
                ProjectResources.CancelDeploymentMessage,
                ResourceGroupName,
                () => ResourceManagerSdkClient.CancelDeployment(options));

            WriteObject(true);
        }
        public override void ExecuteCmdlet()
        {
            var options = new FilterDeploymentOptions(DeploymentScopeType.Subscription)
            {
                DeploymentName = !string.IsNullOrEmpty(this.Name)
                    ? this.Name
                    : !string.IsNullOrEmpty(this.Id) ? ResourceIdUtility.GetResourceName(this.Id) : this.InputObject.DeploymentName
            };

            ConfirmAction(
                ProjectResources.CancelDeploymentMessage,
                this.Name,
                () => ResourceManagerSdkClient.CancelDeployment(options));

            if (this.PassThru.IsPresent)
            {
                WriteObject(true);
            }
        }
示例#14
0
        protected override void OnProcessRecord()
        {
            var options = new FilterDeploymentOptions(DeploymentScopeType.Tenant)
            {
                DeploymentName = !string.IsNullOrEmpty(this.Name)
                    ? this.Name
                    : !string.IsNullOrEmpty(this.Id) ? ResourceIdUtility.GetDeploymentName(this.Id) : this.InputObject.DeploymentName
            };

            ConfirmAction(
                ProjectResources.CancelDeploymentMessage,
                this.Name,
                () => ResourceManagerSdkClient.CancelDeployment(options));

            if (this.PassThru.IsPresent)
            {
                WriteObject(true);
            }
        }
示例#15
0
        /// <summary>
        /// Cancels the active deployment.
        /// </summary>
        /// <param name="resourceGroup">The resource group name</param>
        /// <param name="deploymentName">Deployment name</param>
        public virtual void CancelDeployment(string resourceGroup, string deploymentName)
        {
            FilterDeploymentOptions options = new FilterDeploymentOptions
            {
                DeploymentName    = deploymentName,
                ResourceGroupName = resourceGroup
            };

            if (string.IsNullOrEmpty(deploymentName))
            {
                options.ExcludedProvisioningStates = new List <string>
                {
                    ProvisioningState.Failed.ToString(),
                        ProvisioningState.Succeeded.ToString()
                };
            }

            List <PSResourceGroupDeployment> deployments = FilterResourceGroupDeployments(options);

            if (deployments.Count == 0)
            {
                if (string.IsNullOrEmpty(deploymentName))
                {
                    throw new ArgumentException(string.Format(ProjectResources.NoDeploymentToCancel, deploymentName));
                }
                else
                {
                    throw new ArgumentException(string.Format(ProjectResources.NoRunningDeployments, resourceGroup));
                }
            }
            else if (deployments.Count == 1)
            {
                ResourceManagementClient.Deployments.Cancel(resourceGroup, deployments.First().DeploymentName);
            }
            else
            {
                throw new ArgumentException(ProjectResources.MultipleRunningDeployment);
            }
        }
        public override void ExecuteCmdlet()
        {
            ConfirmAction(
                ProjectResources.DeleteDeploymentMessage,
                Name,
                () =>
            {
                var options = new FilterDeploymentOptions(DeploymentScopeType.Tenant)
                {
                    DeploymentName = !string.IsNullOrEmpty(this.Name)
                            ? this.Name
                            : !string.IsNullOrEmpty(this.Id) ? ResourceIdUtility.GetDeploymentName(this.Id) : this.InputObject.DeploymentName
                };

                this.ResourceManagerSdkClient.DeleteDeploymentAtTenantScope(options.DeploymentName);

                if (this.PassThru.IsPresent)
                {
                    WriteObject(true);
                }
            });
        }