Skip to content

Commit 7bf7ebb

Browse files
committed
Merge remote-tracking branch 'origin' into mkherani
2 parents 83b2d8e + 23a6183 commit 7bf7ebb

16 files changed

+120
-94
lines changed

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

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,23 +14,25 @@
1414

1515
$ResourceGroupName = "backuprg"
1616
$ResourceName = "backuprn"
17-
$Location = "SouthEast Asia"
18-
$ContainerResourceGroupName = "dev01Testing"
19-
$ContainerResourceName = "dev01Testing"
17+
$Location = "westus"
18+
$ContainerResourceGroupName = "powershellbvt"
19+
$ContainerResourceName = "powershellbvt"
2020

2121
<#
2222
.SYNOPSIS
2323
Tests to test list containers
2424
#>
2525
function Test-GetAzureBackupContainerWithoutFilterReturnsNonZeroContainers
2626
{
27-
$containers = Get-AzureBackupContainer -ResourceGroupName $ResourceGroupName -ResourceName $ResourceName -Location $Location
27+
$vault = Get-AzureBackupVault -Name $ResourceName;
28+
$containers = Get-AzureBackupContainer -vault $vault;
2829
Assert-NotNull $containers 'Container list should not be null';
2930
}
3031

3132
function Test-GetAzureBackupContainerWithUniqueFilterReturnsOneContainer
3233
{
33-
$container = Get-AzureBackupContainer -ResourceGroupName $ResourceGroupName -ResourceName $ResourceName -Location $Location -ContainerResourceGroupName $ContainerResourceGroupName -ContainerResourceName $ContainerResourceName
34+
$vault = Get-AzureBackupVault -Name $ResourceName;
35+
$container = Get-AzureBackupContainer -vault $vault -ContainerResourceGroupName $ContainerResourceGroupName -ContainerResourceName $ContainerResourceName
3436
Assert-NotNull $container 'Container should not be null';
3537
Assert-AreEqual $container.ResourceName $ContainerResourceName -CaseSensitive 'Returned container resource name (a.k.a friendly name) does not match the test VM resource name';
3638
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';

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

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,35 +14,39 @@
1414

1515
$ResourceGroupName = "backuprg"
1616
$ResourceName = "backuprn"
17-
$Location = "SouthEast Asia"
17+
$Location = "westus"
1818
$CertTargetLocation = (Get-Item -Path ".\" -Verbose).FullName;
1919

2020
function Test-GetAzureBackupVaultCredentialsReturnsFileNameAndDownloadsCert
2121
{
22-
$fileName = Get-AzureBackupVaultCredentials -ResourceGroupName $ResourceGroupName -ResourceName $ResourceName -Location $Location -TargetLocation $CertTargetLocation
22+
$vault = Get-AzureBackupVault -Name $ResourceName;
23+
$fileName = Get-AzureBackupVaultCredentials -vault $vault -TargetLocation $CertTargetLocation
2324
Assert-NotNull $fileName 'File name should not be null';
2425
$certFileFullPath = [io.path]::combine($CertTargetLocation, $fileName);
2526
Assert-True {{ Test-Path $certFileFullPath }}
2627
}
2728

2829
function Test-SetAzureBackupVaultStorageTypeWithFreshResourceDoesNotThrowException
2930
{
30-
# TODO: Create a new resource and use it for these calls. At the end, delete it.
31+
$freshVault = New-AzureBackupVault -ResourceGroupName $ResourceGroupName -Name "storagetestrn" -Region $Location;
32+
33+
Set-AzureBackupVaultStorageType $freshVault -Type GeoRedundant
3134

32-
Set-AzureBackupVaultStorageType -ResourceGroupName $ResourceGroupName -ResourceName $ResourceName -Location $Location -Type GeoRedundant
35+
Set-AzureBackupVaultStorageType $freshVault -Type LocallyRedundant
3336

34-
Set-AzureBackupVaultStorageType -ResourceGroupName $ResourceGroupName -ResourceName $ResourceName -Location $Location -Type LocallyRedundant
37+
Set-AzureBackupVaultStorageType $freshVault -Type GeoRedundant
3538

36-
Set-AzureBackupVaultStorageType -ResourceGroupName $ResourceGroupName -ResourceName $ResourceName -Location $Location -Type GeoRedundant
39+
Set-AzureBackupVaultStorageType $freshVault -Type LocallyRedundant
3740

38-
Set-AzureBackupVaultStorageType -ResourceGroupName $ResourceGroupName -ResourceName $ResourceName -Location $Location -Type LocallyRedundant
41+
Remove-AzureBackupVault -vault $freshVault
3942
}
4043

4144
function Test-SetAzureBackupVaultStorageTypeWithLockedResourceThrowsException
4245
{
43-
# One of them is bound to fail
46+
# TODO: Check for exception based on current storage type - obtained by vault properties
47+
$vault = Get-AzureBackupVault -Name $ResourceName;
4448

45-
Assert-Throws { Set-AzureBackupVaultStorageType -ResourceGroupName $ResourceGroupName -ResourceName $ResourceName -Location $Location -Type GeoRedundant }
49+
Assert-Throws { Set-AzureBackupVaultStorageType $vault -Type GeoRedundant }
4650

47-
Assert-Throws { Set-AzureBackupVaultStorageType -ResourceGroupName $ResourceGroupName -ResourceName $ResourceName -Location $Location -Type LocallyRedundant }
51+
Assert-Throws { Set-AzureBackupVaultStorageType $vault -Type LocallyRedundant }
4852
}

src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackupClientAdapter/JobAdapter.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,5 +37,17 @@ public partial class AzureBackupClientAdapter
3737
var response = AzureBackupClient.Job.ListAsync(queryParams, GetCustomRequestHeaders(), CmdletCancellationToken).Result;
3838
return response.Jobs.Objects;
3939
}
40+
41+
public Mgmt.JobByIdResponse GetJobDetails(string jobId)
42+
{
43+
var response = AzureBackupClient.Job.GetAsync(jobId, GetCustomRequestHeaders(), CmdletCancellationToken).Result;
44+
return response;
45+
}
46+
47+
public Guid TriggerCancelJob(string jobId)
48+
{
49+
var response = AzureBackupClient.Job.StopAsync(jobId, GetCustomRequestHeaders(), CmdletCancellationToken).Result.OperationId;
50+
return response;
51+
}
4052
}
4153
}

