/// <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)); }
/// <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()); }