/// <summary>
        /// Constructor. Takes the service client object representing the container
        /// and converts it in to the PS container model
        /// </summary>
        /// <param name="protectionContainerResource">Service client object representing the container</param>
        public AzureVmWorkloadContainer(ProtectionContainerResource protectionContainerResource)
            : base(protectionContainerResource)
        {
            AzureVMAppContainerProtectionContainer protectionContainer = (AzureVMAppContainerProtectionContainer)protectionContainerResource.Properties;

            Id = protectionContainerResource.Id;
            SourceResourceId = protectionContainer.SourceResourceId;
            HealthStatus     = protectionContainer.HealthStatus;

            if (protectionContainer.ExtendedInfo != null)
            {
                ServerName = protectionContainer.ExtendedInfo.HostServerName;
            }

            ExtendedInfo     = new List <AzureVmWorkloadContainerExtendedInfo>();
            WorkloadsPresent = "";
            foreach (var inquiryDetail in protectionContainer.ExtendedInfo.InquiryInfo.InquiryDetails)
            {
                ExtendedInfo.Add(new AzureVmWorkloadContainerExtendedInfo()
                {
                    InquiryStatus = inquiryDetail.InquiryValidation.Status,
                    WorkloadItems = inquiryDetail.ItemCount,
                    WorkloadType  = inquiryDetail.Type
                });
                WorkloadsPresent += inquiryDetail.Type + ",";
            }
            WorkloadsPresent = WorkloadsPresent.Remove(WorkloadsPresent.Length - 1);
        }
        public void RegisterContainer()
        {
            string        vaultName = (string)ProviderData[VaultParams.VaultName];
            string        vaultResourceGroupName = (string)ProviderData[VaultParams.ResourceGroupName];
            string        containerName          = (string)ProviderData[ContainerParams.Name];
            string        backupManagementType   = (string)ProviderData[ContainerParams.BackupManagementType];
            string        workloadType           = (string)ProviderData[ContainerParams.ContainerType];
            ContainerBase containerBase          =
                (ContainerBase)ProviderData[ContainerParams.Container];
            AzureVmWorkloadContainer container = (AzureVmWorkloadContainer)ProviderData[ContainerParams.Container];

            ProtectionContainerResource protectionContainerResource = null;

            //Trigger Discovery
            ODataQuery <BMSRefreshContainersQueryObject> queryParam = new ODataQuery <BMSRefreshContainersQueryObject>(
                q => q.BackupManagementType
                == ServiceClientModel.BackupManagementType.AzureWorkload);

            AzureWorkloadProviderHelper.RefreshContainer(vaultName, vaultResourceGroupName, queryParam);

            List <ProtectableContainerResource> unregisteredVmContainers =
                GetUnRegisteredVmContainers(vaultName, vaultResourceGroupName);
            ProtectableContainerResource unregisteredVmContainer = unregisteredVmContainers.Find(
                vmContainer => string.Compare(vmContainer.Name.Split(';').Last(),
                                              containerName, true) == 0);

            if (unregisteredVmContainer != null || container != null)
            {
                protectionContainerResource =
                    new ProtectionContainerResource(container != null ? container.Id : unregisteredVmContainer.Id,
                                                    container != null ? container.Name : unregisteredVmContainer.Name);
                AzureVMAppContainerProtectionContainer azureVMContainer = new AzureVMAppContainerProtectionContainer(
                    friendlyName: containerName,
                    backupManagementType: backupManagementType,
                    sourceResourceId: container != null ? container.SourceResourceId : unregisteredVmContainer.Properties.ContainerId,
                    workloadType: workloadType.ToString(),
                    operationType: container != null ? OperationType.Reregister : OperationType.Register);
                protectionContainerResource.Properties = azureVMContainer;
                AzureWorkloadProviderHelper.RegisterContainer(container != null ? container.Name : unregisteredVmContainer.Name,
                                                              protectionContainerResource,
                                                              vaultName,
                                                              vaultResourceGroupName);
            }
            else
            {
                throw new ArgumentException(string.Format(Resources.AzureWorkloadAlreadyRegisteredException));
            }
        }