/// <summary> /// Creates new deployment using the passed template file which can be user customized or /// from gallery templates. /// </summary> /// <param name="parameters">The create deployment parameters</param> /// <returns>The created deployment instance</returns> public virtual PSResourceGroupDeployment ExecuteDeployment(CreatePSResourceGroupDeploymentParameters parameters) { parameters.DeploymentName = GenerateDeploymentName(parameters); Deployment deployment = CreateBasicDeployment(parameters, parameters.DeploymentMode, parameters.DeploymentDebugLogLevel); TemplateValidationInfo validationInfo = CheckBasicDeploymentErrors(parameters.ResourceGroupName, parameters.DeploymentName, deployment); if (validationInfo.Errors.Count != 0) { foreach(var error in validationInfo.Errors) { WriteError(string.Format(ErrorFormat, error.Code, error.Message)); if(!string.IsNullOrEmpty(error.Details)) { DisplayDetailedErrorMessage(error.Details); } } throw new InvalidOperationException("The deployment validation failed."); } else { WriteVerbose(ProjectResources.TemplateValid); } ResourceManagementClient.Deployments.CreateOrUpdate(parameters.ResourceGroupName, parameters.DeploymentName, deployment); WriteVerbose(string.Format("Create template deployment '{0}'.", parameters.DeploymentName)); DeploymentExtended result = ProvisionDeploymentStatus(parameters.ResourceGroupName, parameters.DeploymentName, deployment); return result.ToPSResourceGroupDeployment(parameters.ResourceGroupName); }
protected override void ProcessRecord() { CreatePSResourceGroupDeploymentParameters parameters = new CreatePSResourceGroupDeploymentParameters() { ResourceGroupName = ResourceGroupName, DeploymentName = Name, DeploymentMode = Mode, TemplateFile = TemplateUri ?? this.TryResolvePath(TemplateFile), TemplateParameterObject = GetTemplateParameterObject(TemplateParameterObject), ParameterUri = TemplateParameterUri }; if(this.Mode == DeploymentMode.Complete) { this.ConfirmAction( this.Force, "Are you sure you want to use the complete deployment mode? Resources in the resource group '" + ResourceGroupName + "' which are not included in the template will be deleted.", "Creating a deployment with Complete mode", ResourceGroupName, () => { WriteObject(ResourcesClient.ExecuteDeployment(parameters)); }); } else { WriteObject(ResourcesClient.ExecuteDeployment(parameters)); } }
public override void ExecuteCmdlet() { CreatePSResourceGroupDeploymentParameters parameters = new CreatePSResourceGroupDeploymentParameters() { ResourceGroupName = ResourceGroupName, DeploymentName = Name, DeploymentMode = Mode, GalleryTemplateIdentity = GalleryTemplateIdentity, TemplateFile = TemplateUri ?? this.TryResolvePath(TemplateFile), TemplateParameterObject = GetTemplateParameterObject(TemplateParameterObject), TemplateVersion = TemplateVersion, StorageAccountName = StorageAccountName }; if(this.Mode == DeploymentMode.Complete) { this.ConfirmAction( this.Force, "Are you sure you want to use the complete deployment mode? Resources in the resource group '" + ResourceGroupName + "' which are not included in the template will be deleted.", "Creating a deployment with Complete mode", ResourceGroupName, () => { WriteObject(ResourcesClient.ExecuteDeployment(parameters)); }); } else { WriteObject(ResourcesClient.ExecuteDeployment(parameters)); } }
/// <summary> /// Creates new deployment using the passed template file which can be user customized or /// from gallery templates. /// </summary> /// <param name="parameters">The create deployment parameters</param> /// <returns>The created deployment instance</returns> public virtual PSResourceGroupDeployment ExecuteDeployment(CreatePSResourceGroupDeploymentParameters parameters) { parameters.DeploymentName = GenerateDeploymentName(parameters); BasicDeployment deployment = CreateBasicDeployment(parameters); TemplateValidationInfo validationInfo = CheckBasicDeploymentErrors(parameters.ResourceGroupName, parameters.DeploymentName, deployment); if (validationInfo.Errors.Count != 0) { int counter = 1; string errorFormat = "Error {0}: Code={1}; Message={2}\r\n"; StringBuilder errorsString = new StringBuilder(); validationInfo.Errors.ForEach(e => errorsString.AppendFormat(errorFormat, counter++, e.Code, e.Message)); throw new ArgumentException(errorsString.ToString()); } else { WriteVerbose(ProjectResources.TemplateValid); } if (!string.IsNullOrEmpty(parameters.StorageAccountName)) { WriteWarning("The StorageAccountName parameter is no longer used and will be removed in a future release. Please update scripts to remove this parameter."); } ResourceManagementClient.Deployments.CreateOrUpdate(parameters.ResourceGroupName, parameters.DeploymentName, deployment); WriteVerbose(string.Format("Create template deployment '{0}'.", parameters.DeploymentName)); Deployment result = ProvisionDeploymentStatus(parameters.ResourceGroupName, parameters.DeploymentName, deployment); return(result.ToPSResourceGroupDeployment(parameters.ResourceGroupName)); }
/// <summary> /// Creates new deployment using the passed template file which can be user customized or /// from gallery templates. /// </summary> /// <param name="parameters">The create deployment parameters</param> /// <returns>The created deployment instance</returns> public virtual PSResourceGroupDeployment ExecuteDeployment(CreatePSResourceGroupDeploymentParameters parameters) { parameters.DeploymentName = GenerateDeploymentName(parameters); BasicDeployment deployment = CreateBasicDeployment(parameters); List <ResourceManagementError> errors = CheckBasicDeploymentErrors(parameters.ResourceGroupName, parameters.DeploymentName, deployment); if (errors.Count != 0) { int counter = 1; string errorFormat = "Error {0}: Code={1}; Message={2}\r\n"; StringBuilder errorsString = new StringBuilder(); errors.ForEach(e => errorsString.AppendFormat(errorFormat, counter++, e.Code, e.Message)); throw new ArgumentException(errorsString.ToString()); } else { WriteVerbose(ProjectResources.TemplateValid); } ResourceManagementClient.Deployments.CreateOrUpdate(parameters.ResourceGroupName, parameters.DeploymentName, deployment); WriteVerbose(string.Format("Create template deployment '{0}' using template {1}.", parameters.DeploymentName, deployment.TemplateLink.Uri)); Deployment result = ProvisionDeploymentStatus(parameters.ResourceGroupName, parameters.DeploymentName, deployment); return(result.ToPSResourceGroupDeployment(parameters.ResourceGroupName)); }
public void CreatesNewPSResourceGroupDeploymentWithUserTemplate() { CreatePSResourceGroupDeploymentParameters expectedParameters = new CreatePSResourceGroupDeploymentParameters() { TemplateFile = templateFile, DeploymentName = deploymentName, StorageAccountName = storageAccountName, TemplateVersion = "1.0" }; CreatePSResourceGroupDeploymentParameters actualParameters = new CreatePSResourceGroupDeploymentParameters(); PSResourceGroupDeployment expected = new PSResourceGroupDeployment() { Mode = DeploymentMode.Incremental, DeploymentName = deploymentName, CorrelationId = "123", Outputs = new Dictionary<string, DeploymentVariable>() { { "Variable1", new DeploymentVariable() { Value = "true", Type = "bool" } }, { "Variable2", new DeploymentVariable() { Value = "10", Type = "int" } }, { "Variable3", new DeploymentVariable() { Value = "hello world", Type = "string" } } }, Parameters = new Dictionary<string, DeploymentVariable>() { { "Parameter1", new DeploymentVariable() { Value = "true", Type = "bool" } }, { "Parameter2", new DeploymentVariable() { Value = "10", Type = "int" } }, { "Parameter3", new DeploymentVariable() { Value = "hello world", Type = "string" } } }, ProvisioningState = ProvisioningState.Succeeded, ResourceGroupName = resourceGroupName, TemplateLink = new TemplateLink() { ContentVersion = "1.0", Uri = new Uri("http://mytemplate.com") }, Timestamp = new DateTime(2014, 2, 13) }; resourcesClientMock.Setup(f => f.ExecuteDeployment( It.IsAny<CreatePSResourceGroupDeploymentParameters>())) .Returns(expected) .Callback((CreatePSResourceGroupDeploymentParameters p) => { actualParameters = p; }); cmdlet.ResourceGroupName = resourceGroupName; cmdlet.Name = expectedParameters.DeploymentName; cmdlet.TemplateFile = expectedParameters.TemplateFile; cmdlet.TemplateVersion = expectedParameters.TemplateVersion; cmdlet.ExecuteCmdlet(); Assert.Equal(expectedParameters.DeploymentName, actualParameters.DeploymentName); Assert.Equal(expectedParameters.GalleryTemplateIdentity, actualParameters.GalleryTemplateIdentity); Assert.Equal(expectedParameters.TemplateFile, actualParameters.TemplateFile); Assert.NotNull(actualParameters.TemplateParameterObject); Assert.Equal(expectedParameters.TemplateVersion, actualParameters.TemplateVersion); commandRuntimeMock.Verify(f => f.WriteObject(expected), Times.Once()); }
/// <summary> /// Creates new deployment using the passed template file which can be user customized or /// from gallery templates. /// </summary> /// <param name="parameters">The create deployment parameters</param> /// <returns>The created deployment instance</returns> public virtual PSResourceGroupDeployment ExecuteDeployment(CreatePSResourceGroupDeploymentParameters parameters) { parameters.DeploymentName = GenerateDeploymentName(parameters); Deployment deployment = CreateBasicDeployment(parameters, parameters.DeploymentMode); ResourceManagementClient.Deployments.CreateOrUpdate(parameters.ResourceGroupName, parameters.DeploymentName, deployment); WriteVerbose(string.Format("Create template deployment '{0}'.", parameters.DeploymentName)); DeploymentExtended result = ProvisionDeploymentStatus(parameters.ResourceGroupName, parameters.DeploymentName, deployment); return(result.ToPSResourceGroupDeployment(parameters.ResourceGroupName)); }
private string GenerateDeploymentName(CreatePSResourceGroupDeploymentParameters parameters) { if (!string.IsNullOrEmpty(parameters.DeploymentName)) { return parameters.DeploymentName; } else if (!string.IsNullOrEmpty(parameters.TemplateFile)) { return Path.GetFileNameWithoutExtension(parameters.TemplateFile); } else { return Guid.NewGuid().ToString(); } }
public override void ExecuteCmdlet() { CreatePSResourceGroupDeploymentParameters parameters = new CreatePSResourceGroupDeploymentParameters() { ResourceGroupName = ResourceGroupName, DeploymentName = Name, GalleryTemplateIdentity = GalleryTemplateIdentity, TemplateFile = TemplateUri ?? this.TryResolvePath(TemplateFile), TemplateParameterObject = GetTemplateParameterObject(TemplateParameterObject), TemplateVersion = TemplateVersion, StorageAccountName = StorageAccountName }; WriteObject(ResourcesClient.ExecuteDeployment(parameters)); }
/// <summary> /// Creates new deployment using the passed template file which can be user customized or /// from gallery templates. /// </summary> /// <param name="parameters">The create deployment parameters</param> /// <returns>The created deployment instance</returns> public virtual PSResourceGroupDeployment ExecuteDeployment(CreatePSResourceGroupDeploymentParameters parameters) { parameters.DeploymentName = GenerateDeploymentName(parameters); Deployment deployment = CreateBasicDeployment(parameters, parameters.DeploymentMode); if (!string.IsNullOrEmpty(parameters.StorageAccountName)) { WriteWarning("The StorageAccountName parameter is no longer used and will be removed in a future release. Please update scripts to remove this parameter."); } ResourceManagementClient.Deployments.CreateOrUpdate(parameters.ResourceGroupName, parameters.DeploymentName, deployment); WriteVerbose(string.Format("Create template deployment '{0}'.", parameters.DeploymentName)); DeploymentExtended result = ProvisionDeploymentStatus(parameters.ResourceGroupName, parameters.DeploymentName, deployment); return(result.ToPSResourceGroupDeployment(parameters.ResourceGroupName)); }
public override void ExecuteCmdlet() { CreatePSResourceGroupDeploymentParameters parameters = new CreatePSResourceGroupDeploymentParameters() { ResourceGroupName = ResourceGroupName, DeploymentName = Name, DeploymentMode = Mode, GalleryTemplateIdentity = GalleryTemplateIdentity, TemplateFile = TemplateUri ?? this.TryResolvePath(TemplateFile), TemplateParameterObject = GetTemplateParameterObject(TemplateParameterObject), ParameterUri = TemplateParameterUri, TemplateVersion = TemplateVersion, StorageAccountName = StorageAccountName }; if (!string.IsNullOrEmpty(TemplateVersion) || !string.IsNullOrEmpty(StorageAccountName) || !string.IsNullOrEmpty(GalleryTemplateIdentity)) { WriteWarning("The GalleryTemplateIdentity, TemplateVersion and StorageAccountName parameters in New-AzureResourceGroupDeployment cmdlet is being deprecated and will be removed in a future release."); } if(this.Mode == DeploymentMode.Complete) { this.ConfirmAction( this.Force, "Are you sure you want to use the complete deployment mode? Resources in the resource group '" + ResourceGroupName + "' which are not included in the template will be deleted.", "Creating a deployment with Complete mode", ResourceGroupName, () => { WriteObject(ResourcesClient.ExecuteDeployment(parameters)); }); } else { WriteObject(ResourcesClient.ExecuteDeployment(parameters)); } }
public override void ExecuteCmdlet() { WriteWarning("The output object type of this cmdlet will be modified in a future release."); CreatePSResourceGroupDeploymentParameters parameters = new CreatePSResourceGroupDeploymentParameters() { ResourceGroupName = ResourceGroupName, DeploymentName = Name, DeploymentMode = Mode, TemplateFile = TemplateUri ?? this.TryResolvePath(TemplateFile), TemplateParameterObject = GetTemplateParameterObject(TemplateParameterObject), ParameterUri = TemplateParameterUri, DeploymentDebugLogLevel = GetDeploymentDebugLogLevel(DeploymentDebugLogLevel) }; if(!string.IsNullOrEmpty(parameters.DeploymentDebugLogLevel)) { WriteWarning("The DeploymentDebug setting has been enabled. This can potentially log secrets like passwords used in resource property or listKeys operations when you retrieve the deployment operations through Get-AzureRmResourceGroupDeploymentOperation"); } if(this.Mode == DeploymentMode.Complete) { this.ConfirmAction( this.Force, "Are you sure you want to use the complete deployment mode? Resources in the resource group '" + ResourceGroupName + "' which are not included in the template will be deleted.", "Creating a deployment with Complete mode", ResourceGroupName, () => { WriteObject(ResourcesClient.ExecuteDeployment(parameters)); }); } else { WriteObject(ResourcesClient.ExecuteDeployment(parameters)); } }
/// <summary> /// Creates new deployment using the passed template file which can be user customized or /// from gallery templates. /// </summary> /// <param name="parameters">The create deployment parameters</param> /// <returns>The created deployment instance</returns> public virtual PSResourceGroupDeployment ExecuteDeployment(CreatePSResourceGroupDeploymentParameters parameters) { parameters.DeploymentName = GenerateDeploymentName(parameters); Deployment deployment = CreateBasicDeployment(parameters, parameters.DeploymentMode); ResourceManagementClient.Deployments.CreateOrUpdate(parameters.ResourceGroupName, parameters.DeploymentName, deployment); WriteVerbose(string.Format("Create template deployment '{0}'.", parameters.DeploymentName)); DeploymentExtended result = ProvisionDeploymentStatus(parameters.ResourceGroupName, parameters.DeploymentName, deployment); return result.ToPSResourceGroupDeployment(parameters.ResourceGroupName); }
/// <summary> /// Creates new deployment using the passed template file which can be user customized or /// from gallery templates. /// </summary> /// <param name="parameters">The create deployment parameters</param> /// <returns>The created deployment instance</returns> public virtual PSResourceGroupDeployment ExecuteDeployment(CreatePSResourceGroupDeploymentParameters parameters) { parameters.DeploymentName = GenerateDeploymentName(parameters); Deployment deployment = CreateBasicDeployment(parameters, parameters.DeploymentMode); if (!string.IsNullOrEmpty(parameters.StorageAccountName)) { WriteWarning("The StorageAccountName parameter is no longer used and will be removed in a future release. Please update scripts to remove this parameter."); } ResourceManagementClient.Deployments.CreateOrUpdate(parameters.ResourceGroupName, parameters.DeploymentName, deployment); WriteVerbose(string.Format("Create template deployment '{0}'.", parameters.DeploymentName)); DeploymentExtended result = ProvisionDeploymentStatus(parameters.ResourceGroupName, parameters.DeploymentName, deployment); return result.ToPSResourceGroupDeployment(parameters.ResourceGroupName); }
private string GenerateDeploymentName(CreatePSResourceGroupDeploymentParameters parameters) { if (!string.IsNullOrEmpty(parameters.DeploymentName)) { return parameters.DeploymentName; } else if (!string.IsNullOrEmpty(parameters.TemplateFile)) { return Path.GetFileNameWithoutExtension(parameters.TemplateFile); } else if (!string.IsNullOrEmpty(parameters.GalleryTemplateIdentity)) { return parameters.GalleryTemplateIdentity; } else { return Guid.NewGuid().ToString(); } }
/// <summary> /// Creates new deployment using the passed template file which can be user customized or /// from gallery templates. /// </summary> /// <param name="parameters">The create deployment parameters</param> /// <returns>The created deployment instance</returns> public virtual PSResourceGroupDeployment ExecuteDeployment(CreatePSResourceGroupDeploymentParameters parameters) { parameters.DeploymentName = GenerateDeploymentName(parameters); BasicDeployment deployment = CreateBasicDeployment(parameters); List<ResourceManagementError> errors = CheckBasicDeploymentErrors(parameters.ResourceGroupName, parameters.DeploymentName, deployment); if (errors.Count != 0) { int counter = 1; string errorFormat = "Error {0}: Code={1}; Message={2}\r\n"; StringBuilder errorsString = new StringBuilder(); errors.ForEach(e => errorsString.AppendFormat(errorFormat, counter++, e.Code, e.Message)); throw new ArgumentException(errorsString.ToString()); } else { WriteVerbose(ProjectResources.TemplateValid); } ResourceManagementClient.Deployments.CreateOrUpdate(parameters.ResourceGroupName, parameters.DeploymentName, deployment); WriteVerbose(string.Format("Create template deployment '{0}' using template {1}.", parameters.DeploymentName, deployment.TemplateLink.Uri)); Deployment result = ProvisionDeploymentStatus(parameters.ResourceGroupName, parameters.DeploymentName, deployment); return result.ToPSResourceGroupDeployment(parameters.ResourceGroupName); }
/// <summary> /// Creates new deployment using the passed template file which can be user customized or /// from gallery templates. /// </summary> /// <param name="parameters">The create deployment parameters</param> /// <returns>The created deployment instance</returns> public virtual PSResourceGroupDeployment ExecuteDeployment(CreatePSResourceGroupDeploymentParameters parameters) { parameters.DeploymentName = GenerateDeploymentName(parameters); BasicDeployment deployment = CreateBasicDeployment(parameters); TemplateValidationInfo validationInfo = CheckBasicDeploymentErrors(parameters.ResourceGroupName, parameters.DeploymentName, deployment); if (validationInfo.Errors.Count != 0) { int counter = 1; string errorFormat = "Error {0}: Code={1}; Message={2}\r\n"; StringBuilder errorsString = new StringBuilder(); validationInfo.Errors.ForEach(e => errorsString.AppendFormat(errorFormat, counter++, e.Code, e.Message)); throw new ArgumentException(errorsString.ToString()); } else { WriteVerbose(ProjectResources.TemplateValid); } if (!string.IsNullOrEmpty(parameters.StorageAccountName)) { WriteWarning("The StorageAccountName parameter is no longer used and will be removed in a future release. Please update scripts to remove this parameter."); } ResourceManagementClient.Deployments.CreateOrUpdate(parameters.ResourceGroupName, parameters.DeploymentName, deployment); WriteVerbose(string.Format("Create template deployment '{0}'.", parameters.DeploymentName)); Deployment result = ProvisionDeploymentStatus(parameters.ResourceGroupName, parameters.DeploymentName, deployment); return result.ToPSResourceGroupDeployment(parameters.ResourceGroupName); }