src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/BackUp/TriggerBackUp.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public override void ExecuteCmdlet()
4646
WriteDebug("Triggered backup. Converting response");
4747

4848
var operationStatus = TrackOperation(operationId);
49-
this.WriteObject(operationStatus.JobList.FirstOrDefault());
49+
this.WriteObject(operationStatus.Jobs.FirstOrDefault());
5050
});
5151
}
5252
}

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,11 +69,9 @@ public override void ExecuteCmdlet()
6969
{
7070
return containerInfo.ParentContainerName != ContainerResourceGroupName;
7171
});
72-
WriteDebug(string.Format("# of containers after resource group filter = {0}", containerInfos.Count));
72+
WriteDebug(string.Format("Count of containers after resource group filter = {0}", containerInfos.Count));
7373
}
7474

75-
WriteDebug(string.Format("Count of containers after resource group filter = {0}", containerInfos.Count));
76-
7775
// TODO: Container friendly name is not captures in Container response
7876
// BUG: Friendly name was previously assigned to ResourceName (vault name)
7977
List<AzureBackupContainer> containers = containerInfos.ConvertAll(containerInfo =>

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ public override void ExecuteCmdlet()
107107
var operationId = AzureBackupClient.RegisterContainer(registrationRequest);
108108

109109
var operationStatus = GetOperationStatus(operationId);
110-
WriteObject(operationStatus.JobList.FirstOrDefault());
110+
WriteObject(operationStatus.Jobs.FirstOrDefault());
111111
});
112112
}
113113

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public override void ExecuteCmdlet()
4646
UnregisterContainerRequestInput unregRequest = new UnregisterContainerRequestInput(containerUniqueName, AzureBackupContainerType.IaasVMContainer.ToString());
4747
var operationId = AzureBackupClient.UnRegisterContainer(unregRequest);
4848

49-
var jobId = GetOperationStatus(operationId).JobList.FirstOrDefault();
49+
var jobId = GetOperationStatus(operationId).Jobs.FirstOrDefault();
5050
WriteObject(jobId);
5151
});
5252
}

src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Item/Disable-AzureBackupProtection .cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ public override void ExecuteCmdlet()
6363

