Как получить список пустых групп ресурсов с помощью Azure Mgmt SDK fluent

Я использую https://www.nuget.org/packages/Microsoft.Azure.Management.Fluent для получения ресурсов в Azure программно (веб-приложение C # .NET-Core) и попытался получить информацию о ресурсах, предоставив участников службы, как показано ниже ...

 string subscriptionId="XXX"; 
       AzureCredentials cred = new 
                 AzureCredentialsFactory().FromServicePrincipal(UIConstants.ClientID, 
                 UIConstants.Secret, UIConstants.Tenant,AzureEnvironment.AzureGlobalCloud);                      
                
        var azure = Azure.Configure()
                         .WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic) 
                         .Authenticate(cred) 
                         .WithSubscription(subscriptionId);

Как получить список пустых групп ресурсов с помощью Azure Mgmt SDK, свободно работающего с dotnetcore, C # .net? Menas Resource Groups, которые не содержат никаких ресурсов Azure

Пожалуйста, совет по вышеизложенному.

Спасибо,


person Anirban Goswami    schedule 04.08.2020    source источник


Ответы (1)


Встроенного метода нет, вам нужно написать код, чтобы проверить, есть ли какие-либо ресурсы в группе ресурсов.

Вот пример кода, и он может перечислить все пустые группы ресурсов на моей стороне:

using Microsoft.Azure.Management.Fluent;
using Microsoft.Azure.Management.ResourceManager.Fluent;
using Microsoft.Azure.Management.ResourceManager.Fluent.Authentication;
using Microsoft.Azure.Management.ResourceManager.Fluent.Core;
using System;

namespace ConsoleApp5
{
    class Program
    {
        static void Main(string[] args)
        {
            string subscriptionId = "xxx";
            string clientId = "xxx";
            string tenantId = "xxx";
            string clientSecret = "xxx";

            AzureCredentials cred = new AzureCredentialsFactory()
                .FromServicePrincipal(
                clientId,
                clientSecret,
                tenantId,
                AzureEnvironment.AzureGlobalCloud
                );

            var azure = Azure.Configure()
                             .WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic)
                             .Authenticate(cred)
                             .WithSubscription(subscriptionId);


            RestClient restClient = RestClient.Configure()
                                  .WithEnvironment(AzureEnvironment.AzureGlobalCloud)
                                  .WithCredentials(cred)
                                  .WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic)
                                  .Build();

            ResourceManagementClient client = new ResourceManagementClient(restClient);
            client.SubscriptionId = subscriptionId;          

            //list all resource groups
            var rgs = azure.ResourceGroups.List();

            foreach (var r in rgs)
            {              
                
                var resources = client.Resources.ListByResourceGroupAsync(r.Name).Result;

                //initiate a resource number as 0
                int number_of_resources = 0;

                //check if there are any resources in the resource group
                foreach (var resource in resources)
                {
                    number_of_resources++;
                    break;                   
                }

                //if the resources number is 0 in the resource group, then print out the empty resource group name
                if (number_of_resources == 0)
                {
                    Console.WriteLine($"the resource group: {r.Name} is empty");
                }
            }

            Console.WriteLine("**completed**");
            Console.ReadLine();
        }
    }
}
person Ivan Yang    schedule 05.08.2020
comment
Большое спасибо @Ivan Yang. - person Anirban Goswami; 05.08.2020