Skip to content
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 @@ -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.";
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,15 +30,19 @@ namespace Microsoft.Azure.Commands.AzureBackup.Cmdlets
[Cmdlet(VerbsCommon.Get, "AzureBackupContainer"), OutputType(typeof(AzureBackupContainer), typeof(List<AzureBackupContainer>))]
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; }

Expand All @@ -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<AzureBackupContainer> containers = listContainerResponse.Objects.ToList().ConvertAll(containerInfo =>
List<ContainerInfo> 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());
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,10 @@ public AzureBackupVaultContextObject(string resourceGroupName, string resourceNa
}
}

/// <summary>
/// This class encapsulates all the properties of the container object
/// that are needed by higher level objects (data source, recovery point etc).
/// </summary>
public class AzureBackupContainerContextObject : AzureBackupVaultContextObject
{
/// <summary>
Expand All @@ -46,14 +50,9 @@ public class AzureBackupContainerContextObject : AzureBackupVaultContextObject
public string ContainerType { get; set; }

/// <summary>
/// Name of the Azure Backup container
/// Unique name of the Azure Backup Container
/// </summary>
public string ContainerName { get; set; }

/// <summary>
/// Id of the Azure Backup Container
/// </summary>
public string ContainerId { get; set; }
public string ContainerUniqueName { get; set; }

public AzureBackupContainerContextObject()
: base()
Expand All @@ -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;
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
// limitations under the License.
// ----------------------------------------------------------------------------------

using Microsoft.Azure.Management.BackupServices.Models;
using System;
using System.Collections.Generic;
using System.Linq;
Expand All @@ -25,44 +26,23 @@ namespace Microsoft.Azure.Commands.AzureBackup.Cmdlets
/// </summary>
public class AzureBackupContainer : AzureBackupContainerContextObject
{
/// <summary>
/// Type of the Azure Backup container
/// </summary>
public string ContainerType { get; set; }

/// <summary>
/// Friendly name for the Azure Backup container
/// </summary>
public string FriendlyName { get; set; }

/// <summary>
/// Status of health of the Azure Backup container
/// </summary>
public string HealthStatus { get; set; }

/// <summary>
/// Id of the Azure Backup Container
/// </summary>
public string InstanceId { get; set; }

/// <summary>
/// Name of the Azure Backup container
/// </summary>
public string Name { get; set; }

/// <summary>
/// Friendly name of the parent container
/// </summary>
public string ParentContainerFriendlyName { get; set; }

/// <summary>
/// Name of the parent container
/// </summary>
public string ParentContainerName { get; set; }

/// <summary>
/// Status of registration of the container
/// </summary>
public string RegistrationStatus { get; set; }

public AzureBackupContainer() : base() { }

public AzureBackupContainer(ContainerInfo containerInfo)
: base(containerInfo)
{
HealthStatus = containerInfo.HealthStatus;
RegistrationStatus = containerInfo.RegistrationStatus;
}
}
}
Binary file not shown.
Binary file not shown.