Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixed issues with TemplateSpec deployments in New-AzTenantDeployment … #14179

Merged
merged 4 commits into from
Feb 13, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ public class NewAzureManagementGroupDeploymentCmdlet : DeploymentCreateCmdlet
QueryString = this.QueryString,
TemplateFile = this.TemplateUri ?? this.TryResolvePath(this.TemplateFile),
TemplateObject = this.TemplateObject,
TemplateSpecId = TemplateSpecId,
TemplateParameterObject = this.GetTemplateParameterObject(this.TemplateParameterObject),
ParameterUri = this.TemplateParameterUri,
DeploymentDebugLogLevel = this.GetDeploymentDebugLogLevel(this.DeploymentDebugLogLevel),
Expand All @@ -94,6 +95,7 @@ public class NewAzureManagementGroupDeploymentCmdlet : DeploymentCreateCmdlet
deploymentName: this.Name,
location: this.Location,
mode: DeploymentMode.Incremental,
templateSpecId: TemplateSpecId,
queryString: this.QueryString,
templateUri: this.TemplateUri ?? this.TryResolvePath(this.TemplateFile),
templateObject: this.TemplateObject,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ public class NewAzureTenantDeploymentCmdlet: DeploymentCreateCmdlet
QueryString = this.QueryString,
TemplateFile = this.TemplateUri ?? this.TryResolvePath(this.TemplateFile),
TemplateObject = this.TemplateObject,
TemplateSpecId = this.TemplateSpecId,
TemplateParameterObject = this.GetTemplateParameterObject(this.TemplateParameterObject),
ParameterUri = this.TemplateParameterUri,
DeploymentDebugLogLevel = GetDeploymentDebugLogLevel(this.DeploymentDebugLogLevel),
Expand All @@ -91,6 +92,7 @@ public class NewAzureTenantDeploymentCmdlet: DeploymentCreateCmdlet
queryString: this.QueryString,
templateUri : TemplateUri ?? this.TryResolvePath(TemplateFile),
templateObject : this.TemplateObject,
templateSpecId: TemplateSpecId,
templateParametersUri : this.TemplateParameterUri,
templateParametersObject : GetTemplateParameterObject(this.TemplateParameterObject),
resultFormat : this.WhatIfResultFormat,
Expand Down
32 changes: 32 additions & 0 deletions src/Resources/Resources.Test/ScenarioTests/DeploymentTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,38 @@ public void TestNewDeploymentTemplateSpec()
TestRunner.RunTestScript("Test-NewDeploymentFromTemplateSpec");
}

[Fact]
[Trait(Category.AcceptanceType, Category.CheckIn)]
[Trait(Category.RunType, Category.CoreOnly)]
public void TestNewSubscriptionDeploymentTemplateSpec()
{
TestRunner.RunTestScript("Test-NewSubscriptionDeploymentFromTemplateSpec");
}

[Fact]
[Trait(Category.AcceptanceType, Category.CheckIn)]
[Trait(Category.RunType, Category.CoreOnly)]
public void TestNewFailedSubscriptionDeploymentTemplateSpec()
{
TestRunner.RunTestScript("Test-NewFailedSubscriptionDeploymentFromTemplateSpec");
}

[Fact]
[Trait(Category.AcceptanceType, Category.CheckIn)]
[Trait(Category.RunType, Category.CoreOnly)]
public void TestNewMGDeploymentTemplateSpec()
{
TestRunner.RunTestScript("Test-NewMGDeploymentFromTemplateSpec");
}

[Fact]
[Trait(Category.AcceptanceType, Category.CheckIn)]
[Trait(Category.RunType, Category.CoreOnly)]
public void TestNewTenantDeploymentTemplateSpec()
{
TestRunner.RunTestScript("Test-NewTenantDeploymentFromTemplateSpec");
}

[Fact]
[Trait(Category.AcceptanceType, Category.CheckIn)]
public void TestTestResourceGroupDeploymentErrors()
Expand Down
149 changes: 149 additions & 0 deletions src/Resources/Resources.Test/ScenarioTests/DeploymentTests.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,155 @@ function Test-NewDeploymentFromTemplateSpec
}
}

function Test-NewSubscriptionDeploymentFromTemplateSpec
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd also add a negative test case where we expect a deployment to fail with given TS.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok. I will add them.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ideally, the negative test case would look for non existing TS or TS version. However currently this scenario doesn't produce a meaningful error message. There is a task in the board to fix that, once it's fixed, Gokul will update the test case.

