public async Task CreateDeploymentWithStringTemplateAndParameters() { var templateString = File.ReadAllText(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "ScenarioTests", "simple-storage-account.json")); var parameterString = File.ReadAllText(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "ScenarioTests", "simple-storage-account-parameters.json")); JsonElement jsonParameter = JsonSerializer.Deserialize <JsonElement>(parameterString); if (!jsonParameter.TryGetProperty("parameters", out JsonElement parameter)) { parameter = jsonParameter; } var parameters = new Deployment ( new DeploymentProperties(DeploymentMode.Incremental) { Template = templateString, ParametersJson = parameter } ); string groupName = Recording.GenerateAssetName("csmrg"); string deploymentName = Recording.GenerateAssetName("csmd"); await ResourceGroupsOperations.CreateOrUpdateAsync(groupName, new ResourceGroup(LiveDeploymentTests.LocationWestEurope)); var rawResult = await DeploymentsOperations.StartCreateOrUpdateAsync(groupName, deploymentName, parameters); await WaitForCompletionAsync(rawResult); var deployment = (await DeploymentsOperations.GetAsync(groupName, deploymentName)).Value; Assert.AreEqual("Succeeded", deployment.Properties.ProvisioningState); }
public async Task CreateLargeWebDeploymentTemplateWorks() { string resourceName = Recording.GenerateAssetName("csmr"); string groupName = Recording.GenerateAssetName("csmrg"); string deploymentName = Recording.GenerateAssetName("csmd"); var parameters = new Deployment ( new DeploymentProperties(DeploymentMode.Incremental) { TemplateLink = new TemplateLink(GoodWebsiteTemplateUri), Parameters = ("{'repoURL': {'value': 'https://github.com/devigned/az-roadshow-oss.git'}, 'siteName': {'value': '" + resourceName + "'}, 'location': {'value': 'westus'}, 'sku': {'value': 'F1'}}").Replace("'", "\"") } ); await ResourceGroupsOperations.CreateOrUpdateAsync(groupName, new ResourceGroup(LiveDeploymentTests.LocationSouthCentralUS)); await DeploymentsOperations.StartCreateOrUpdateAsync(groupName, deploymentName, parameters); // Wait until deployment completes if (Mode == RecordedTestMode.Record) { Thread.Sleep(30 * 1000); } var operations = await DeploymentOperations.ListAsync(groupName, deploymentName, null).ToEnumerableAsync(); Assert.True(operations.Any()); }
public async Task CreateDeploymentAndValidateProperties() { string resourceName = Recording.GenerateAssetName("csmr"); var parameters = new Deployment ( new DeploymentProperties(DeploymentMode.Incremental) { TemplateLink = new TemplateLink(GoodWebsiteTemplateUri), Parameters = (@"{'repoURL': {'value': 'https://github.com/devigned/az-roadshow-oss.git'}, 'siteName': {'value': '" + resourceName + "'}, 'location': {'value': 'westus'}, 'sku': {'value': 'F1'}}").Replace("'", "\"") } ) { Tags = new Dictionary <string, string> { { "tagKey1", "tagValue1" } } }; string groupName = Recording.GenerateAssetName("csmrg"); string deploymentName = Recording.GenerateAssetName("csmd"); await ResourceGroupsOperations.CreateOrUpdateAsync(groupName, new ResourceGroup(LiveDeploymentTests.LocationWestEurope)); var rawResult = await DeploymentsOperations.StartCreateOrUpdateAsync(groupName, deploymentName, parameters); var deploymentCreateResult = (await WaitForCompletionAsync(rawResult)).Value; Assert.NotNull(deploymentCreateResult.Id); Assert.AreEqual(deploymentName, deploymentCreateResult.Name); if (Mode == RecordedTestMode.Record) { Thread.Sleep(1 * 1000); } var deploymentListResult = await DeploymentsOperations.ListByResourceGroupAsync(groupName, null).ToEnumerableAsync(); var deploymentGetResult = (await DeploymentsOperations.GetAsync(groupName, deploymentName)).Value; Assert.IsNotEmpty(deploymentListResult); Assert.AreEqual(deploymentName, deploymentGetResult.Name); Assert.AreEqual(deploymentName, deploymentListResult.First().Name); Assert.AreEqual(GoodWebsiteTemplateUri, deploymentGetResult.Properties.TemplateLink.Uri); Assert.AreEqual(GoodWebsiteTemplateUri, deploymentListResult.First().Properties.TemplateLink.Uri); Assert.NotNull(deploymentGetResult.Properties.ProvisioningState); Assert.NotNull(deploymentListResult.First().Properties.ProvisioningState); Assert.NotNull(deploymentGetResult.Properties.CorrelationId); Assert.NotNull(deploymentListResult.First().Properties.CorrelationId); Assert.NotNull(deploymentListResult.First().Tags); Assert.True(deploymentListResult.First().Tags.ContainsKey("tagKey1")); }
public async Task WhatIf_DeleteResources_ReturnsDeleteChanges() { // Arrange. JsonElement jsonParameter = JsonSerializer.Deserialize <JsonElement>(ResourceGroupTemplateParameters); if (!jsonParameter.TryGetProperty("parameters", out JsonElement parameter)) { parameter = jsonParameter; } var deployment = new Deployment(new DeploymentProperties(DeploymentMode.Incremental) { Template = ResourceGroupTemplate, ParametersJson = parameter }); var deploymentWhatIf = new DeploymentWhatIf( new DeploymentWhatIfProperties(DeploymentMode.Complete) { Template = BlankTemplate, WhatIfSettings = new DeploymentWhatIfSettings() { ResultFormat = WhatIfResultFormat.ResourceIdOnly } } ); string resourceGroupName = NewResourceGroupName(); var resourcegroup = (await ResourceGroupsOperations.CreateOrUpdateAsync(resourceGroupName, ResourceGroup)).Value; var deploy = await DeploymentsOperations.StartCreateOrUpdateAsync(resourceGroupName, NewDeploymentName(), deployment); await WaitForCompletionAsync(deploy); // Act. var rawResult = await DeploymentsOperations.StartWhatIfAsync(resourceGroupName, NewDeploymentName(), deploymentWhatIf); var result = (await WaitForCompletionAsync(rawResult)).Value; // Assert. Assert.AreEqual("Succeeded", result.Status); Assert.NotNull(result.Changes); Assert.IsNotEmpty(result.Changes); foreach (var change in result.Changes) { Assert.AreEqual(ChangeType.Delete, change.ChangeType); } }
public async Task WhatIf_ModifyResources_ReturnsModifyChanges() { // Arrange. JsonElement jsonParameter = JsonSerializer.Deserialize <JsonElement>(ResourceGroupTemplateParameters); if (!jsonParameter.TryGetProperty("parameters", out JsonElement parameter)) { parameter = jsonParameter; } var deployment = new Deployment(new DeploymentProperties(DeploymentMode.Incremental) { Template = ResourceGroupTemplate, ParametersJson = parameter }); // Modify account type: Standard_LRS => Standard_GRS. var deploymentWhatIf = new DeploymentWhatIf( new DeploymentWhatIfProperties(DeploymentMode.Incremental) { Template = ResourceGroupTemplateGRS, ParametersJson = parameter, WhatIfSettings = new DeploymentWhatIfSettings() { ResultFormat = WhatIfResultFormat.FullResourcePayloads } } ); string resourceGroupName = NewResourceGroupName(); var resourcegroup = (await ResourceGroupsOperations.CreateOrUpdateAsync(resourceGroupName, ResourceGroup)).Value; var deploy = await DeploymentsOperations.StartCreateOrUpdateAsync(resourceGroupName, NewDeploymentName(), deployment); await WaitForCompletionAsync(deploy); // Act. var rawResult = await DeploymentsOperations.StartWhatIfAsync(resourceGroupName, NewDeploymentName(), deploymentWhatIf); var result = (await WaitForCompletionAsync(rawResult)).Value; // Assert. Assert.AreEqual("Succeeded", result.Status); Assert.NotNull(result.Changes); Assert.IsNotEmpty(result.Changes); WhatIfChange storageAccountChange = result.Changes.FirstOrDefault(change => change.ResourceId.EndsWith("Microsoft.Storage/storageAccounts/ramokaSATestAnother1")); Assert.NotNull(storageAccountChange); Assert.AreEqual(ChangeType.Modify, storageAccountChange.ChangeType); Assert.NotNull(storageAccountChange.Delta); Assert.IsNotEmpty(storageAccountChange.Delta); WhatIfPropertyChange accountTypeChange = storageAccountChange.Delta .FirstOrDefault(propertyChange => propertyChange.Path.Equals("properties.accountType")); Assert.NotNull(accountTypeChange); Assert.AreEqual("Standard_LRS", accountTypeChange.Before); Assert.AreEqual("Standard_GRS", accountTypeChange.After); }