public async Task CreateLinuxVirtualMachineWithManagedDiskTest() { // SET PARAMETERS var location = Environment.GetEnvironmentVariable("AZURE_LOCATION"); var baseUriString = Environment.GetEnvironmentVariable("AZURE_BASE_URL"); var resourceGroupName = Environment.GetEnvironmentVariable("AZURE_RESOURCEGROUP"); var servicePrincipalId = Environment.GetEnvironmentVariable("AZURE_CLIENT_ID"); var servicePrincipalSecret = Environment.GetEnvironmentVariable("AZURE_CLIENT_SECRET"); var azureResourceId = Environment.GetEnvironmentVariable("AZURE_RESOURCE_ID"); var tenantId = Environment.GetEnvironmentVariable("AZURE_TENANT_ID"); var subscriptionId = Environment.GetEnvironmentVariable("AZURE_SUBSCRIPTION_ID"); var vmName = Environment.GetEnvironmentVariable("AZURE_VM_NAME"); var vnetName = Environment.GetEnvironmentVariable("AZURE_VNET_NAME"); var subnetNames = Environment.GetEnvironmentVariable("AZURE_SUBNET_NAMES"); var subnetAddresses = Environment.GetEnvironmentVariable("AZURE_SUBNET_ADDRESSES"); var vnetAddresses = Environment.GetEnvironmentVariable("AZURE_VNET_ADDRESSES"); var ipName = Environment.GetEnvironmentVariable("AZURE_IP_NAME"); var nicName = Environment.GetEnvironmentVariable("AZURE_NIC_NAME"); var diskName = Environment.GetEnvironmentVariable("AZURE_DISK_NAME"); var credentials = new CustomLoginCredentials(servicePrincipalId, servicePrincipalSecret, azureResourceId, tenantId); // SET CONTROLLER var resourceController = new ResourcesController(new Uri(baseUriString), credentials, subscriptionId); var networkController = new NetworkController(new Uri(baseUriString), credentials, subscriptionId); var computerController = new ComputeController(new Uri(baseUriString), credentials, subscriptionId); // CREATE RESOURCE GROUP var resourceGroup = await resourceController.CreateResourceGroup(resourceGroupName, location); // CREATE RESOURCE GROUP VALIDATION Assert.Equal("OK", resourceGroup.Response.ReasonPhrase, ignoreCase: true); Assert.NotNull(resourceGroup.Body); // CREATE VNET var vnetAddressSpaces = vnetAddresses.Split(';'); var subNames = subnetNames.Split(';'); var suAddresses = subnetAddresses.Split(';'); var subnets = new Dictionary <string, string>(); for (int i = 0; i < subNames.Length; i++) { subnets.Add(subNames[i], suAddresses[i]); } var vnet = await networkController.CreateVirtualNetwork(vnetName, vnetAddressSpaces, resourceGroupName, location, subnets); // CREATE VNET VALIDATION Assert.Equal("OK", vnet.Response.ReasonPhrase, ignoreCase: true); Assert.NotNull(vnet.Body); // CREATE IP var ip = await networkController.CreatePublicIpAddress(ipName, resourceGroupName, location); // CREATE IP VALIDATION Assert.Equal("OK", ip.Response.ReasonPhrase, ignoreCase: true); Assert.NotNull(ip.Body); // CREATE NIC var nic = await networkController.CreateNetworkInterface(nicName, resourceGroupName, vnetName, subNames[0], ipName, location); // CREATE NIC VALIDATION Assert.Equal("OK", nic.Response.ReasonPhrase, ignoreCase: true); Assert.NotNull(nic.Body); Assert.Equal("Succeeded", nic.Body.ProvisioningState, ignoreCase: true); // CREATE DISK var disk = await computerController.CreateDisk(resourceGroupName, diskName, 1, location); // CREATE DISK VALIDATION Assert.Equal("OK", disk.Response.ReasonPhrase, ignoreCase: true); Assert.NotNull(disk.Body); Assert.Equal("Succeeded", disk.Body.ProvisioningState.ToString(), ignoreCase: true); // CREATE VM var vm = await computerController.CreateVirtialMachineWithManagedDisk(resourceGroupName, vmName, nic.Body.Id, disk.Body.Id, location); // VALIDATION Assert.Equal("OK", vm.Response.ReasonPhrase, ignoreCase: true); Assert.NotNull(vm.Body); Assert.Equal("Succeeded", vm.Body.ProvisioningState.ToString(), ignoreCase: true); }
static void Main(string[] args) { //Set Azure environment variables var azureLocation = "westus"; var azureBaseUrl = "https://management.azure.com/"; var azureResourceGroupName = "test-hybrid-dotnet-azure-resourcegroup"; var azureCredentials = SdkContext.AzureCredentialsFactory.FromFile(Environment.GetEnvironmentVariable("AZURE_AUTH_LOCATION")); var azureVnetName = Environment.GetEnvironmentVariable("AZURE_VNET_NAME"); var azureSubnetName = Environment.GetEnvironmentVariable("AZURE_SUBNET_NAMES"); var azureSubnetAddressSpace = Environment.GetEnvironmentVariable("AZURE_SUBNET_ADDRESSES"); var azureVnetAddress = Environment.GetEnvironmentVariable("AZURE_VNET_ADDRESSES"); var azureIpName = Environment.GetEnvironmentVariable("AZURE_IP_NAME"); var azureNicName = Environment.GetEnvironmentVariable("AZURE_NIC_NAME"); var azureVmName = Environment.GetEnvironmentVariable("AZURE_VM_NAME"); //Set Azure stack environment variables var stackLocation = "redmond"; var stackResourceGroupName = "test-hybrid-dotnet-stack-resourcegroup"; var stackBaseUriString = Environment.GetEnvironmentVariable("AZURE_BASE_URL"); var stackServicePrincipalId = Environment.GetEnvironmentVariable("AZURE_CLIENT_ID"); var stackServicePrincipalSecret = Environment.GetEnvironmentVariable("AZURE_CLIENT_SECRET"); var stackResourceId = Environment.GetEnvironmentVariable("AZURE_RESOURCE_ID"); var stackTenantId = Environment.GetEnvironmentVariable("AZURE_TENANT_ID"); var stackSubscriptionId = Environment.GetEnvironmentVariable("AZURE_SUBSCRIPTION_ID"); var stackCredentials = new CustomLoginCredentials( stackServicePrincipalId, stackServicePrincipalSecret, stackResourceId, stackTenantId); var stackDiskName = Environment.GetEnvironmentVariable("AZURE_DISK_NAME"); //Set controllers var stackResourceController = new ResourcesController(new Uri(stackBaseUriString), stackCredentials, stackSubscriptionId); var azureResourceController = new ResourcesController(new Uri(azureBaseUrl), azureCredentials, "azure"); var azureNetworkController = new NetworkController(new Uri(azureBaseUrl), azureCredentials, "azure"); var stackComputeController = new ComputeController(new Uri(stackBaseUriString), stackCredentials, stackSubscriptionId); var azureComputeController = new ComputeController(new Uri(azureBaseUrl), azureCredentials, "azure"); //Create resource group in Azure var azureRgTask = azureResourceController.CreateResourceGroup(azureResourceGroupName, azureLocation); azureRgTask.Wait(); //Create resource group in Azure Stack var stackRgTask = stackResourceController.CreateResourceGroup(stackResourceGroupName, stackLocation); stackRgTask.Wait(); //Create NIC on Azure var nicTask = azureNetworkController.CreateNetworkInterface( azureNicName, azureResourceGroupName, azureVnetName, azureVnetAddress, azureSubnetName, azureSubnetAddressSpace, azureIpName, azureLocation); nicTask.Wait(); //Create disk on Azure Stack var diskTask = stackComputeController.CreateDisk( stackResourceGroupName, stackDiskName, 1, stackLocation); diskTask.Wait(); //Create a VM on Azure with its data on Azure Stack var vmTask = azureComputeController.CreateVirtialMachineWithManagedDisk( azureResourceGroupName, azureVmName, nicTask.Result.Body, diskTask.Result.Body, azureLocation); vmTask.Wait(); }