private bool IsDiscoveryNeeded(string vmName, string rgName, out CSMContainerResponse container)
        {
            bool isDiscoveryNeed = false;
            ContainerQueryParameters parameters = new ContainerQueryParameters()
            {
                ContainerType = ManagedContainerType.IaasVM.ToString(),
                FriendlyName  = vmName,
                Status        = AzureBackupContainerRegistrationStatus.NotRegistered.ToString(),
            };

            //First check if container is discovered or not
            var containers = AzureBackupClient.ListContainers(Vault.ResourceGroupName, Vault.Name, parameters);

            WriteDebug(String.Format(Resources.ContainerCountFromService, containers.Count()));
            if (containers.Count() == 0)
            {
                //Container is not discover
                WriteDebug(Resources.ContainerNotDiscovered);
                container       = null;
                isDiscoveryNeed = true;
            }

            else
            {
                //We can have multiple container with same friendly name.
                container = containers.Where(c => ContainerHelpers.GetRGNameFromId(c.Properties.ParentContainerId).Equals(rgName, StringComparison.OrdinalIgnoreCase)).FirstOrDefault();
                if (container == null)
                {
                    //Container is not in list of registered container
                    WriteDebug(String.Format(Resources.DesiredContainerNotFound));
                    isDiscoveryNeed = true;
                }
            }
            return(isDiscoveryNeed);
        }
Example #2
0
        private List <AzureRMBackupContainer> GetManagedContainers(string resourceGroupName, string resourceName)
        {
            List <AzureRMBackupContainer> managedContainers = new List <AzureRMBackupContainer>();

            ContainerQueryParameters parameters = new ContainerQueryParameters();

            parameters.ContainerType = ManagedContainerType.IaasVM.ToString();
            parameters.FriendlyName  = Name;
            if (Status != 0)
            {
                parameters.Status = Status.ToString();
            }

            List <CSMContainerResponse> containers = new List <CSMContainerResponse>();

            containers.AddRange(AzureBackupClient.ListContainers(resourceGroupName, resourceName, parameters));
            WriteDebug(string.Format(Resources.FetchedContainer, containers.Count()));

            // When resource group name is specified, remove all containers whose resource group name
            // doesn't match the given resource group name
            if (!string.IsNullOrEmpty(ManagedResourceGroupName))
            {
                containers.RemoveAll(container =>
                {
                    string rgName = ContainerHelpers.GetRGNameFromId(container.Properties.ParentContainerId);
                    return(rgName != ManagedResourceGroupName);
                });
                WriteDebug(string.Format(Resources.ContainerCountAfterFilter, containers.Count));
            }

            // TODO: Container friendly name is not captures in Container response
            // BUG: Friendly name was previously assigned to ResourceName (vault name)
            managedContainers.AddRange(containers.ConvertAll(container =>
            {
                return(new AzureRMBackupContainer(Vault, container));
            }));

            return(managedContainers);
        }