简体   繁体   中英

How to get list of Empty Resource Groups by using of Azure Mgmt SDK fluent

I am using https://www.nuget.org/packages/Microsoft.Azure.Management.Fluent for getting resources in Azure with programmatically(C# .NET-Core Web app) and tried to get resources information by providing service principals as below...

 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);

How to get list of Empty Resource Groups by using of Azure Mgmt SDK fluent with do.netcore,C#.net? menas Resource Groups that dont hv any azure resources

Pls, advice on above.

Thanks,

There is no built-in method, you need to write code to check if there are any resources in a resource group.

Here is the sample code, and it can list all the empty resource groups at my side:

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();
        }
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM