public override void ExecuteCmdlet() { this.ConfirmAction( this.Force, string.Format(ProjectResources.ConfirmOnCompleteDeploymentMode, this.ResourceGroupName), ProjectResources.CreateDeployment, ResourceGroupName, () => { PSCreateResourceGroupDeploymentParameters parameters = new PSCreateResourceGroupDeploymentParameters() { 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(ProjectResources.WarnOnDeploymentDebugSetting); } WriteObject(ResourceManagerSdkClient.ExecuteDeployment(parameters)); }, () => this.Mode == DeploymentMode.Complete); }
public void CreatesNewPSResourceGroupDeploymentWithUserTemplate() { PSCreateResourceGroupDeploymentParameters expectedParameters = new PSCreateResourceGroupDeploymentParameters() { TemplateFile = templateFile, DeploymentName = deploymentName, }; PSCreateResourceGroupDeploymentParameters actualParameters = new PSCreateResourceGroupDeploymentParameters(); 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.ToString(), ResourceGroupName = resourceGroupName, TemplateLink = new TemplateLink() { ContentVersion = "1.0", Uri = "http://mytemplate.com" }, Timestamp = new DateTime(2014, 2, 13) }; resourcesClientMock.Setup(f => f.ExecuteDeployment( It.IsAny<PSCreateResourceGroupDeploymentParameters>())) .Returns(expected) .Callback((PSCreateResourceGroupDeploymentParameters p) => { actualParameters = p; }); cmdlet.ResourceGroupName = resourceGroupName; cmdlet.Name = expectedParameters.DeploymentName; cmdlet.TemplateFile = expectedParameters.TemplateFile; cmdlet.ExecuteCmdlet(); Assert.Equal(expectedParameters.DeploymentName, actualParameters.DeploymentName); Assert.Equal(expectedParameters.TemplateFile, actualParameters.TemplateFile); Assert.NotNull(actualParameters.TemplateParameterObject); commandRuntimeMock.Verify(f => f.WriteObject(expected), Times.Once()); }
private string GenerateDeploymentName(PSCreateResourceGroupDeploymentParameters 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(); } }
/// <summary> /// Creates new deployment /// </summary> /// <param name="parameters">The create deployment parameters</param> public virtual PSResourceGroupDeployment ExecuteDeployment(PSCreateResourceGroupDeploymentParameters 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 (error.Details != null && error.Details.Count > 0) { foreach (var innerError in error.Details) { DisplayInnerDetailErrorMessage(innerError); } } } throw new InvalidOperationException(ProjectResources.FailedDeploymentValidation); } else { WriteVerbose(ProjectResources.TemplateValid); } ResourceManagementClient.Deployments.BeginCreateOrUpdate(parameters.ResourceGroupName, parameters.DeploymentName, deployment); WriteVerbose(string.Format(ProjectResources.CreatedDeployment, parameters.DeploymentName)); DeploymentExtended result = ProvisionDeploymentStatus(parameters.ResourceGroupName, parameters.DeploymentName, deployment); return result.ToPSResourceGroupDeployment(parameters.ResourceGroupName); }