diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackupCmdletHelpMessage.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackupCmdletHelpMessage.cs index 36ba804e8e69..cccf33ea3a12 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackupCmdletHelpMessage.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/AzureBackupCmdletHelpMessage.cs @@ -21,9 +21,10 @@ internal static class AzureBackupCmdletHelpMessage public const string ResourceGroupName = "The ResourceGroup name."; public const string ResourceName = "The Resource name."; public const string TargetLocation = "The directory where the credentials file will be saved."; - public const string ContainerName = "The container name."; + public const string ContainerResourceName = "The container resource name aka friendly name."; public const string ContainerId = "The container ID."; public const string ContainerRegistrationStatus = "The container registration status."; public const string ContainerType = "The container type."; + public const string ContainerResourceGroupName = "The container resource group name."; } } diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/BackUp/TriggerBackUp.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/BackUp/TriggerBackUp.cs index ebda269195ee..d2d93f57f65f 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/BackUp/TriggerBackUp.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/BackUp/TriggerBackUp.cs @@ -44,7 +44,7 @@ public override void ExecuteCmdlet() MBS.OperationResponse triggerBackUpInfo = AzureBackupClient.BackUp.TriggerBackUpAsync(GetCustomRequestHeaders(), - AzureBackupItem.ContainerName, + AzureBackupItem.ContainerUniqueName, AzureBackupItem.DataSourceType, AzureBackupItem.DataSourceId, CmdletCancellationToken).Result; diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Container/GetAzureBackupContainer.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Container/GetAzureBackupContainer.cs index 54d03adbd282..e9d6f7e074d9 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Container/GetAzureBackupContainer.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Container/GetAzureBackupContainer.cs @@ -30,15 +30,19 @@ namespace Microsoft.Azure.Commands.AzureBackup.Cmdlets [Cmdlet(VerbsCommon.Get, "AzureBackupContainer"), OutputType(typeof(AzureBackupContainer), typeof(List))] public class GetAzureBackupContainer : AzureBackupVaultCmdletBase { - [Parameter(Position = 2, Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.ContainerName)] + [Parameter(Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.ContainerResourceGroupName)] [ValidateNotNullOrEmpty] - public string VirtualMachine { get; set; } + public string ContainerResourceGroupName { get; set; } - [Parameter(Position = 2, Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.ContainerRegistrationStatus)] + [Parameter(Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.ContainerResourceName)] + [ValidateNotNullOrEmpty] + public string ContainerResourceName { get; set; } + + [Parameter(Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.ContainerRegistrationStatus)] [ValidateNotNullOrEmpty] public AzureBackupContainerStatus Status { get; set; } - [Parameter(Position = 2, Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.ContainerType)] + [Parameter(Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.ContainerType)] [ValidateNotNullOrEmpty] public AzureBackupContainerType Type { get; set; } @@ -49,74 +53,63 @@ public override void ExecuteCmdlet() ExecutionBlock(() => { string queryFilterString = string.Empty; - // TODO: Construct query filter string based on input filters. - //queryFilterString = ConstructQueryFilterString(); - + queryFilterString = ConstructQueryFilterString(); ListContainerResponse listContainerResponse = AzureBackupClient.Container.ListAsync(queryFilterString, GetCustomRequestHeaders(), CmdletCancellationToken).Result; - IEnumerable containers = listContainerResponse.Objects.ToList().ConvertAll(containerInfo => + List containerInfos = listContainerResponse.Objects.ToList(); + + // When resource group name is specified, remove all containers whose resource group name + // doesn't match the given resource group name + if (!string.IsNullOrEmpty(ContainerResourceGroupName)) { - return new AzureBackupContainer() + containerInfos.RemoveAll(containerInfo => { - ContainerType = containerInfo.ContainerType, - FriendlyName = containerInfo.FriendlyName, - HealthStatus = containerInfo.HealthStatus, - InstanceId = containerInfo.InstanceId, - Name = containerInfo.Name, - ParentContainerFriendlyName = containerInfo.ParentContainerFriendlyName, - ParentContainerName = containerInfo.ParentContainerName, - RegistrationStatus = containerInfo.RegistrationStatus, - ResourceGroupName = ResourceGroupName, - ResourceName = ResourceName, - }; - }); + return containerInfo.ParentContainerName != ContainerResourceGroupName; + }); + } - WriteObject(containers); + WriteObject(containerInfos.ConvertAll(containerInfo => + { + return new AzureBackupContainer(containerInfo); + })); }); } private string ConstructQueryFilterString() { - string queryFilterString = string.Empty; BMI.ContainerQueryObject containerQueryObject = new BMI.ContainerQueryObject(); - if (Type != null) + switch (Type) { - switch (Type) - { - case AzureBackupContainerType.AzureVirtualMachine: - containerQueryObject.Type = BCI.ContainerType.IaasVMContainer.ToString(); - break; - default: - break; - } + case AzureBackupContainerType.AzureVirtualMachine: + containerQueryObject.Type = BCI.ContainerType.IaasVMContainer.ToString(); + break; + default: + break; } - if (Status != null) + switch (Status) { - switch (Status) - { - case AzureBackupContainerStatus.Registered: - containerQueryObject.Status = BCI.RegistrationStatus.Registered.ToString(); - break; - case AzureBackupContainerStatus.Registering: - containerQueryObject.Status = BCI.RegistrationStatus.Registering.ToString(); - break; - case AzureBackupContainerStatus.NotRegistered: - containerQueryObject.Status = BCI.RegistrationStatus.NotRegistered.ToString(); - break; - default: - break; - } + case AzureBackupContainerStatus.Registered: + containerQueryObject.Status = BCI.RegistrationStatus.Registered.ToString(); + break; + case AzureBackupContainerStatus.Registering: + containerQueryObject.Status = BCI.RegistrationStatus.Registering.ToString(); + break; + case AzureBackupContainerStatus.NotRegistered: + containerQueryObject.Status = BCI.RegistrationStatus.NotRegistered.ToString(); + break; + default: + break; } - if (VirtualMachine != null) + if (!string.IsNullOrEmpty(ContainerResourceName)) { - + containerQueryObject.FriendlyName = ContainerResourceName; } - return queryFilterString; + return BMI.BackupManagementAPIHelper.GetQueryString(containerQueryObject.GetNameValueCollection()); } } } diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Models/AzureBackupBaseObjects.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Models/AzureBackupBaseObjects.cs index 711b119e6c04..721baf34383b 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Models/AzureBackupBaseObjects.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Models/AzureBackupBaseObjects.cs @@ -38,6 +38,10 @@ public AzureBackupVaultContextObject(string resourceGroupName, string resourceNa } } + /// + /// This class encapsulates all the properties of the container object + /// that are needed by higher level objects (data source, recovery point etc). + /// public class AzureBackupContainerContextObject : AzureBackupVaultContextObject { /// @@ -46,14 +50,9 @@ public class AzureBackupContainerContextObject : AzureBackupVaultContextObject public string ContainerType { get; set; } /// - /// Name of the Azure Backup container + /// Unique name of the Azure Backup Container /// - public string ContainerName { get; set; } - - /// - /// Id of the Azure Backup Container - /// - public string ContainerId { get; set; } + public string ContainerUniqueName { get; set; } public AzureBackupContainerContextObject() : base() @@ -64,15 +63,20 @@ public AzureBackupContainerContextObject(AzureBackupContainerContextObject azure : base(azureBackupContainerContextObject.ResourceGroupName, azureBackupContainerContextObject.ResourceName) { ContainerType = azureBackupContainerContextObject.ContainerType; - ContainerName = azureBackupContainerContextObject.ContainerName; - ContainerId = azureBackupContainerContextObject.ContainerId; + ContainerUniqueName = azureBackupContainerContextObject.ContainerUniqueName; } public AzureBackupContainerContextObject(AzureBackupContainer azureBackupContainer) : base(azureBackupContainer.ResourceGroupName, azureBackupContainer.ResourceName) { ContainerType = azureBackupContainer.ContainerType; - ContainerName = azureBackupContainer.ContainerName; - ContainerId = azureBackupContainer.ContainerId; + ContainerUniqueName = azureBackupContainer.ContainerUniqueName; + } + + public AzureBackupContainerContextObject(ContainerInfo containerInfo) + : base(containerInfo.ParentContainerName, containerInfo.FriendlyName) + { + ContainerType = containerInfo.ContainerType; + ContainerUniqueName = containerInfo.Name; } } diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Models/AzureBackupContainer.cs b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Models/AzureBackupContainer.cs index cdf29939106c..0e0114cc293f 100644 --- a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Models/AzureBackupContainer.cs +++ b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Models/AzureBackupContainer.cs @@ -12,6 +12,7 @@ // limitations under the License. // ---------------------------------------------------------------------------------- +using Microsoft.Azure.Management.BackupServices.Models; using System; using System.Collections.Generic; using System.Linq; @@ -25,44 +26,23 @@ namespace Microsoft.Azure.Commands.AzureBackup.Cmdlets /// public class AzureBackupContainer : AzureBackupContainerContextObject { - /// - /// Type of the Azure Backup container - /// - public string ContainerType { get; set; } - - /// - /// Friendly name for the Azure Backup container - /// - public string FriendlyName { get; set; } - /// /// Status of health of the Azure Backup container /// public string HealthStatus { get; set; } - /// - /// Id of the Azure Backup Container - /// - public string InstanceId { get; set; } - - /// - /// Name of the Azure Backup container - /// - public string Name { get; set; } - - /// - /// Friendly name of the parent container - /// - public string ParentContainerFriendlyName { get; set; } - - /// - /// Name of the parent container - /// - public string ParentContainerName { get; set; } - /// /// Status of registration of the container /// public string RegistrationStatus { get; set; } + + public AzureBackupContainer() : base() { } + + public AzureBackupContainer(ContainerInfo containerInfo) + : base(containerInfo) + { + HealthStatus = containerInfo.HealthStatus; + RegistrationStatus = containerInfo.RegistrationStatus; + } } } diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Resources/BMSCommonInterface.dll b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Resources/BMSCommonInterface.dll index eefd5479ee44..adc7d99efcdb 100644 Binary files a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Resources/BMSCommonInterface.dll and b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Resources/BMSCommonInterface.dll differ diff --git a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Resources/BackupManagementInterface.dll b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Resources/BackupManagementInterface.dll index 3c3ab6d62c08..7b6a6c7ee742 100644 Binary files a/src/ResourceManager/AzureBackup/Commands.AzureBackup/Resources/BackupManagementInterface.dll and b/src/ResourceManager/AzureBackup/Commands.AzureBackup/Resources/BackupManagementInterface.dll differ