public override void ExecuteCmdlet() { if (RollbackToLastDeployment && !string.IsNullOrEmpty(RollBackDeploymentName)) { WriteExceptionError(new ArgumentException(ProjectResources.InvalidRollbackParameters)); } PSDeploymentCmdletParameters parameters = new PSDeploymentCmdletParameters() { DeploymentName = DeploymentName ?? Guid.NewGuid().ToString(), ResourceGroupName = ResourceGroupName, TemplateFile = TemplateUri ?? this.ResolvePath(TemplateFile), TemplateObject = TemplateObject, TemplateParameterObject = GetTemplateParameterObject(TemplateParameterObject), ParameterUri = TemplateParameterUri, OnErrorDeployment = RollbackToLastDeployment || !string.IsNullOrEmpty(RollBackDeploymentName) ? new OnErrorDeployment { Type = RollbackToLastDeployment ? OnErrorDeploymentType.LastSuccessful : OnErrorDeploymentType.SpecificDeployment, DeploymentName = RollbackToLastDeployment ? null : RollBackDeploymentName } : null }; WriteObject(ResourceManagerSdkClient.ValidateDeployment(parameters, Mode)); }
public override void ExecuteCmdlet() { this.ConfirmAction( this.Force, string.Format(ProjectResources.ConfirmOnCompleteDeploymentMode, this.ResourceGroupName), ProjectResources.CreateDeployment, ResourceGroupName, () => { var parameters = new PSDeploymentCmdletParameters() { 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); }
/// <summary> /// Creates new deployment /// </summary> /// <param name="parameters">The create deployment parameters</param> public virtual PSResourceGroupDeployment ExecuteDeployment(PSDeploymentCmdletParameters 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); } this.BeginDeployment(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)); }
private void ExecuteDeployment() { if (RollbackToLastDeployment && !string.IsNullOrEmpty(RollBackDeploymentName)) { WriteExceptionError(new ArgumentException(ProjectResources.InvalidRollbackParameters)); } var parameters = new PSDeploymentCmdletParameters() { ScopeType = DeploymentScopeType.ResourceGroup, ResourceGroupName = ResourceGroupName, DeploymentName = Name, DeploymentMode = Mode, TemplateFile = TemplateUri ?? this.TryResolvePath(TemplateFile), TemplateObject = TemplateObject, TemplateParameterObject = GetTemplateParameterObject(TemplateParameterObject), ParameterUri = TemplateParameterUri, DeploymentDebugLogLevel = GetDeploymentDebugLogLevel(DeploymentDebugLogLevel), Tags = TagsHelper.ConvertToTagsDictionary(Tag), OnErrorDeployment = RollbackToLastDeployment || !string.IsNullOrEmpty(RollBackDeploymentName) ? new OnErrorDeployment { Type = RollbackToLastDeployment ? OnErrorDeploymentType.LastSuccessful : OnErrorDeploymentType.SpecificDeployment, DeploymentName = RollbackToLastDeployment ? null : RollBackDeploymentName } : null }; if (!string.IsNullOrEmpty(parameters.DeploymentDebugLogLevel)) { WriteWarning(ProjectResources.WarnOnDeploymentDebugSetting); } WriteObject(ResourceManagerSdkClient.ExecuteResourceGroupDeployment(parameters)); }
protected override void OnProcessRecord() { string whatIfMessage = this.ShouldExecuteWhatIf() ? this.ExecuteWhatIf() : null; string warningMessage = $"{Environment.NewLine}{ProjectResources.ConfirmDeploymentMessage}"; string captionMessage = $"{(char)27}[1A{Color.Reset}{whatIfMessage}"; // {(char)27}[1A for cursor up. if (ShouldProcess(whatIfMessage, warningMessage, captionMessage)) { var parameters = new PSDeploymentCmdletParameters() { ScopeType = DeploymentScopeType.Subscription, Location = Location, DeploymentName = Name, DeploymentMode = DeploymentMode.Incremental, TemplateFile = TemplateUri ?? this.TryResolvePath(TemplateFile), TemplateObject = TemplateObject, TemplateParameterObject = GetTemplateParameterObject(TemplateParameterObject), ParameterUri = TemplateParameterUri, DeploymentDebugLogLevel = GetDeploymentDebugLogLevel(DeploymentDebugLogLevel), Tags = TagsHelper.ConvertToTagsDictionary(Tag) }; if (!string.IsNullOrEmpty(parameters.DeploymentDebugLogLevel)) { WriteWarning(ProjectResources.WarnOnDeploymentDebugSetting); } WriteObject(ResourceManagerSdkClient.ExecuteDeployment(parameters)); } }
private Deployment CreateBasicDeployment(PSDeploymentCmdletParameters parameters, DeploymentMode deploymentMode, string debugSetting) { Deployment deployment = new Deployment { Properties = new DeploymentProperties { Mode = deploymentMode } }; if (!string.IsNullOrEmpty(debugSetting)) { deployment.Properties.DebugSetting = new DebugSetting { DetailLevel = debugSetting }; } if (Uri.IsWellFormedUriString(parameters.TemplateFile, UriKind.Absolute)) { deployment.Properties.TemplateLink = new TemplateLink { Uri = parameters.TemplateFile }; } else { if (!string.IsNullOrEmpty(parameters.TemplateFile)) { deployment.Properties.Template = JObject.Parse(FileUtilities.DataStore.ReadFileAsText(parameters.TemplateFile)); } else { deployment.Properties.Template = JObject.Parse(JsonConvert.SerializeObject(parameters.TemplateObject)); } } if (Uri.IsWellFormedUriString(parameters.ParameterUri, UriKind.Absolute)) { deployment.Properties.ParametersLink = new ParametersLink { Uri = parameters.ParameterUri }; } else { string templateParams = GetDeploymentParameters(parameters.TemplateParameterObject); deployment.Properties.Parameters = string.IsNullOrEmpty(templateParams) ? null : JObject.Parse(templateParams); } deployment.Location = parameters.Location; deployment.Properties.OnErrorDeployment = parameters.OnErrorDeployment; return(deployment); }
/// <summary> /// Validates a given deployment. /// </summary> /// <param name="parameters">The deployment create options</param> /// <param name="deploymentMode">The deployment mode</param> /// <returns>The validation errors if there's any, or empty list otherwise.</returns> public virtual List <PSResourceManagerError> ValidateDeployment(PSDeploymentCmdletParameters parameters, DeploymentMode deploymentMode) { Deployment deployment = CreateBasicDeployment(parameters, deploymentMode, null); TemplateValidationInfo validationInfo = CheckBasicDeploymentErrors(parameters.ResourceGroupName, Guid.NewGuid().ToString(), deployment); if (validationInfo.Errors.Count == 0) { WriteVerbose(ProjectResources.TemplateValid); } return(validationInfo.Errors.Select(e => e.ToPSResourceManagerError()).ToList()); }
public override void ExecuteCmdlet() { var parameters = new PSDeploymentCmdletParameters() { Location = Location, TemplateFile = TemplateUri ?? this.TryResolvePath(TemplateFile), TemplateParameterObject = GetTemplateParameterObject(TemplateParameterObject), ParameterUri = TemplateParameterUri }; WriteObject(ResourceManagerSdkClient.ValidateDeployment(parameters, DeploymentMode.Incremental)); }
public override void ExecuteCmdlet() { PSDeploymentCmdletParameters parameters = new PSDeploymentCmdletParameters() { ResourceGroupName = ResourceGroupName, TemplateFile = TemplateUri ?? this.TryResolvePath(TemplateFile), TemplateParameterObject = GetTemplateParameterObject(TemplateParameterObject), ParameterUri = TemplateParameterUri }; WriteObject(ResourceManagerSdkClient.ValidateDeployment(parameters, Mode)); }
public override void ExecuteCmdlet() { var parameters = new PSDeploymentCmdletParameters() { ScopeType = DeploymentScopeType.Tenant, Location = this.Location, TemplateFile = this.TemplateUri ?? this.TryResolvePath(this.TemplateFile), TemplateObject = this.TemplateObject, TemplateParameterObject = this.GetTemplateParameterObject(this.TemplateParameterObject), ParameterUri = this.TemplateParameterUri }; WriteObject(ResourceManagerSdkClient.ValidateDeployment(parameters)); }
protected override void OnProcessRecord() { var parameters = new PSDeploymentCmdletParameters() { ScopeType = DeploymentScopeType.Subscription, Location = Location, TemplateFile = TemplateUri ?? this.TryResolvePath(TemplateFile), TemplateObject = TemplateObject, TemplateParameterObject = GetTemplateParameterObject(TemplateParameterObject), ParameterUri = TemplateParameterUri }; WriteObject(ResourceManagerSdkClient.ValidateDeployment(parameters)); }
private string GenerateDeploymentName(PSDeploymentCmdletParameters 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()); } }
protected override void OnProcessRecord() { var parameters = new PSDeploymentCmdletParameters() { ScopeType = DeploymentScopeType.ManagementGroup, ManagementGroupId = this.ManagementGroupId, Location = this.Location, TemplateFile = this.TemplateUri ?? this.TryResolvePath(this.TemplateFile), TemplateObject = this.TemplateObject, TemplateParameterObject = this.GetTemplateParameterObject(this.TemplateParameterObject), ParameterUri = this.TemplateParameterUri }; WriteObject(ResourceManagerSdkClient.ValidateDeployment(parameters)); }
public override void ExecuteCmdlet() { var parameters = new PSDeploymentCmdletParameters() { Location = Location, DeploymentName = Name, DeploymentMode = DeploymentMode.Incremental, TemplateFile = TemplateUri ?? this.TryResolvePath(TemplateFile), TemplateParameterObject = GetTemplateParameterObject(TemplateParameterObject), ParameterUri = TemplateParameterUri, DeploymentDebugLogLevel = GetDeploymentDebugLogLevel(DeploymentDebugLogLevel) }; if (!string.IsNullOrEmpty(parameters.DeploymentDebugLogLevel)) { WriteWarning(ProjectResources.WarnOnDeploymentDebugSetting); } WriteObject(ResourceManagerSdkClient.ExecuteDeploymentAtSubscriptionScope(parameters)); }
public override void ExecuteCmdlet() { this.ConfirmAction( this.Force, string.Format(ProjectResources.ConfirmOnCompleteDeploymentMode, this.ResourceGroupName), ProjectResources.CreateDeployment, ResourceGroupName, () => { if (RollbackToLastDeployment && !string.IsNullOrEmpty(RollBackDeploymentName)) { WriteExceptionError(new ArgumentException(ProjectResources.InvalidRollbackParameters)); } var parameters = new PSDeploymentCmdletParameters() { ScopeType = DeploymentScopeType.ResourceGroup, ResourceGroupName = ResourceGroupName, DeploymentName = Name, DeploymentMode = Mode, TemplateFile = TemplateUri ?? this.TryResolvePath(TemplateFile), TemplateObject = TemplateObject, TemplateParameterObject = GetTemplateParameterObject(TemplateParameterObject), ParameterUri = TemplateParameterUri, DeploymentDebugLogLevel = GetDeploymentDebugLogLevel(DeploymentDebugLogLevel), OnErrorDeployment = RollbackToLastDeployment || !string.IsNullOrEmpty(RollBackDeploymentName) ? new OnErrorDeployment { Type = RollbackToLastDeployment ? OnErrorDeploymentType.LastSuccessful : OnErrorDeploymentType.SpecificDeployment, DeploymentName = RollbackToLastDeployment ? null : RollBackDeploymentName } : null }; if (!string.IsNullOrEmpty(parameters.DeploymentDebugLogLevel)) { WriteWarning(ProjectResources.WarnOnDeploymentDebugSetting); } WriteObject(ResourceManagerSdkClient.ExecuteResourceGroupDeployment(parameters)); }, () => this.Mode == DeploymentMode.Complete); }
public void ValidatesPSResourceGroupDeploymentWithUserTemplate() { PSDeploymentCmdletParameters expectedParameters = new PSDeploymentCmdletParameters() { TemplateFile = templateFile }; PSDeploymentCmdletParameters actualParameters = new PSDeploymentCmdletParameters(); List <PSResourceManagerError> expected = new List <PSResourceManagerError>() { new PSResourceManagerError() { Code = "202", Message = "bad input", }, new PSResourceManagerError() { Code = "203", Message = "bad input 2", }, new PSResourceManagerError() { Code = "203", Message = "bad input 3", } }; resourcesClientMock.Setup(f => f.ValidateDeployment( It.IsAny <PSDeploymentCmdletParameters>(), DeploymentMode.Incremental)) .Returns(expected) .Callback((PSDeploymentCmdletParameters p, DeploymentMode m) => { actualParameters = p; m = DeploymentMode.Incremental; }); cmdlet.ResourceGroupName = resourceGroupName; cmdlet.TemplateFile = expectedParameters.TemplateFile; cmdlet.ExecuteCmdlet(); Assert.Equal(expectedParameters.TemplateFile, actualParameters.TemplateFile); Assert.NotNull(actualParameters.TemplateParameterObject); commandRuntimeMock.Verify(f => f.WriteObject(expected), Times.Once()); }
protected override void OnProcessRecord() { var parameters = new PSDeploymentCmdletParameters() { ScopeType = DeploymentScopeType.Tenant, Location = this.Location, DeploymentName = this.Name, DeploymentMode = DeploymentMode.Incremental, TemplateFile = TemplateUri ?? this.TryResolvePath(TemplateFile), TemplateObject = TemplateObject, TemplateParameterObject = GetTemplateParameterObject(TemplateParameterObject), ParameterUri = TemplateParameterUri, DeploymentDebugLogLevel = GetDeploymentDebugLogLevel(DeploymentDebugLogLevel) }; if (!string.IsNullOrEmpty(parameters.DeploymentDebugLogLevel)) { WriteWarning(ProjectResources.WarnOnDeploymentDebugSetting); } WriteObject(ResourceManagerSdkClient.ExecuteDeployment(parameters)); }
public void CreatesNewPSResourceGroupDeploymentWithUserTemplate() { PSDeploymentCmdletParameters expectedParameters = new PSDeploymentCmdletParameters() { TemplateFile = templateFile, DeploymentName = deploymentName, }; PSDeploymentCmdletParameters actualParameters = new PSDeploymentCmdletParameters(); 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 <PSDeploymentCmdletParameters>())) .Returns(expected) .Callback((PSDeploymentCmdletParameters 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()); }
public void CreatesNewPSResourceGroupDeploymentWithUserTemplateEmptyRollback() { PSDeploymentCmdletParameters expectedParameters = new PSDeploymentCmdletParameters() { TemplateFile = templateFile, DeploymentName = deploymentName, Tags = new Dictionary <string, string>(this.deploymentTags), OnErrorDeployment = new OnErrorDeployment { Type = OnErrorDeploymentType.LastSuccessful, } }; PSDeploymentCmdletParameters actualParameters = new PSDeploymentCmdletParameters(); 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), OnErrorDeployment = new OnErrorDeploymentExtended { Type = OnErrorDeploymentType.LastSuccessful, } }; resourcesClientMock.Setup(f => f.ExecuteResourceGroupDeployment( It.IsAny <PSDeploymentCmdletParameters>())) .Returns(expected) .Callback((PSDeploymentCmdletParameters p) => { actualParameters = p; }); cmdlet.ResourceGroupName = resourceGroupName; cmdlet.Name = expectedParameters.DeploymentName; cmdlet.TemplateFile = expectedParameters.TemplateFile; cmdlet.RollbackToLastDeployment = true; cmdlet.Tag = new Hashtable(this.deploymentTags); cmdlet.ExecuteCmdlet(); actualParameters.DeploymentName.Should().Equals(expectedParameters.DeploymentName); actualParameters.TemplateFile.Should().Equals(expectedParameters.TemplateFile); actualParameters.TemplateParameterObject.Should().NotBeNull(); actualParameters.OnErrorDeployment.Should().NotBeNull(); actualParameters.OnErrorDeployment.Type.Should().Equals(expectedParameters.OnErrorDeployment.Type); actualParameters.OnErrorDeployment.DeploymentName.Should().Equals(expectedParameters.OnErrorDeployment.DeploymentName); actualParameters.Tags.Should().NotBeNull(); var differenceTags = actualParameters.Tags .Where(entry => expectedParameters.Tags[entry.Key] != entry.Value); differenceTags.Should().BeEmpty(); commandRuntimeMock.Verify(f => f.WriteObject(expected), Times.Once()); }