Skip to content

Commit 3763956

Browse files
author
dragonfly91
committed
1. Added ManagedResourceGroupName and ManagedResourceName to represent the RG and R names of the resources (VMs for ex) managed by Azure Backup.
2. Made some fixes in Vault Creds cmdlet to make it work with partner teams. 3. Updated all tests to work with the $vault and code refactoring changes introduced by PiyushKa.
1 parent 2abc63f commit 3763956

File tree

11 files changed

+72
-44
lines changed

11 files changed

+72
-44
lines changed

src/ResourceManager/AzureBackup/Commands.AzureBackup.Test/ScenarioTests/AzureBackupContainerTests.ps1

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
$ResourceGroupName = "backuprg"
1616
$ResourceName = "backuprn"
1717
$Location = "westus"
18-
$ContainerResourceGroupName = "powershellbvt"
19-
$ContainerResourceName = "powershellbvt"
18+
$ManagedResourceGroupName = "powershellbvt"
19+
$ManagedResourceName = "powershellbvt"
2020

2121
<#
2222
.SYNOPSIS
@@ -32,10 +32,10 @@ function Test-GetAzureBackupContainerWithoutFilterReturnsNonZeroContainers
3232
function Test-GetAzureBackupContainerWithUniqueFilterReturnsOneContainer
3333
{
3434
$vault = Get-AzureBackupVault -Name $ResourceName;
35-
$container = Get-AzureBackupContainer -vault $vault -ContainerResourceGroupName $ContainerResourceGroupName -ContainerResourceName $ContainerResourceName
35+
$container = Get-AzureBackupContainer -vault $vault -ManagedResourceGroupName $ManagedResourceGroupName -ManagedResourceName $ManagedResourceName
3636
Assert-NotNull $container 'Container should not be null';
37-
Assert-AreEqual $container.ResourceName $ContainerResourceName -CaseSensitive 'Returned container resource name (a.k.a friendly name) does not match the test VM resource name';
38-
Assert-AreEqual $container.ResourceGroupName $ContainerResourceGroupName -CaseSensitive 'Returned container resource group name (a.k.a parent friendly name) does not match the test VM resource group name';
37+
Assert-AreEqual $container.ManagedResourceName $ManagedResourceName -CaseSensitive 'Returned container resource name (a.k.a friendly name) does not match the test VM resource name';
38+
Assert-AreEqual $container.ManagedResourceGroupName $ManagedResourceGroupName -CaseSensitive 'Returned container resource group name (a.k.a parent friendly name) does not match the test VM resource group name';
3939
}
4040

4141
<#
@@ -44,15 +44,17 @@ Tests to register the container
4444
#>
4545
function Test-RegisterAzureBackupContainer
4646
{
47-
$jobId = Register-AzureBackupContainer -ResourceGroupName $ResourceGroupName -ResourceName $ResourceName -location $Location -Name $ContainerResourceName -ServiceName $ContainerResourceGroupName
47+
$vault = Get-AzureBackupVault -Name $ResourceName;
48+
$jobId = Register-AzureBackupContainer -vault $vault -Name $ManagedResourceName -ServiceName $ManagedResourceGroupName
4849

4950
Assert-NotNull $jobId 'JobID should not be null';
5051
}
5152

5253
function Test-UnregisterAzureBackupContainer
5354
{
54-
$container = Get-AzureBackupContainer -ResourceGroupName $ResourceGroupName -ResourceName $ResourceName -location $Location -ContainerResourceName $ContainerResourceName -ContainerResourceGroupName $ContainerResourceGroupName
55-
$jobId = Unregister-AzureBackupContainer -ResourceGroupName $ResourceGroupName -ResourceName $ResourceName -location $Location -AzureBackupContainer $container
55+
$vault = Get-AzureBackupVault -Name $ResourceName;
56+
$container = Get-AzureBackupContainer -vault $vault -ManagedResourceName $ManagedResourceName -ManagedResourceGroupName $ManagedResourceGroupName
57+
$jobId = Unregister-AzureBackupContainer -vault $vault -AzureBackupContainer $container
5658

5759
Assert-NotNull $jobId 'JobID should not be null';
5860
}

