dimonser
dimonser

Reputation: 683

How to create a new Microsoft Azure HybridConnection via code?

I am using HybridConnectionNamespace and create multiple HybridConnections via Azure portal. The question is quite simple. How can I create it programmatically (Azure SDK, PowerShell scripts, etc.)?

enter image description here

Upvotes: 0

Views: 742

Answers (2)

Brando Zhang
Brando Zhang

Reputation: 28247

According to this article, there are currently two different ways to create a relay namespace.

Azure portal and Azure Resource Manager templates

If you want to create it programmatically, I suggest you could use azure rest api to send the deployment templates by codes.

More details, you could refer to this article and codes:

Notice: If you want to use rest api to send request to azure, you need firstly create an Azure Active Directory application and service principal. After you generate the service principal, you could get the applicationid,access key and talentid. More details, you could refer to this article.

Rest Body(json.txt):

Notice: You need change the parameters' name and location value.

{"properties":{"mode":"incremental","debugSetting":{"detailLevel":"RequestContent, ResponseContent"},"parameters":{"name":{"value":"yourrelayname"},"location":{"value":"location"}},"template":{"$schema":"http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#","contentVersion":"1.0.0.0","parameters":{"name":{"type":"string"},"location":{"type":"string"}},"resources":[{"apiVersion":"2016-07-01","name":"[parameters('name')]","location":"[parameters('location')]","type":"Microsoft.Relay/namespaces","properties":{"namespaceType":"Relay"}}]}}}

Code:

   string body = File.ReadAllText(@"D:\json.txt");
            // Display the file contents to the console. Variable text is a string.
            string tenantId = "tenantId";
            string clientId = "clientId(applicationid)";
            string clientSecret = "applicationSecret";
            string subscription = "subscriptionId";
            string resourcegroup = "Youresourcegroup";

            string authContextURL = "https://login.windows.net/" + tenantId;
            var authenticationContext = new AuthenticationContext(authContextURL);
            var credential = new ClientCredential(clientId, clientSecret);
            var result = authenticationContext.AcquireTokenAsync(resource: "https://management.azure.com/", clientCredential: credential).Result;
            if (result == null)
            {
                throw new InvalidOperationException("Failed to obtain the JWT token");
            }
            string token = result.AccessToken;
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(string.Format("https://management.azure.com/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.Resources/deployments/Microsoft.Relay?api-version=2016-07-01", subscription, resourcegroup));
            request.Method = "PUT";
            request.Headers["Authorization"] = "Bearer " + token;
            request.ContentType = "application/json";

            try
            {
                using (var streamWriter = new StreamWriter(request.GetRequestStream()))
                {
                    streamWriter.Write(body);
                    streamWriter.Flush();
                    streamWriter.Close();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            //Get the response
            var httpResponse = (HttpWebResponse)request.GetResponse();
            Console.WriteLine(httpResponse.StatusCode);

            Console.ReadLine();

Result:

enter image description here

Upvotes: 2

Manuel Ruiz
Manuel Ruiz

Reputation: 21

Use PowerShell CmdLets | Hybrid Connection Manager:

Add-HybridConnection

Update-HybridConnection

Remove-HybridConnection

Get-HybridConnection

Set-HybridConnectionManagerConfiguration

https://msdn.microsoft.com/en-us/library/azure/dn789178.aspx

GoodLuck

Upvotes: 0

Related Questions