/**
 * Copyright (c) Microsoft Corporation. All rights reserved.
 * Licensed under the MIT License. See License.txt in the project root for
 * license information.
 */

package com.microsoft.azure.management.resources.fluentcore.arm;

/**
 * Enumeration of the Azure datacenter regions. See https://azure.microsoft.com/regions/
 */
public enum Region {
    // CHECKSTYLE IGNORE Javadoc FOR NEXT 21 LINES
    US_WEST("westus", "West US"),
    US_WEST2("westus2", "West US 2"),
    US_CENTRAL("centralus", "Central US"),
    US_EAST("eastus", "East US"),
    US_EAST2("eastus2", "East US 2"),
    US_NORTH_CENTRAL("northcentralus", "North Central US"),
    US_SOUTH_CENTRAL("southcentralus", "South Central US"),
    EUROPE_NORTH("northeurope", "North Europe"),
    EUROPE_WEST("westeurope", "West Europe"),
    ASIA_EAST("eastasia",  "East Asia"),
    ASIA_SOUTHEAST("southeastasia", "South East Asia"),
    JAPAN_EAST("japaneast", "Japan East"),
    JAPAN_WEST("japanwest", "Japan West"),
    BRAZIL_SOUTH("brazilsouth", "Brazil South"),
    AUSTRALIA_EAST("australiaeast", "Australia East"),
    AUSTRALIA_SOUTHEAST("australiasoutheast", "Australia Southeast"),
    INDIA_CENTRAL("centralindia", "Central India"),
    INDIA_SOUTH("southindia", "South India"),
    INDIA_WEST("westindia", "West India"),
    CHINA_NORTH("chinanorth", "China North"),
    CHINA_EAST("chinaeast", "China East");

    private final String name;
    private final String label;

    Region(String name, String label) {
        this.name = name;
        this.label = label;
    }

    @Override
    public String toString() {
        return this.name;
    }

    /**
     * Parses a label into a Region object.
     *
     * @param label the region label
     * @return the parsed region or null if there's no such region
     */
    public static Region fromLabel(String label) {
        for (Region region : Region.values()) {
            if (region.label.equalsIgnoreCase(label)) {
                return region;
            }
        }
        return null;
    }

    /**
     * Parses a name into a Region object.
     *
     * @param name the region name
     * @return the parsed region or null if there's no such region
     */
    public static Region fromName(String name) {
        for (Region region : Region.values()) {
            if (region.name.equalsIgnoreCase(name)) {
                return region;
            }
        }
        return null;
    }
}

@@ -392,17 +392,160 @@
 EXT 
-21
+48
  LINES%0A
+    /**************************************************%0A     * Azure Cloud - Americas%0A     **************************************************/%0A
     
@@ -855,98 +855,656 @@
     
-EUROPE_NORTH(%22northeurope%22, %22North Europe%22),%0A    EUROPE_WEST(%22westeurope%22, %22West Europe%22),
+US_WEST_CENTRAL(%22westcentralus%22, %22West Central US%22),%0A    CANADA_CENTRAL(%22canadacentral%22, %22Canada Central%22),%0A    CANADA_EAST(%22canadaeast%22, %22Canada East%22),%0A    BRAZIL_SOUTH(%22brazilsouth%22, %22Brazil South%22),%0A    /**************************************************%0A     * Azure Cloud - Europe%0A     **************************************************/%0A    EUROPE_NORTH(%22northeurope%22, %22North Europe%22),%0A    EUROPE_WEST(%22westeurope%22, %22West Europe%22),%0A    UK_SOUTH(%22uksouth%22, %22UK South%22),%0A    UK_WEST(%22ukwest%22, %22UK West%22),%0A    /**************************************************%0A     * Azure Cloud - Asia%0A     **************************************************/
 %0A   
@@ -1687,57 +1687,8 @@
 %22),%0A
-    BRAZIL_SOUTH(%22brazilsouth%22, %22Brazil South%22),%0A
     
@@ -1957,89 +1957,732 @@
     
-CHINA_NORTH(%22chinanorth%22, %22China North%22),%0A    CHINA_EAST(%22chinaeast%22, %22China East
+/**************************************************%0A     * Azure China Cloud%0A     **************************************************/%0A    CHINA_NORTH(%22chinanorth%22, %22China North%22),%0A    CHINA_EAST(%22chinaeast%22, %22China East%22),%0A    /**************************************************%0A     * Azure German Cloud%0A     **************************************************/%0A    GERMANY_CENTRAL(%22germanycentral%22, %22Germany Central%22),%0A    GERMANY_NORTHEAST(%22germanynortheast%22, %22Germany Northeast%22),%0A    /**************************************************%0A     * Azure Government Cloud%0A     **************************************************/%0A    GOV_US_VIRGINIA(%22usgoveast%22, %22US Gov Virginia%22),%0A    GOV_US_IOWA(%22usgovcentral%22, %22US Gov Iowa
 %22);%0A

Add all GA regions