From b8ec0b318f9dcb3f99da51ec7f51896bf1a5969d Mon Sep 17 00:00:00 2001 From: Patrick Farley Date: Thu, 2 Feb 2023 13:31:09 -0500 Subject: [PATCH] add new code file --- .../create_delete_resource.cs | 167 ++++++++++++++++++ 1 file changed, 167 insertions(+) create mode 100644 dotnet/AzureResourceManager/create_delete_resource.cs diff --git a/dotnet/AzureResourceManager/create_delete_resource.cs b/dotnet/AzureResourceManager/create_delete_resource.cs new file mode 100644 index 00000000..415ef4c1 --- /dev/null +++ b/dotnet/AzureResourceManager/create_delete_resource.cs @@ -0,0 +1,167 @@ +// +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Microsoft.Azure.Management.Fluent; +using Microsoft.Azure.Management.ResourceManager.Fluent; +using Microsoft.Azure.Management.ResourceManager.Fluent.Authentication; +using Microsoft.Azure.Management.CognitiveServices; +using Microsoft.Azure.Management.CognitiveServices.Models; +// + +/* Note: Install the following NuGet packages: +Microsoft.Azure.Management.CognitiveServices +Microsoft.Azure.Management.Fluent +Microsoft.Azure.Management.ResourceManager.Fluent +*/ + +namespace ConsoleApp1 +{ + class Program + { + /* + The application ID and secret of the service principal you are using to connect to the Azure Management Service. + + To create a service principal with the Azure CLI, see: + https://docs.microsoft.com/en-us/cli/azure/create-an-azure-service-principal-azure-cli?view=azure-cli-latest + To install the Azure CLI, see: + https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest + + To create a service principal with Azure PowerShell, see: + https://docs.microsoft.com/en-us/powershell/azure/create-azure-service-principal-azureps?view=azps-3.3.0 + To install Azure PowerShell, see: + https://github.com/Azure/azure-powershell + + When you create a service principal, you will see it has both an ID and an application ID. + For example, if you create a service principal with Azure PowerShell, it should look like the following: + + Secret : System.Security.SecureString + ServicePrincipalNames : {, } + ApplicationId : + ObjectType : ServicePrincipal + DisplayName : + Id : + Type : + + Be sure to use the service principal application ID, not simply the ID. + */ + + // + const string service_principal_application_id = "PASTE_YOUR_SERVICE_PRINCIPAL_APPLICATION_ID_HERE"; + const string service_principal_secret = "PASTE_YOUR_SERVICE_PRINCIPAL_SECRET_HERE"; + + /* The ID of your Azure subscription. You can find this in the Azure Dashboard under Home > Subscriptions. */ + const string subscription_id = "PASTE_YOUR_SUBSCRIPTION_ID_HERE"; + + /* The Active Directory tenant ID. You can find this in the Azure Dashboard under Home > Azure Active Directory. */ + const string tenant_id = "PASTE_YOUR_TENANT_ID_HERE"; + + /* The name of the Azure resource group in which you want to create the resource. + You can find resource groups in the Azure Dashboard under Home > Resource groups. */ + const string resource_group_name = "PASTE_YOUR_RESOURCE_GROUP_NAME_HERE"; + + /* The name of the custom subdomain to use when you create the resource. This is optional. + For example, if you create a Bing Search v7 resource with the custom subdomain name 'my-search-resource', + your resource would have the endpoint https://my-search-resource.cognitiveservices.azure.com/. + Note not all Cognitive Services allow custom subdomain names. */ + const string subdomain_name = "PASTE_YOUR_SUBDOMAIN_NAME_HERE"; + // + + // + static void list_available_kinds_skus_locations(CognitiveServicesManagementClient client) + { + + Console.WriteLine("Available SKUs:"); + var result = client.ResourceSkus.List(); + Console.WriteLine("Kind\tSKU Name\tSKU Tier\tLocations"); + foreach (var x in result) { + var locations = ""; + foreach (var region in x.Locations) + { + locations += region; + } + Console.WriteLine(x.Kind + "\t" + x.Name + "\t" + x.Tier + "\t" + locations); + }; + } + // + + // + static void list_resources(CognitiveServicesManagementClient client) + { + Console.WriteLine("Resources in resource group: " + resource_group_name); + var result = client.Accounts.ListByResourceGroup(resource_group_name); + foreach (var x in result) + { + Console.WriteLine("ID: " + x.Id); + Console.WriteLine("Name: " + x.Name); + Console.WriteLine("Type: " + x.Type); + Console.WriteLine("Kind: " + x.Kind); + Console.WriteLine(); + } + } + // + + // + static void create_resource(CognitiveServicesManagementClient client, string resource_name, string kind, string account_tier, string location) + { + Console.WriteLine("Creating resource: " + resource_name + "..."); + /* NOTE If you do not want to use a custom subdomain name, remove the customSubDomainName + property from CognitiveServicesAccountProperties. */ + CognitiveServicesAccount parameters = + new CognitiveServicesAccount(null, null, kind, location, resource_name, new CognitiveServicesAccountProperties(customSubDomainName : subdomain_name), new Sku(account_tier)); + var result = client.Accounts.Create(resource_group_name, resource_name, parameters); + Console.WriteLine("Resource created."); + Console.WriteLine("ID: " + result.Id); + Console.WriteLine("Kind: " + result.Kind); + Console.WriteLine(); + } + // + + // + static void delete_resource(CognitiveServicesManagementClient client, string resource_name) + { + Console.WriteLine("Deleting resource: " + resource_name + "..."); + client.Accounts.Delete (resource_group_name, resource_name); + + Console.WriteLine("Resource deleted."); + Console.WriteLine(); + } + // + + static void Main(string[] args) + { + /* For more information about authenticating, see: + * https://docs.microsoft.com/en-us/dotnet/azure/dotnet-sdk-azure-authenticate?view=azure-dotnet + */ + + // + var service_principal_credentials = new ServicePrincipalLoginInformation (); + service_principal_credentials.ClientId = service_principal_application_id; + service_principal_credentials.ClientSecret = service_principal_secret; + + var credentials = SdkContext.AzureCredentialsFactory.FromServicePrincipal(service_principal_application_id, service_principal_secret, tenant_id, AzureEnvironment.AzureGlobalCloud); + var client = new CognitiveServicesManagementClient(credentials); + client.SubscriptionId = subscription_id; + // + + // + // Uncomment to list all available resource kinds, SKUs, and locations for your Azure account: + //list_available_kinds_skus_locations(client); + + // Create a resource with kind TextTranslation, F0 (free tier), location global. + create_resource(client, "test_resource", "TextTranslation", "F0", "Global"); + + // List all resources for your Azure account and resource group: + list_resources(client); + + // Delete the resource. + delete_resource(client, "test_resource"); + + Console.WriteLine("Press any key to exit."); + Console.ReadKey(); + // + } + } +}