Exemple #1
0
        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);
        }
        /// <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));
        }
 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());
     }
 }
        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());
        }