public static string SetASG(string resourceId)
        {
            JObject networkInterface = GetNetworkInterface(resourceId);
            JArray  ipConfigurations;
            string  result = "";
            string  uri;

            if (networkInterface.ContainsKey("tags"))
            {
                if (networkInterface.Property("tags").Value.ToObject <JObject>().ContainsKey("ASG"))
                {
                    string ASGArray = "[{\"id\": \"" + ApplicationSecurityGroups.GetASGId(networkInterface.Property("tags").Value.ToObject <JObject>().Property("ASG").Value.ToString()) + "\"}]";
                    ipConfigurations = networkInterface["properties"].Value <JArray>("ipConfigurations");
                    JProperty asgArray    = new JProperty("applicationSecurityGroups", JArray.Parse(ASGArray));
                    string    thisTest    = networkInterface["properties"]["ipConfigurations"][0]["properties"].Last.ToString();
                    bool      appSecurity = false;
                    try{
                        appSecurity = networkInterface["properties"]["ipConfigurations"][0]["properties"]["applicationSecurityGroups"].HasValues;
                    }
                    catch (Exception e)
                    {
                    }
                    if (appSecurity)
                    {
                        networkInterface["properties"]["ipConfigurations"][0]["properties"]["applicationSecurityGroups"] = JArray.Parse(ASGArray);
                    }
                    else
                    {
                        networkInterface["properties"]["ipConfigurations"][0]["properties"].Last.AddAfterSelf(asgArray);
                    }
                    uri    = resourceId + "?api-version=" + ASG_Management.GetEnvironmentVariable("apiVersion").Split(": ")[1];
                    result = WebCalls.Put(uri, networkInterface.ToString());
                    return("SUCCESS");
                }
                else
                {
                    return("No ASG Tag");
                }
            }
            else
            {
                return("No ASG Tag");
            }
        }
        public static string SetASGFromVM(string vmResourceId)
        {
            bool    success      = true;
            string  vmApiVersion = "2019-07-01";
            string  uri          = vmResourceId + "?api-version=" + vmApiVersion;
            JObject vm           = new JObject();

            try {
                vm = JObject.Parse(WebCalls.Get(uri));
            }
            catch (Exception e) {
                success = false;
            }
            if (success)
            {
                if (vm.ContainsKey("tags"))
                {
                    if (vm.Property("tags").Value.ToObject <JObject>().ContainsKey("ASG"))
                    {
                        string    ASGArray         = "[{\"id\": \"" + ApplicationSecurityGroups.GetASGId(vm["tags"]["ASG"].ToString()) + "\"}]";
                        JProperty asgArray         = new JProperty("applicationSecurityGroups", JArray.Parse(ASGArray));
                        JObject   networkInterface = new JObject();
                        try{
                            networkInterface = GetNetworkInterface(vm["properties"]["networkProfile"]["networkInterfaces"][0]["id"].ToString());
                        }
                        catch (Exception e) {
                            return("Failed to find Network Interface");
                        }
                        bool appSecurity = false;
                        try
                        {
                            appSecurity = networkInterface["properties"]["ipConfigurations"][0]["properties"]["applicationSecurityGroups"].HasValues;
                        }
                        catch (Exception e)
                        {
                        }
                        if (appSecurity)
                        {
                            networkInterface["properties"]["ipConfigurations"][0]["properties"]["applicationSecurityGroups"] = JArray.Parse(ASGArray);
                        }
                        else
                        {
                            networkInterface["properties"]["ipConfigurations"][0]["properties"].Last.AddAfterSelf(asgArray);
                        }
                        uri = networkInterface["id"].ToString() + "?api-version=" + ASG_Management.GetEnvironmentVariable("apiVersion").Split(": ")[1];
                        try{
                            WebCalls.Put(uri, networkInterface.ToString());
                            return("SUCCESS");
                        }
                        catch (Exception e)
                        {
                            return("Failed to set Network Interface");
                        }
                    }
                    else
                    {
                        return("No ASG Tag");
                    }
                }
                else
                {
                    return("No ASG Tag");
                }
            }
            else
            {
                return("Failed to find VM");
            }
        }