src/ResourceManager/AzureBackup/Commands.AzureBackup.Test/ScenarioTests/AzureBackupItemTestCases.ps1

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ $POName = "iaasvmcontainer;dev01testing;dev01testing"
1212

1313
function Test-GetAzureBackupItemTests
1414
{
15-
$azureBackUpContainer = New-Object Microsoft.Azure.Commands.AzureBackup.Cmdlets.AzureBackupContainer
15+
$azureBackUpContainer = New-Object Microsoft.Azure.Commands.AzureBackup.Models.AzureBackupContainer
1616
$azureBackUpContainer.ResourceGroupName = $ResourceGroupName
1717
$azureBackUpContainer.ResourceName = $ResourceName
1818
$azureBackUpContainer.Location = $Location
@@ -37,7 +37,7 @@ function Test-GetAzureBackupItemTests
3737

3838
function Test-EnableAzureBackupProtection
3939
{
40-
$policy = New-Object Microsoft.Azure.Commands.AzureBackup.Cmdlets.AzureBackupProtectionPolicy
40+
$policy = New-Object Microsoft.Azure.Commands.AzureBackup.Models.AzureBackupProtectionPolicy
4141
$policy.InstanceId = $PolicyId
4242
$policy.Name = $PolicyName
4343
$policy.ResourceGroupName = $ResourceGroupName
@@ -47,7 +47,7 @@ function Test-EnableAzureBackupProtection
4747
$policy.RetentionType = "1"
4848
$policy.ScheduleRunTimes = "2015-06-13T20:30:00"
4949

50-
$azureBackUpItem = New-Object Microsoft.Azure.Commands.AzureBackup.Cmdlets.AzureBackupItem
50+
$azureBackUpItem = New-Object Microsoft.Azure.Commands.AzureBackup.Models.AzureBackupItem
5151
$azureBackUpItem.ResourceGroupName = $ResourceGroupName
5252
$azureBackUpItem.ResourceName = $ResourceName
5353
$azureBackUpItem.Location = $Location
@@ -62,7 +62,7 @@ function Test-EnableAzureBackupProtection
6262

6363
function Test-DisableAzureBackupProtection
6464
{
65-
$azureBackUpItem = New-Object Microsoft.Azure.Commands.AzureBackup.Cmdlets.AzureBackupItem
65+
$azureBackUpItem = New-Object Microsoft.Azure.Commands.AzureBackup.Models.AzureBackupItem
6666
$azureBackUpItem.ResourceGroupName = $ResourceGroupName
6767
$azureBackUpItem.ResourceName = $ResourceName
6868
$azureBackUpItem.Location = $Location

src/ResourceManager/AzureBackup/Commands.AzureBackup.Test/ScenarioTests/AzureBackupJobTests.ps1

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,10 @@ $POName = "iaasvmcontainer;dev01testing;dev01testing"
1212

1313
function Test-GetAzureBackupJob
1414
{
15+
$vault = Get-AzureBackupVault -Name $ResourceName;
1516
$OneMonthBack = Get-Date;
1617
$OneMonthBack = $OneMonthBack.AddDays(-30);
17-
$jobs = Get-AzureBackupJob -ResourceGroupName $ResourceGroupName -ResourceName $ResourceName -Location $Location -From $OneMonthBack -Debug
18+
$jobs = Get-AzureBackupJob -Vault $vault -From $OneMonthBack
1819
Assert-NotNull $jobs 'Jobs list should not be null'
1920
foreach($job in $jobs)
2021
{
@@ -25,7 +26,7 @@ function Test-GetAzureBackupJob
2526
Assert-NotNull $jobs.Status 'Status should not be null';
2627
Assert-NotNull $jobs.Operation 'Operation should not be null';
2728

28-
$jobDetails = Get-AzureBackupJobDetails -ResourceGroupName $ResourceGroupName -ResourceName $ResourceName -Location $Location -Job $job
29+
$jobDetails = Get-AzureBackupJobDetails -Job $job
2930
Assert-NotNull $jobDetails.InstanceId 'JobID should not be null';
3031
Assert-NotNull $jobDetails.StartTime 'StartTime should not be null';
3132
Assert-NotNull $jobDetails.WorkloadType 'WorkloadType should not be null';
@@ -40,13 +41,14 @@ function Test-GetAzureBackupJob
4041

4142
function Test-StopAzureBackupJob
4243
{
44+
$vault = Get-AzureBackupVault -Name $ResourceName;
4345
$OneMonthBack = Get-Date;
4446
$OneMonthBack = $OneMonthBack.AddDays(-30);
4547
#TODO
4648
#Call trigger backup and get an inprogress job
47-
$jobsList = Get-AzureBackupJob -ResourceGroupName $ResourceGroupName -ResourceName $ResourceName -Location $Location -From $OneMonthBack #-Operation 'Backup' -Status 'InProgress'
49+
$jobsList = Get-AzureBackupJob -Vault $vault -From $OneMonthBack #-Operation 'Backup' -Status 'InProgress'
4850

49-
Stop-AzureBackupJob -ResourceGroupName $ResourceGroupName -ResourceName $ResourceName -Location $Location -Job $jobsList[0];
50-
$jobDetails = Get-AzureBackupJobDetails -ResourceGroupName $ResourceGroupName -ResourceName $ResourceName -Location $Location -Job $jobsList[0];
51+
Stop-AzureBackupJob -Job $jobsList[0];
52+
$jobDetails = Get-AzureBackupJobDetails -Job $jobsList[0];
5153
#Assert-AreEqual 'Cancelling' $jobDetails.Status
5254
}

src/ResourceManager/AzureBackup/Commands.AzureBackup.Test/ScenarioTests/AzureBackupPolicyTests.ps1

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ Tests creating new resource group and a simple resource.
3333
#>
3434
function Test-GetAzureBackupProtectionPolicyTests
3535
{
36-
$protectionPolicies = Get-AzureBackupProtectionPolicy -ResourceGroupName $ResourceGroupName -ResourceName $ResourceName -Location $Location
36+
$vault = Get-AzureBackupVault -Name $ResourceName;
37+
$protectionPolicies = Get-AzureBackupProtectionPolicy -vault $vault
3738
Assert-NotNull $protectionPolicies 'Protection Policies should not be null'
3839
foreach($protectionPolicy in $protectionPolicies)
3940
{
@@ -51,7 +52,8 @@ function Test-GetAzureBackupProtectionPolicyTests
5152

5253
function Test-GetAzureBackupProtectionPolicyByNameTests
5354
{
54-
$protectionPolicy = Get-AzureBackupProtectionPolicy -ResourceGroupName $ResourceGroupName -ResourceName $ResourceName -Location $Location -Name $PolicyName
55+
$vault = Get-AzureBackupVault -Name $ResourceName;
56+
$protectionPolicy = Get-AzureBackupProtectionPolicy -vault $vault -Name $PolicyName
5557

5658
Assert-NotNull $protectionPolicy.InstanceId 'InstanceId should not be null'
5759
Assert-NotNull $protectionPolicy.Name 'Name should not be null'
@@ -67,7 +69,8 @@ function Test-GetAzureBackupProtectionPolicyByNameTests
6769

6870
function Test-NewAzureBackupProtectionPolicyTests
6971
{
70-
$protectionPolicy = New-AzureBackupProtectionPolicy -Name $PolicyName -WorkloadType $WorkloadType -BackupType $BackupType -Daily -RetentionType $RetentionType -RetentionDuration $RetentionDuration -ScheduleRunTimes $ScheduleRunTimes -ResourceGroupName $ResourceGroupName -ResourceName $ResourceName -Location $Location
72+
$vault = Get-AzureBackupVault -Name $ResourceName;
73+
$protectionPolicy = New-AzureBackupProtectionPolicy -vault $vault -Name $PolicyName -WorkloadType $WorkloadType -BackupType $BackupType -Daily -RetentionType $RetentionType -RetentionDuration $RetentionDuration -ScheduleRunTimes $ScheduleRunTimes
7174

7275
Assert-NotNull $protectionPolicy.InstanceId 'InstanceId should not be null'
7376
Assert-NotNull $protectionPolicy.Name 'Name should not be null'
@@ -82,7 +85,7 @@ function Test-NewAzureBackupProtectionPolicyTests
8285

8386
function Test-SetAzureBackupProtectionPolicyTests
8487
{
85-
$policy = New-Object Microsoft.Azure.Commands.AzureBackup.Cmdlets.AzureBackupProtectionPolicy
88+
$policy = New-Object Microsoft.Azure.Commands.AzureBackup.Models.AzureBackupProtectionPolicy
8689
$policy.InstanceId = $PolicyId
8790
$policy.Name = $PolicyName
8891
$policy.ResourceGroupName = $ResourceGroupName
@@ -110,7 +113,7 @@ function Test-SetAzureBackupProtectionPolicyTests
110113
function Test-RemoveAzureBackupProtectionPolicyTests
111114
{
112115
$policyNewName = "policy09_new"
113-
$policy = New-Object Microsoft.Azure.Commands.AzureBackup.Cmdlets.AzureBackupProtectionPolicy
116+
$policy = New-Object Microsoft.Azure.Commands.AzureBackup.Models.AzureBackupProtectionPolicy
114117
$policy.InstanceId = $PolicyId
115118
$policy.Name = $policyNewName
116119
$policy.ResourceGroupName = $ResourceGroupName

src/ResourceManager/AzureBackup/Commands.AzureBackup.Test/ScenarioTests/BackupItemTests.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ $POName = "iaasvmcontainer;dev01testing;dev01testing"
1212

1313
function Test-BackUpAzureBackUpItem
1414
{
15-
$azureBackUpItem = New-Object Microsoft.Azure.Commands.AzureBackup.Cmdlets.AzureBackupItem
15+
$azureBackUpItem = New-Object Microsoft.Azure.Commands.AzureBackup.Models.AzureBackupItem
1616
$azureBackUpItem.ResourceGroupName = $ResourceGroupName
1717
$azureBackUpItem.ResourceName = $ResourceName
1818
$azureBackUpItem.Location = $Location

src/ResourceManager/AzureBackup/Commands.AzureBackup.Test/ScenarioTests/RecoveryPointTests.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ $POName = "iaasvmcontainer;dev01testing;dev01testing"
1212

1313
function Test-GetAzureRecoveryPoint
1414
{
15-
$azureBackUpItem = New-Object Microsoft.Azure.Commands.AzureBackup.Cmdlets.AzureBackupItem
15+
$azureBackUpItem = New-Object Microsoft.Azure.Commands.AzureBackup.Models.AzureBackupItem
1616
$azureBackUpItem.ResourceGroupName = $ResourceGroupName
1717
$azureBackUpItem.ResourceName = $ResourceGroupName
1818
$azureBackUpItem.Location = $Location

src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackupCmdletHelpMessage.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ internal static class AzureBackupCmdletHelpMessage
2424
public const string Sku = "The SKU of the backup vault instance.";
2525
public const string ResourceTags = "A hash table which represents resource tags.";
2626
public const string TargetLocation = "The directory where the credentials file will be saved. This must be an absolute path.";
27-
public const string ContainerResourceName = "The container resource name aka friendly name.";
27+
public const string ManagedResourceName = "The resource name of the resource being managed by the Azure Backup service (ex: resource name of the VM).";
2828
public const string ContainerId = "The container ID.";
2929
public const string ContainerRegistrationStatus = "The container registration status.";
3030
public const string ContainerType = "The container type.";
@@ -52,7 +52,7 @@ internal static class AzureBackupCmdletHelpMessage
5252
public const string WaitJobFilterTimeoutHelpMessage = "Maximum number of seconds for which cmdlet should wait before job(s) complete running.";
5353

5454
public const string VirtualMachine = "Virtual Machine.";
55-
public const string ContainerResourceGroupName = "The container resource group name.";
55+
public const string ManagedResourceGroupName = "The resource group name of the resource being managed by the Azure Backup service (ex: resource group name of the VM).";
5656
public const string ProtectionStatus = "Protection Status of the azure backup item.";
5757
public const string AzureBackUpItem = "Azure BackUp Item.";
5858
public const string RecoveryPointId = "Recovery Point Id.";

src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Container/GetAzureBackupContainer.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,13 @@ namespace Microsoft.Azure.Commands.AzureBackup.Cmdlets
3131
[Cmdlet(VerbsCommon.Get, "AzureBackupContainer"), OutputType(typeof(AzureBackupContainer), typeof(List<AzureBackupContainer>))]
3232
public class GetAzureBackupContainer : AzureBackupVaultCmdletBase
3333
{
34-
[Parameter(Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.ContainerResourceGroupName)]
34+
[Parameter(Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.ManagedResourceGroupName)]
3535
[ValidateNotNullOrEmpty]
36-
public string ContainerResourceGroupName { get; set; }
36+
public string ManagedResourceGroupName { get; set; }
3737

38-
[Parameter(Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.ContainerResourceName)]
38+
[Parameter(Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.ManagedResourceName)]
3939
[ValidateNotNullOrEmpty]
40-
public string ContainerResourceName { get; set; }
40+
public string ManagedResourceName { get; set; }
4141

4242
[Parameter(Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.ContainerRegistrationStatus)]
4343
[ValidateNotNullOrEmpty]
@@ -63,11 +63,11 @@ public override void ExecuteCmdlet()
6363

6464
// When resource group name is specified, remove all containers whose resource group name
6565
// doesn't match the given resource group name
66-
if (!string.IsNullOrEmpty(ContainerResourceGroupName))
66+
if (!string.IsNullOrEmpty(ManagedResourceGroupName))
6767
{
6868
containerInfos.RemoveAll(containerInfo =>
6969
{
70-
return containerInfo.ParentContainerName != ContainerResourceGroupName;
70+
return containerInfo.ParentContainerName != ManagedResourceGroupName;
7171
});
7272
WriteDebug(string.Format("Count of containers after resource group filter = {0}", containerInfos.Count));
7373
}
@@ -81,7 +81,7 @@ public override void ExecuteCmdlet()
8181

8282
// When container resource name and container resource group name are specified, this parameter set
8383
// identifies a container uniquely. Thus, we return just one container instead of a list.
84-
if (!string.IsNullOrEmpty(ContainerResourceName) & !string.IsNullOrEmpty(ContainerResourceGroupName))
84+
if (!string.IsNullOrEmpty(ManagedResourceName) & !string.IsNullOrEmpty(ManagedResourceGroupName))
8585
{
8686
if (containers.Any())
8787
{
@@ -120,9 +120,9 @@ private string ConstructQueryFilterString()
120120
break;
121121
}
122122

123-
if (!string.IsNullOrEmpty(ContainerResourceName))
123+
if (!string.IsNullOrEmpty(ManagedResourceName))
124124
{
125-
containerQueryObject.ContainerFriendlyNameField = ContainerResourceName;
125+
containerQueryObject.ContainerFriendlyNameField = ManagedResourceName;
126126
}
127127

128128
return ContainerHelpers.GetQueryFilter(containerQueryObject);

src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/VaultCredentials/GetAzureBackupVaultCredentials.cs

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,10 @@ public override void ExecuteCmdlet()
5555
}
5656

5757
string subscriptionId = Profile.DefaultSubscription.Id.ToString();
58-
string resourceType = "resourceType";
58+
string resourceType = "BackupVault";
5959
string displayName = subscriptionId + "_" + vault.ResourceGroupName + "_" + vault.Name;
6060

61-
WriteVerbose(string.Format(CultureInfo.InvariantCulture,
61+
WriteDebug(string.Format(CultureInfo.InvariantCulture,
6262
"Executing cmdlet with SubscriptionId = {0}, ResourceGroupName = {1}, ResourceName = {2}, TargetLocation = {3}",
6363
subscriptionId, vault.ResourceGroupName, vault.Name, TargetLocation));
6464

@@ -73,9 +73,9 @@ public override void ExecuteCmdlet()
7373
try
7474
{
7575
// Upload cert into ID Mgmt
76-
WriteVerbose(string.Format(CultureInfo.InvariantCulture, "RecoveryService - Going to upload the certificate"));
76+
WriteDebug(string.Format(CultureInfo.InvariantCulture, "RecoveryService - Going to upload the certificate"));
7777
acsNamespace = UploadCert(cert, subscriptionId, vault.Name, resourceType, vault.ResourceGroupName);
78-
WriteVerbose(string.Format(CultureInfo.InvariantCulture, "RecoveryService - Successfully uploaded the certificate"));
78+
WriteDebug(string.Format(CultureInfo.InvariantCulture, "RecoveryService - Successfully uploaded the certificate"));
7979
}
8080
catch (Exception exception)
8181
{
@@ -84,6 +84,8 @@ public override void ExecuteCmdlet()
8484

8585
// generate vault credentials
8686
string vaultCredsFileContent = GenerateVaultCreds(cert, subscriptionId, resourceType, acsNamespace);
87+
vaultCredsFileContent = vaultCredsFileContent.Replace("Microsoft.Azure.Commands.AzureBackup.Models",
88+
"Microsoft.Azure.Portal.RecoveryServices.Models.Common");
8789

8890
// prepare for download
8991
string fileName = string.Format("{0}_{1}.VaultCredentials", displayName, DateTime.UtcNow.ToString("yyyy-dd-M--HH-mm-ss"));
@@ -94,7 +96,7 @@ public override void ExecuteCmdlet()
9496
directoryPath = TargetLocation;
9597
}
9698
string filePath = Path.Combine(directoryPath, fileName);
97-
WriteVerbose(string.Format("Saving Vault Credentials to file : {0}", filePath));
99+
WriteDebug(string.Format("Saving Vault Credentials to file : {0}", filePath));
98100

99101
File.WriteAllBytes(filePath, Encoding.UTF8.GetBytes(vaultCredsFileContent));
100102

@@ -180,18 +182,26 @@ private string GenerateVaultCredsForBackup(X509Certificate2 cert, string subscri
180182
resourceType,
181183
vault.Name,
182184
CertUtils.SerializeCert(cert, X509ContentType.Pfx),
183-
acsNamespace);
184-
185+
acsNamespace,
186+
GetAgentLinks());
185187
DataContractSerializer serializer = new DataContractSerializer(typeof(BackupVaultCreds));
186188
serializer.WriteObject(writer, backupVaultCreds);
187189

188-
WriteVerbose(string.Format(CultureInfo.InvariantCulture, "RecoveryService - Backup Vault - Successfully serialized the file content"));
190+
WriteDebug(string.Format(CultureInfo.InvariantCulture, "RecoveryService - Backup Vault - Successfully serialized the file content"));
189191
}
190192

191193
return Encoding.UTF8.GetString(output.ToArray());
192194
}
193195
}
194196

197+
private static string GetAgentLinks()
198+
{
199+
return "WABUpdateKBLink,http://go.microsoft.com/fwlink/p/?LinkId=229525;" +
200+
"StorageQuotaPurchaseLink,http://go.microsoft.com/fwlink/?LinkId=205490;" +
201+
"WebPortalLink,http://go.microsoft.com/fwlink/?LinkId=252913;" +
202+
"WABprivacyStatement,http://go.microsoft.com/fwlink/?LinkId=221308";
203+
}
204+
195205
/// <summary>
196206
/// A set of XmlWriterSettings to use for the publishing profile
197207
/// </summary>

0 commit comments

Comments
 (0)