Microsoft Azure Cloud organizes resources by Subscription ID and Resource Groups. In this post, we will find out the methods to check if a given resource group exists, to add or create or update an azure resource group, and delete a resource group.
We can use a Bearer Token credential to authenticate, or we can use other Credentials, such as DefaultCredentials.
Here is a way to obtain the Authorization/Authentication Bearer Token in C# via a Service Principal (requires Client ID, Tenant and Password):
private static string GetBearerToken(string tenant, string clientId, string password)
{
var cc = new ClientCredential(clientId, string);
var context = new AuthenticationContext("https://login.windows.net/" + tenant);
var token = context.AcquireTokenAsync("https://management.azure.com/", cc);
if (token == null)
{
throw new InvalidOperationException("Failed to obtain the JWT Bearer Token");
}
return token.Result.AccessToken;
}
With a Valid Bearer (JWT) Token, we can use the ArmClient to apply operations (Add, Create, Update, Delete) to a Microsoft Azure Resource Group.
C# .NET Programmatically Add or Create + Update and Azure Resource Group
If the resource group exists, then it will be updated, otherwise, the resource group will be created.
/// <summary>
/// Create a Resource Group
/// </summary>
/// <param name="subscriptionId">subscriptionId</param>
/// <param name="resourceGroup">resourceGroup</param>
/// <param name="region">region string e.g. ukwest</param>
/// <param name="token">a bearer token</param>
/// <returns></returns>
public static async Task<ResourceGroupResource> CreateResourceGroup(string subscriptionId, string resourceGroup, string region, string token)
{
// First, initialize the ArmClient and get the default subscription
var armClient = new ArmClient(new BearerTokenCredential(token));
// Now we get a ResourceGroup collection for that subscription
SubscriptionResource subscription = await armClient.GetSubscriptions().GetAsync(subscriptionId);
ResourceGroupCollection rgCollection = subscription.GetResourceGroups();
ResourceGroupData rgData = new ResourceGroupData(new AzureLocation(region));
return (await rgCollection.CreateOrUpdateAsync(WaitUntil.Completed, resourceGroup, rgData)).Value;
}
C# .NET Programmatically Check if an Azure Resource Group Exists
/// <summary>
/// Check if an Resource Group Exists
/// </summary>
/// <param name="subscriptionId">subscription ID</param>
/// <param name="resourceGroup">Name of resourceGroup</param>
/// <param name="token">a bearer token</param>
/// <returns>true or false</returns>
public static async Task<bool> ResourceGroupExists(string subscriptionId, string resourceGroup, string token)
{
var armClient = new ArmClient(new BearerTokenCredential(token));
SubscriptionResource subscription = await armClient.GetSubscriptions().GetAsync(subscriptionId);
return subscription.GetResourceGroups().Exists(resourceGroup).Value;
}
C# .NET Programmatically Delete an Azure Resource Group
/// <summary>
/// Delete a Resource Group
/// </summary>
/// <param name="subscriptionId">subscriptionId</param>
/// <param name="resourceGroupName">resourceGroupName</param>
/// <param name="token">a bearer token</param>
public static async Task DeleteResourceGroup(string subscriptionId, string resourceGroupName, string token)
{
// First, initialize the ArmClient and get the default subscription
var armClient = new ArmClient(new BearerTokenCredential(token));
// Now we get a ResourceGroup collection for that subscription
SubscriptionResource subscription = await armClient.GetSubscriptions().GetAsync(subscriptionId);
ResourceGroupResource resourceGroup = await subscription.GetResourceGroups().GetAsync(resourceGroupName);
await resourceGroup.DeleteAsync(WaitUntil.Completed);
}
–EOF (The Ultimate Computing & Technology Blog) —
Last Post: Teaching Kids Programming - Number of Common Factors (Brute Force Algorithm + Greatest Common Divisor)
Next Post: Teaching Kids Programming - Recursive Algorithm to Count and Say a Number String