6464
WriteVerbose("Received disable azure backup protection response");
6565
var operationStatus = GetOperationStatus(operationId);
66-
this.WriteObject(operationStatus.JobList.FirstOrDefault());
66+
this.WriteObject(operationStatus.Jobs.FirstOrDefault());
6767
});
6868
}
6969

src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Item/Enable-AzureBackupProtection .cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ public override void ExecuteCmdlet()
7272
WriteDebug("Received enable azure backup protection response");
7373

7474
var operationStatus = GetOperationStatus(operationId);
75-
this.WriteObject(operationStatus.JobList.FirstOrDefault());
75+
this.WriteObject(operationStatus.Jobs.FirstOrDefault());
7676
});
7777
}
7878
}

src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Jobs/GetAzureBackupJob.cs

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -27,34 +27,38 @@ namespace Microsoft.Azure.Commands.AzureBackup.Cmdlets
2727
/// <summary>
2828
/// Get list of jobs pertaining to the filters specified. Gets list of all jobs created in the last 24 hours if no filters are specified.
2929
/// </summary>
30-
[Cmdlet(VerbsCommon.Get, "AzureBackupJob"), OutputType(typeof(List<Mgmt.Job>), typeof(Mgmt.Job))]
31-
public class GetAzureBackupJob : AzureBackupVaultCmdletBase
30+
[Cmdlet(VerbsCommon.Get, "AzureBackupJob", DefaultParameterSetName = "FiltersSet"), OutputType(typeof(List<Mgmt.Job>), typeof(Mgmt.Job))]
31+
public class GetAzureBackupJob : AzureBackupCmdletBase
3232
{
33-
[Parameter(Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.JobFilterJobIdHelpMessage)]
33+
[Parameter(Mandatory = true, HelpMessage = AzureBackupCmdletHelpMessage.Vault, ParameterSetName = "FiltersSet")]
34+
[ValidateNotNull]
35+
public AzurePSBackupVault Vault { get; set; }
36+
37+
[Parameter(Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.JobFilterJobIdHelpMessage, ParameterSetName = "FiltersSet")]
3438
[ValidateNotNullOrEmpty]
3539
public string JobId { get; set; }
3640

37-
[Parameter(Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.JobFilterJobHelpMessage)]
41+
[Parameter(Mandatory = true, HelpMessage = AzureBackupCmdletHelpMessage.JobFilterJobHelpMessage, ParameterSetName = "JobsListFilter")]
3842
[ValidateNotNull]
3943
public AzureBackupJob Job { get; set; }
4044

41-
[Parameter(Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.JobFilterStartTimeHelpMessage)]
45+
[Parameter(Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.JobFilterStartTimeHelpMessage, ParameterSetName = "FiltersSet")]
4246
[ValidateNotNull]
4347
public DateTime? From { get; set; }
4448

45-
[Parameter(Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.JobFilterEndTimeHelpMessage)]
49+
[Parameter(Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.JobFilterEndTimeHelpMessage, ParameterSetName = "FiltersSet")]
4650
[ValidateNotNull]
4751
public DateTime? To { get; set; }
4852

49-
[Parameter(Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.JobFilterStatusHelpMessage)]
53+
[Parameter(Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.JobFilterStatusHelpMessage, ParameterSetName = "FiltersSet")]
5054
[ValidateSet("Cancelled", "Cancelling", "Completed", "CompletedWithWarnings", "Failed", "InProgress")]
5155
public string Status { get; set; }
5256

53-
[Parameter(Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.JobFilterTypeHelpMessage)]
57+
[Parameter(Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.JobFilterTypeHelpMessage, ParameterSetName = "FiltersSet")]
5458
[ValidateSet("VM")]
5559
public string Type { get; set; }
5660

57-
[Parameter(Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.JobFilterOperationHelpMessage)]
61+
[Parameter(Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.JobFilterOperationHelpMessage, ParameterSetName = "FiltersSet")]
5862
[ValidateSet("Backup", "ConfigureBackup", "DeleteBackupData", "Register", "Restore", "UnProtect", "Unregister")]
5963
public string Operation { get; set; }
6064

@@ -64,16 +68,10 @@ public override void ExecuteCmdlet()
6468
{
6569
if (Job != null)
6670
{
67-
InitializeAzureBackupCmdlet(Job.ResourceGroupName, Job.ResourceName);
71+
Vault = new AzurePSBackupVault(Job.ResourceGroupName, Job.ResourceName, Job.Location);
6872
}
6973

70-
// TODO: BUG: This will overwrite the above initialization
71-
base.ExecuteCmdlet();
72-
73-
//if (Job != null && JobId != null)
74-
//{
75-
// throw new Exception("Please use either JobID filter or Job filter but not both.");
76-
//}
74+
InitializeAzureBackupCmdlet(Vault);
7775

7876
if (Job != null)
7977
{
@@ -143,7 +141,7 @@ public override void ExecuteCmdlet()
143141
foreach (Mgmt.Job serviceJob in jobsList)
144142
{
145143
// TODO: Initialize vault from Job object when vault is made optional
146-
retrievedJobs.Add(new AzureBackupJob(vault, serviceJob));
144+
retrievedJobs.Add(new AzureBackupJob(Vault, serviceJob));
147145
}
148146

149147
WriteDebug("Successfully retrieved all jobs. Number of jobs retrieved: " + retrievedJobs.Count());

src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Jobs/GetAzureBackupJobDetails.cs

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,31 +18,35 @@
1818
using System.Xml;
1919
using System.Linq;
2020
using Mgmt = Microsoft.Azure.Management.BackupServices.Models;
21+
using Microsoft.Azure.Commands.AzureBackup.Models;
2122

2223
namespace Microsoft.Azure.Commands.AzureBackup.Cmdlets
2324
{
2425
/// <summary>
2526
/// Get full details of a job
2627
/// </summary>
27-
[Cmdlet(VerbsCommon.Get, "AzureBackupJobDetails"), OutputType(typeof(Mgmt.JobProperties))]
28-
public class GetAzureBackupJobDetils : AzureBackupVaultCmdletBase
28+
[Cmdlet(VerbsCommon.Get, "AzureBackupJobDetails", DefaultParameterSetName = "IdFiltersSet"), OutputType(typeof(Mgmt.JobProperties))]
29+
public class GetAzureBackupJobDetils : AzureBackupCmdletBase
2930
{
30-
[Parameter(Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.JobDetailsFilterJobIdHelpMessage)]
31+
[Parameter(Mandatory = true, HelpMessage = AzureBackupCmdletHelpMessage.Vault, ParameterSetName = "IdFiltersSet")]
32+
[ValidateNotNull]
33+
public AzurePSBackupVault Vault { get; set; }
34+
35+
[Parameter(Mandatory = true, HelpMessage = AzureBackupCmdletHelpMessage.JobDetailsFilterJobIdHelpMessage, ParameterSetName = "IdFiltersSet")]
3136
[ValidateNotNullOrEmpty]
3237
public string JobID { get; set; }
3338

34-
[Parameter(Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.JobDetailsFilterJobHelpMessage)]
39+
[Parameter(Mandatory = true, HelpMessage = AzureBackupCmdletHelpMessage.JobDetailsFilterJobHelpMessage, ParameterSetName = "JobsFiltersSet")]
3540
[ValidateNotNull]
3641
public AzureBackupJob Job { get; set; }
3742

3843
public override void ExecuteCmdlet()
3944
{
4045
if (Job != null)
4146
{
42-
InitializeAzureBackupCmdlet(Job.ResourceGroupName, Job.ResourceName, Job.Location);
47+
Vault = new AzurePSBackupVault(Job.ResourceGroupName, Job.ResourceName, Job.Location);
4348
}
44-
45-
base.ExecuteCmdlet();
49+
InitializeAzureBackupCmdlet(Vault);
4650

4751
ExecutionBlock(() =>
4852
{
@@ -53,8 +57,8 @@ public override void ExecuteCmdlet()
5357

5458
WriteDebug("JobID filter is: " + JobID);
5559

56-
Mgmt.JobProperties serviceJobProperties = AzureBackupClient.Job.GetAsync(JobID, GetCustomRequestHeaders(), CmdletCancellationToken).Result.Job;
57-
AzureBackupJobDetails jobDetails = new AzureBackupJobDetails(serviceJobProperties, ResourceGroupName, ResourceName, Location);
60+
Mgmt.JobProperties serviceJobProperties = AzureBackupClient.GetJobDetails(JobID).Job;
61+
AzureBackupJobDetails jobDetails = new AzureBackupJobDetails(Vault, serviceJobProperties);
5862

5963
WriteDebug("Retrieved JobDetails from service.");
6064
WriteObject(jobDetails);

src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Jobs/StopAzureBackukpJob.cs

Lines changed: 15 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -20,35 +20,36 @@
2020
using Microsoft.Azure.Management.BackupServices;
2121
using System.Threading.Tasks;
2222
using Mgmt = Microsoft.Azure.Management.BackupServices.Models;
23+
using Microsoft.Azure.Commands.AzureBackup.Models;
2324

2425
namespace Microsoft.Azure.Commands.AzureBackup.Cmdlets
2526
{
2627
/// <summary>
2728
/// Stop a running cancellable job
2829
/// </summary>
2930
[Cmdlet("Stop", "AzureBackupJob"), OutputType(typeof(Mgmt.Job))]
30-
public class StopAzureBackupJob : AzureBackupVaultCmdletBase
31+
public class StopAzureBackupJob : AzureBackupCmdletBase
3132
{
32-
[Parameter(Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.StopJobFilterJobIdHelpMessage)]
33+
[Parameter(Mandatory = true, HelpMessage = AzureBackupCmdletHelpMessage.Vault, ParameterSetName = "IdFiltersSet")]
34+
[ValidateNotNull]
35+
public AzurePSBackupVault Vault { get; set; }
36+
37+
[Parameter(Mandatory = true, HelpMessage = AzureBackupCmdletHelpMessage.StopJobFilterJobIdHelpMessage, ParameterSetName = "IdFiltersSet")]
3338
[ValidateNotNullOrEmpty]
3439
public string JobID { get; set; }
3540

36-
[Parameter(Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.StopJobFilterJobHelpMessage)]
41+
[Parameter(Mandatory = true, HelpMessage = AzureBackupCmdletHelpMessage.StopJobFilterJobHelpMessage, ParameterSetName = "JobFiltersSet")]
3742
[ValidateNotNull]
3843
public AzureBackupJob Job { get; set; }
3944

40-
[Parameter(Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.StopJobFilterVaultHelpMessage)]
41-
[ValidateNotNull]
42-
public object Vault { get; set; }
43-
4445
public override void ExecuteCmdlet()
4546
{
4647
if (Job != null)
4748
{
48-
InitializeAzureBackupCmdlet(Job.ResourceGroupName, Job.ResourceName, Job.Location);
49+
Vault = new AzurePSBackupVault(Job.ResourceGroupName, Job.ResourceName, Job.Location);
4950
}
5051

51-
base.ExecuteCmdlet();
52+
InitializeAzureBackupCmdlet(Vault);
5253

5354
ExecutionBlock(() =>
5455
{
@@ -58,23 +59,16 @@ public override void ExecuteCmdlet()
5859
}
5960

6061
WriteDebug("JobID is: " + JobID);
61-
OperationResponse cancelTask = AzureBackupClient.Job.StopAsync(JobID, GetCustomRequestHeaders(), CmdletCancellationToken).Result;
62+
Guid cancelTaskId = AzureBackupClient.TriggerCancelJob(JobID);
63+
OperationResultResponse opResponse = TrackOperation(cancelTaskId);
6264

63-
var opStatus = AzureBackupClient.OperationStatus.GetAsync(cancelTask.OperationId.ToString(), GetCustomRequestHeaders()).Result;
64-
while (opStatus.OperationStatus != "Completed")
65+
if (opResponse.OperationResult == AzureBackupOperationResult.Succeeded.ToString())
6566
{
66-
WriteDebug("Waiting for the task to complete");
67-
opStatus = AzureBackupClient.OperationStatus.GetAsync(cancelTask.OperationId.ToString(), GetCustomRequestHeaders()).Result;
68-
}
69-
// TODO:
70-
if (opStatus.OperationResult == "Failed")
71-
{
72-
var errorRecord = new ErrorRecord(new Exception("Cannot cancel job."), opStatus.Message, ErrorCategory.InvalidOperation, null);
73-
WriteError(errorRecord);
67+
WriteDebug("Triggered cancellation of job with JobID: " + JobID);
7468
}
7569
else
7670
{
77-
WriteDebug("Triggered cancellation of job with JobID: " + JobID);
71+
throw new Exception("Stop Job failed with ErrorCode: " + opResponse.ErrorCode);
7872
}
7973
});
8074
}

0 commit comments

Comments
 (0)