Dmitry Porotnikov / C#: Working with Azure IMDS

Created Tue, 22 Aug 2023 13:58:28 +0000 Modified Tue, 22 Aug 2023 13:58:28 +0000
145 Words

C#: Working with Azure IMDS

class Program
{
    static void Main(string[] args)
    {
        //Identify Storage Type Using Azure Metadata Service
        string url = "http://169.254.169.254/metadata/instance?api-version=2021-02-01";
        WebClient client = new WebClient();
        client.Headers.Add("Metadata", "true");

        try
        {
        string response = client.DownloadString(url);
        dynamic data = JsonConvert.DeserializeObject(response);

        string storageProfile = data.compute.storageProfile.ToString();
        dynamic storageData = JsonConvert.DeserializeObject(storageProfile);

        string osDiskName = storageData.osDisk.name;
        string osDiskCaching = storageData.osDisk.caching;
        string osDiskSize = storageData.osDisk.diskSizeGB;
        string writeAcceleratorEnabled = storageData.osDisk.writeAcceleratorEnabled;

        string datadisks = storageData.dataDisks.ToString();
        

        Console.WriteLine("OS Disk Name: " + osDiskName);
        Console.WriteLine("OS Disk Caching: " + osDiskCaching);
        Console.WriteLine("OS Disk Size: " + osDiskSize);
        Console.WriteLine("writeAcceleratorEnabled: " + writeAcceleratorEnabled);

        Console.WriteLine("Data disks: " + datadisks); //Parse Datadisks and check caching / write acceleration / SKU type same as OS disk above, by deserializing JSON response.


        }
        catch (WebException ex)
        {
            //If we are running on non Azure VM or there are networking restrictions the connection will timeout:
            Console.WriteLine("Error: " + ex.Message);
        }
    }
}