{
# Setup
$rgname = Get-ResourceGroupName
$rname = Get-ResourceName
$rglocation = "West US 2"
$subId = (Get-AzContext).Subscription.SubscriptionId

try
{
# Prepare our RG and basic template spec:

New-AzResourceGroup -Name $rgname -Location $rglocation

$sampleTemplateJson = Get-Content -Raw -Path "subscription_level_template.json"
$basicCreatedTemplateSpec = New-AzTemplateSpec -ResourceGroupName $rgname -Name $rname -Location $rgLocation -Version "v1" -TemplateJson $sampleTemplateJson

$resourceId = $basicCreatedTemplateSpec.Id + "/versions/v1"

#Create deployment
$deployment = New-AzSubscriptionDeployment -Name $rname -TemplateSpecId $resourceId -TemplateParameterFile "subscription_level_parameters.json" -Location $rglocation

# Assert
Assert-AreEqual Succeeded $deployment.ProvisioningState

}

finally
{
# Cleanup
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cleanup [](start = 8, length = 9)

Cleanup should delete the deployment at the subscription level.

Clean-DeploymentAtSubscription $deployment
Clean-ResourceGroup $rgname
}
}

function Test-NewFailedSubscriptionDeploymentFromTemplateSpec
{
# Setup
$rgname = Get-ResourceGroupName
$rname = Get-ResourceName
$rglocation = "West US 2"
$subId = (Get-AzContext).Subscription.SubscriptionId

try
{
# Prepare our RG and basic template spec:

New-AzResourceGroup -Name $rgname -Location $rglocation

#Use template that will fail at subscription scope
$sampleTemplateJson = Get-Content -Raw -Path "subscription_level_template.json"
$basicCreatedTemplateSpec = New-AzTemplateSpec -ResourceGroupName $rgname -Name $rname -Location $rgLocation -Version "v1" -TemplateJson $sampleTemplateJson

$resourceId = $basicCreatedTemplateSpec.Id + "/versions/v1"

#Create deployment
try {
$deployment = New-AzSubscriptionDeployment -Name $rname -TemplateSpecId $resourceId -TemplateParameterFile "subscription_level_parameters.json" -Location $rglocation
}
Catch {
Assert-True { $Error[0].Contains("ResourceNotFound")}
}

}

finally
{
# Cleanup
Clean-DeploymentAtSubscription $deployment
Clean-ResourceGroup $rgname
}
}

function Test-NewMGDeploymentFromTemplateSpec
{
# Setup
$rgname = Get-ResourceGroupName
$rname = Get-ResourceName
$managementGroupId = Get-ResourceName
$rglocation = "West US 2"
$subId = (Get-AzContext).Subscription.SubscriptionId

try
{
#Create New MG
New-AzManagementGroup -GroupName $managementGroupId -ParentId "/providers/Microsoft.Management/managementGroups/AzDeploymentsPSTest"

# Prepare our RG and basic template spec:

New-AzResourceGroup -Name $rgname -Location $rglocation

$sampleTemplateJson = Get-Content -Raw -Path "simpleTemplate.json"
$basicCreatedTemplateSpec = New-AzTemplateSpec -ResourceGroupName $rgname -Name $rname -Location $rgLocation -Version "v1" -TemplateJson $sampleTemplateJson

$resourceId = $basicCreatedTemplateSpec.Id + "/versions/v1"

#Create deployment
$deployment = New-AzManagementGroupDeployment -ManagementGroupId $managementGroupId -Name $rname -TemplateSpecId $resourceId -TemplateParameterFile "simpleTemplateParams.json" -Location $rglocation

# Assert
Assert-AreEqual Succeeded $deployment.ProvisioningState

}

finally
{
# Cleanup
Copy link
Contributor

@filizt filizt Feb 10, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cleanup [](start = 7, length = 10)

Same as above. Cleanup should also clean the MG deployment.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missed these. I will add them

Remove-AzManagementGroupDeployment -ManagementGroup $managementGroupId -Name $rname
Clean-ResourceGroup $rgname
Remove-AzManagementGroup -GroupName $managementGroupId
}
}

function Test-NewTenantDeploymentFromTemplateSpec
{
# Setup
$rgname = Get-ResourceGroupName
$rname = Get-ResourceName
$rglocation = "West US 2"
$subId = (Get-AzContext).Subscription.SubscriptionId

try
{
# Prepare our RG and basic template spec:

New-AzResourceGroup -Name $rgname -Location $rglocation

$sampleTemplateJson = Get-Content -Raw -Path "simpleTemplate.json"
$basicCreatedTemplateSpec = New-AzTemplateSpec -ResourceGroupName $rgname -Name $rname -Location $rgLocation -Version "v1" -TemplateJson $sampleTemplateJson

$resourceId = $basicCreatedTemplateSpec.Id + "/versions/v1"

#Create deployment
$deployment = New-AzTenantDeployment -Name $rname -TemplateSpecId $resourceId -TemplateParameterFile "simpleTemplateParams.json" -Location $rglocation

# Assert
Assert-AreEqual Succeeded $deployment.ProvisioningState

}

finally
{
# Cleanup
Clean-ResourceGroup $rgname
Remove-AzTenantDeployment -Name $rname
Clean-DeploymentAtTenant $rname
}
}

function Test-NewDeploymentFromTemplateObject
{
# Setup
Expand Down
Loading