internal static NetworkSecurityGroupListResult DeserializeNetworkSecurityGroupListResult(JsonElement element) { Optional <IReadOnlyList <NetworkSecurityGroupData> > value = default; Optional <string> nextLink = default; foreach (var property in element.EnumerateObject()) { if (property.NameEquals("value")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } List <NetworkSecurityGroupData> array = new List <NetworkSecurityGroupData>(); foreach (var item in property.Value.EnumerateArray()) { array.Add(NetworkSecurityGroupData.DeserializeNetworkSecurityGroupData(item)); } value = array; continue; } if (property.NameEquals("nextLink")) { nextLink = property.Value.GetString(); continue; } } return(new NetworkSecurityGroupListResult(Optional.ToList(value), nextLink.Value)); }
NetworkSecurityGroup IOperationSource <NetworkSecurityGroup> .CreateResult(Response response, CancellationToken cancellationToken) { using var document = JsonDocument.Parse(response.ContentStream); var data = NetworkSecurityGroupData.DeserializeNetworkSecurityGroupData(document.RootElement); return(new NetworkSecurityGroup(_armClient, data)); }
public async Task UsageTest() { var subscription = await ArmClient.GetDefaultSubscriptionAsync(); string resourceGroupName = Recording.GenerateAssetName("csmrg"); string location = TestEnvironment.Location; var resourceGroup = await CreateResourceGroup(resourceGroupName); string networkSecurityGroupName = Recording.GenerateAssetName("azsmnet"); NetworkSecurityGroupData networkSecurityGroup = new NetworkSecurityGroupData() { Location = location, }; // Put Nsg var networkSecurityGroupCollection = resourceGroup.GetNetworkSecurityGroups(); var putNsgResponseOperation = await networkSecurityGroupCollection.CreateOrUpdateAsync(WaitUntil.Completed, networkSecurityGroupName, networkSecurityGroup); Response <NetworkSecurityGroupResource> putNsgResponse = await putNsgResponseOperation.WaitForCompletionAsync();; Assert.AreEqual("Succeeded", putNsgResponse.Value.Data.ProvisioningState.ToString()); Response <NetworkSecurityGroupResource> getNsgResponse = await networkSecurityGroupCollection.GetAsync(networkSecurityGroupName); // Query for usages AsyncPageable <NetworkUsage> usagesResponseAP = subscription.GetUsagesAsync(getNsgResponse.Value.Data.Location.Replace(" ", string.Empty)); List <NetworkUsage> usagesResponse = await usagesResponseAP.ToEnumerableAsync(); // Verify that the strings are populated Assert.NotNull(usagesResponse); Assert.True(usagesResponse.Any()); foreach (NetworkUsage usage in usagesResponse) { Assert.True(usage.Limit > 0); Assert.NotNull(usage.Name); Assert.True(!string.IsNullOrEmpty(usage.Name.LocalizedValue)); Assert.True(!string.IsNullOrEmpty(usage.Name.Value)); } }
protected async Task initialize() { ArmClient armClient = new ArmClient(new DefaultAzureCredential()); Subscription subscription = await armClient.GetDefaultSubscriptionAsync(); ResourceGroupCollection rgCollection = subscription.GetResourceGroups(); // With the collection, we can create a new resource group with an specific name string rgName = "myRgName"; AzureLocation location = AzureLocation.WestUS2; ResourceGroup resourceGroup = await rgCollection.CreateOrUpdate(true, rgName, new ResourceGroupData(location)).WaitForCompletionAsync(); this.resourceGroup = resourceGroup; //1. create NetworkSecurityGroup NetworkSecurityGroupData networkSecurityGroupData = new NetworkSecurityGroupData() { Location = AzureLocation.WestUS2, }; string networkSecurityGroupName = "myNetworkSecurityGroup"; var networkSecurityGroup = await resourceGroup.GetNetworkSecurityGroups().CreateOrUpdateAsync(true, networkSecurityGroupName, networkSecurityGroupData); //2. create Route table RouteTableData routeTableData = new RouteTableData() { Location = AzureLocation.WestUS2, }; string routeTableName = "myRouteTable"; var routeTable = await resourceGroup.GetRouteTables().CreateOrUpdateAsync(true, routeTableName, routeTableData); //3. create vnet(subnet binding NetworkSecurityGroup and RouteTable) var vnetData = new VirtualNetworkData() { Location = AzureLocation.WestUS2, AddressSpace = new AddressSpace() { AddressPrefixes = { "10.10.0.0/16", } }, Subnets = { new SubnetData() { Name = "ManagedInstance", AddressPrefix = "10.10.2.0/24", Delegations = { new Delegation() { ServiceName = "Microsoft.Sql/managedInstances", Name = "Microsoft.Sql/managedInstances", Type = "Microsoft.Sql" } }, RouteTable = new RouteTableData() { Id = routeTable.Value.Data.Id.ToString() }, NetworkSecurityGroup = new NetworkSecurityGroupData() { Id = networkSecurityGroup.Value.Data.Id.ToString() }, } }, }; string vnetName = "myVnet"; var vnet = await resourceGroup.GetVirtualNetworks().CreateOrUpdateAsync(true, vnetName, vnetData); string subnetId = $"{vnet.Value.Data.Id}/subnets/ManagedInstance"; //4. create ManagedInstance ManagedInstanceData data = new ManagedInstanceData(AzureLocation.WestUS2) { AdministratorLogin = "******", AdministratorLoginPassword = "******", SubnetId = subnetId, PublicDataEndpointEnabled = false, MaintenanceConfigurationId = "/subscriptions/0000-0000-0000-0000/providers/Microsoft.Maintenance/publicMaintenanceConfigurations/SQL_Default", ProxyOverride = new ManagedInstanceProxyOverride("Proxy") { }, TimezoneId = "UTC", StorageAccountType = new StorageAccountType("GRS"), ZoneRedundant = false, }; string managedInstanceName = "myManagedInstance"; var managedInstanceLro = await resourceGroup.GetManagedInstances().CreateOrUpdateAsync(true, managedInstanceName, data); managedInstance = managedInstanceLro.Value; }
public async Task CreateOrUpdate() { #region Snippet:Managing_Sql_CreateAManagedInstance //1. create NetworkSecurityGroup NetworkSecurityGroupData networkSecurityGroupData = new NetworkSecurityGroupData() { Location = AzureLocation.WestUS2, }; string networkSecurityGroupName = "myNetworkSecurityGroup"; var networkSecurityGroup = await resourceGroup.GetNetworkSecurityGroups().CreateOrUpdateAsync(WaitUntil.Completed, networkSecurityGroupName, networkSecurityGroupData); //2. create Route table RouteTableData routeTableData = new RouteTableData() { Location = AzureLocation.WestUS2, }; string routeTableName = "myRouteTable"; var routeTable = await resourceGroup.GetRouteTables().CreateOrUpdateAsync(WaitUntil.Completed, routeTableName, routeTableData); //3. create vnet(subnet binding NetworkSecurityGroup and RouteTable) var vnetData = new VirtualNetworkData() { Location = AzureLocation.WestUS2, Subnets = { new SubnetData() { Name = "ManagedInstance", AddressPrefix = "10.10.2.0/24", Delegations = { new Delegation() { ServiceName = "Microsoft.Sql/managedInstances", Name = "Microsoft.Sql/managedInstances", ResourceType = "Microsoft.Sql" } }, RouteTable = new RouteTableData() { Id = routeTable.Value.Data.Id }, NetworkSecurityGroup = new NetworkSecurityGroupData() { Id = networkSecurityGroup.Value.Data.Id }, } }, }; vnetData.AddressPrefixes.Add("10.10.0.0/16"); string vnetName = "myVnet"; var vnet = await resourceGroup.GetVirtualNetworks().CreateOrUpdateAsync(WaitUntil.Completed, vnetName, vnetData); string subnetId = $"{vnet.Value.Data.Id}/subnets/ManagedInstance"; //4. create ManagedInstance ManagedInstanceData data = new ManagedInstanceData(AzureLocation.WestUS2) { AdministratorLogin = "******", AdministratorLoginPassword = "******", SubnetId = subnetId, PublicDataEndpointEnabled = false, MaintenanceConfigurationId = "/subscriptions/0000-0000-0000-0000/providers/Microsoft.Maintenance/publicMaintenanceConfigurations/SQL_Default", ProxyOverride = new ManagedInstanceProxyOverride("Proxy") { }, TimezoneId = "UTC", ZoneRedundant = false, }; string managedInstanceName = "myManagedInstance"; var managedInstanceLro = await resourceGroup.GetManagedInstances().CreateOrUpdateAsync(WaitUntil.Completed, managedInstanceName, data); ManagedInstanceResource managedInstance = managedInstanceLro.Value; #endregion }
/// <summary> /// create a defaut managed instance. /// defaut vnet AddressPrefixes = 10.10.0.0/16 /// </summary> /// <param name="managedInstanceName"></param> /// <param name="location"></param> /// <param name="resourceGroup"></param> /// <returns></returns> protected async Task <ManagedInstance> CreateDefaultManagedInstance(string managedInstanceName, string networkSecurityGroupName, string routeTableName, string vnetName, Location location, ResourceGroup resourceGroup) { //1. create NetworkSecurityGroup NetworkSecurityGroupData networkSecurityGroupData = new NetworkSecurityGroupData() { Location = location, }; var networkSecurityGroup = await resourceGroup.GetNetworkSecurityGroups().CreateOrUpdateAsync(networkSecurityGroupName, networkSecurityGroupData); //2. create Route table RouteTableData routeTableData = new RouteTableData() { Location = location, }; var routeTable = await resourceGroup.GetRouteTables().CreateOrUpdateAsync(routeTableName, routeTableData); //3. create vnet(subnet bind NetworkSecurityGroup and RouteTable) var vnetData = new VirtualNetworkData() { Location = location, AddressSpace = new AddressSpace() { AddressPrefixes = { "10.10.0.0/16", } }, Subnets = { new SubnetData() { Name = "subnet01", AddressPrefix = "10.10.1.0/24", }, new SubnetData() { Name = "ManagedInstance", AddressPrefix = "10.10.2.0/24", Delegations = { new Delegation() { ServiceName = "Microsoft.Sql/managedInstances", Name = "Microsoft.Sql/managedInstances", Type = "Microsoft.Sql" } }, RouteTable = new RouteTableData() { Id = routeTable.Value.Data.Id.ToString() }, NetworkSecurityGroup = new NetworkSecurityGroupData() { Id = networkSecurityGroup.Value.Data.Id.ToString() }, } }, }; var vnet = await resourceGroup.GetVirtualNetworks().CreateOrUpdateAsync(vnetName, vnetData); string subnetId = $"{vnet.Value.Data.Id}/subnets/ManagedInstance"; //4. create ManagedInstance ManagedInstanceData data = new ManagedInstanceData(location) { AdministratorLogin = $"admin-{managedInstanceName}", AdministratorLoginPassword = CreateGeneralPassword(), SubnetId = subnetId, PublicDataEndpointEnabled = false, MaintenanceConfigurationId = "/subscriptions/db1ab6f0-4769-4b27-930e-01e2ef9c123c/providers/Microsoft.Maintenance/publicMaintenanceConfigurations/SQL_Default", ProxyOverride = new ManagedInstanceProxyOverride("Proxy") { }, TimezoneId = "UTC", StorageAccountType = new StorageAccountType("GRS"), ZoneRedundant = false, }; var managedInstanceLro = await resourceGroup.GetManagedInstances().CreateOrUpdateAsync(managedInstanceName, data); var managedInstance = managedInstanceLro.Value; return(managedInstance); }
public async Task FlowLogApiTest() { string resourceGroupName = Recording.GenerateAssetName("azsmnet"); string location = "eastus2euap"; //string workspaceLocation = "East US"; var resourceGroup = await CreateResourceGroup(resourceGroupName, location); //Create network security group string networkSecurityGroupName = Recording.GenerateAssetName("azsmnet"); var networkSecurityGroup = new NetworkSecurityGroupData() { Location = location, }; // Put Nsg var securityGroupCollection = resourceGroup.GetNetworkSecurityGroups(); var putNsgResponseOperation = await securityGroupCollection.CreateOrUpdateAsync(true, networkSecurityGroupName, networkSecurityGroup); await putNsgResponseOperation.WaitForCompletionAsync();; // Get NSG Response <NetworkSecurityGroup> getNsgResponse = await securityGroupCollection.GetAsync(networkSecurityGroupName); string networkWatcherName = Recording.GenerateAssetName("azsmnet"); var properties = new NetworkWatcherData { Location = location }; //Create network Watcher var networkWatcherCollection = resourceGroup.GetNetworkWatchers(); await networkWatcherCollection.CreateOrUpdateAsync(true, networkWatcherName, properties); //Create storage string storageName = Recording.GenerateAssetName("azsmnet"); //var storageParameters = new StorageAccountCreateParameters(new Sku(SkuName.StandardLRS), Kind.Storage, location); //Operation<StorageAccount> storageAccountOperation = await StorageManagementClient.StorageAccounts.CreateAsync(resourceGroupName, storageName, storageParameters); //Response<StorageAccount> storageAccount = await storageAccountOperation.WaitForCompletionAsync();; //create workspace string workspaceName = Recording.GenerateAssetName("azsmnet"); //TODO:Need OperationalInsightsManagementClient SDK //var workSpaceParameters = new Workspace() //{ // Location = workspaceLocation //}; //var workspace = operationalInsightsManagementClient.Workspaces.CreateOrUpdate(resourceGroupName, workspaceName, workSpaceParameters); //FlowLogInformation configParameters = new FlowLogInformation(getNsgResponse.Value.Id, storageAccount.Value.Id, true) //{ // RetentionPolicy = new RetentionPolicyParameters // { // Days = 5, // Enabled = true // }, // FlowAnalyticsConfiguration = new TrafficAnalyticsProperties() // { // NetworkWatcherFlowAnalyticsConfiguration = new TrafficAnalyticsConfigurationProperties() // { // Enabled = true, // //WorkspaceId = workspace.CustomerId, // //WorkspaceRegion = workspace.Location, // //WorkspaceResourceId = workspace.Id // } // } //}; //configure flowlog and TA //var configureFlowLog1Operation = await networkWatcherCollection.Get(networkWatcherName).Value.SetFlowLogConfigurationAsync(configParameters); //await configureFlowLog1Operation.WaitForCompletionAsync();; //var queryFlowLogStatus1Operation = await networkWatcherCollection.Get(networkWatcherName).Value.GetFlowLogStatusAsync(new FlowLogStatusParameters(getNsgResponse.Value.Id)); //Response<FlowLogInformation> queryFlowLogStatus1 = await queryFlowLogStatus1Operation.WaitForCompletionAsync();; ////check both flowlog and TA config and enabled status //Assert.AreEqual(queryFlowLogStatus1.Value.TargetResourceId, configParameters.TargetResourceId); //Assert.True(queryFlowLogStatus1.Value.Enabled); //Assert.AreEqual(queryFlowLogStatus1.Value.StorageId, configParameters.StorageId); //Assert.AreEqual(queryFlowLogStatus1.Value.RetentionPolicy.Days, configParameters.RetentionPolicy.Days); //Assert.AreEqual(queryFlowLogStatus1.Value.RetentionPolicy.Enabled, configParameters.RetentionPolicy.Enabled); //Assert.True(queryFlowLogStatus1.Value.FlowAnalyticsConfiguration.NetworkWatcherFlowAnalyticsConfiguration.Enabled); //Assert.AreEqual(queryFlowLogStatus1.Value.FlowAnalyticsConfiguration.NetworkWatcherFlowAnalyticsConfiguration.WorkspaceId, // configParameters.FlowAnalyticsConfiguration.NetworkWatcherFlowAnalyticsConfiguration.WorkspaceId); //Assert.AreEqual(queryFlowLogStatus1.Value.FlowAnalyticsConfiguration.NetworkWatcherFlowAnalyticsConfiguration.WorkspaceRegion, // configParameters.FlowAnalyticsConfiguration.NetworkWatcherFlowAnalyticsConfiguration.WorkspaceRegion); //Assert.AreEqual(queryFlowLogStatus1.Value.FlowAnalyticsConfiguration.NetworkWatcherFlowAnalyticsConfiguration.WorkspaceResourceId, // configParameters.FlowAnalyticsConfiguration.NetworkWatcherFlowAnalyticsConfiguration.WorkspaceResourceId); ////disable TA //configParameters.FlowAnalyticsConfiguration.NetworkWatcherFlowAnalyticsConfiguration.Enabled = false; //var configureFlowLog2Operation = await networkWatcherCollection.Get(networkWatcherName).Value.SetFlowLogConfigurationAsync(configParameters); //await configureFlowLog2Operation.WaitForCompletionAsync();; //var queryFlowLogStatus2Operation = await networkWatcherCollection.Get(networkWatcherName).Value.GetFlowLogStatusAsync(new FlowLogStatusParameters(getNsgResponse.Value.Id)); //Response<FlowLogInformation> queryFlowLogStatus2 = await queryFlowLogStatus2Operation.WaitForCompletionAsync();; ////check TA disabled and ensure flowlog config is unchanged //Assert.AreEqual(queryFlowLogStatus2.Value.StorageId, configParameters.StorageId); //Assert.AreEqual(queryFlowLogStatus2.Value.RetentionPolicy.Days, configParameters.RetentionPolicy.Days); //Assert.AreEqual(queryFlowLogStatus2.Value.RetentionPolicy.Enabled, configParameters.RetentionPolicy.Enabled); //Assert.False(queryFlowLogStatus2.Value.FlowAnalyticsConfiguration.NetworkWatcherFlowAnalyticsConfiguration.Enabled); ////disable flowlog (and TA) //configParameters.Enabled = false; //var configureFlowLog3Operation = await networkWatcherCollection.Get(networkWatcherName).Value.SetFlowLogConfigurationAsync(configParameters); //await configureFlowLog3Operation.WaitForCompletionAsync();; //var queryFlowLogStatus3Operation = await networkWatcherCollection.Get(networkWatcherName).Value.GetFlowLogStatusAsync(new FlowLogStatusParameters(getNsgResponse.Value.Id)); //Response<FlowLogInformation> queryFlowLogStatus3 = await queryFlowLogStatus3Operation.WaitForCompletionAsync();; ////check both flowlog and TA disabled //Assert.False(queryFlowLogStatus3.Value.Enabled); //Assert.False(queryFlowLogStatus3.Value.FlowAnalyticsConfiguration.NetworkWatcherFlowAnalyticsConfiguration.Enabled); }
public async Task MigrationExample() { #region Snippet:Construct_Client ArmClient armClient = new ArmClient(new DefaultAzureCredential()); #endregion #region Snippet:Create_ResourceGroup Subscription subscription = armClient.DefaultSubscription; ResourceGroupContainer rgContainer = subscription.GetResourceGroups(); Location location = Location.WestUS2; string rgName = "QuickStartRG"; ResourceGroupData rgData = new ResourceGroupData(location); ResourceGroupCreateOrUpdateOperation rgCreateLro = await rgContainer.CreateOrUpdateAsync(rgName, rgData); ResourceGroup resourceGroup = rgCreateLro.Value; #endregion #region Snippet:Create_AvailabilitySet string vmName = "quickstartvm"; AvailabilitySetData aSetData = new AvailabilitySetData(location); AvailabilitySetCreateOrUpdateOperation asetCreateLro = await resourceGroup.GetAvailabilitySets().CreateOrUpdateAsync(vmName + "_aSet", aSetData); AvailabilitySet aset = asetCreateLro.Value; string asetId = aset.Id; #endregion #region Snippet:Create_Vnet_and_Subnet string vnetName = "MYVM" + "_vnet"; string subnetName = "mySubnet"; AddressSpace addressSpace = new AddressSpace(); addressSpace.AddressPrefixes.Add("10.0.0.0/16"); VirtualNetworkData vnetData = new VirtualNetworkData() { AddressSpace = addressSpace, Subnets = { new SubnetData() { Name = subnetName, AddressPrefix = "10.0.0.0/24" } } }; VirtualNetworkCreateOrUpdateOperation vnetCreateLro = await resourceGroup.GetVirtualNetworks().CreateOrUpdateAsync(vnetName, vnetData); VirtualNetwork vnet = vnetCreateLro.Value; #endregion #region Snippet:Create_NetworkSecurityGroup string nsgName = vmName + "_nsg"; NetworkSecurityGroupData nsgData = new NetworkSecurityGroupData() { Location = location }; NetworkSecurityGroupCreateOrUpdateOperation nsgCreateLro = await resourceGroup.GetNetworkSecurityGroups().CreateOrUpdateAsync(nsgName, nsgData); NetworkSecurityGroup nsg = nsgCreateLro.Value; #endregion #region Snippet:Create_NetworkInterface string nicName = vmName + "_nic"; NetworkInterfaceIPConfiguration nicIPConfig = new NetworkInterfaceIPConfiguration() { Name = "Primary", Primary = true, Subnet = new SubnetData() { Id = vnet.Data.Subnets.First().Id }, PrivateIPAllocationMethod = IPAllocationMethod.Dynamic, }; NetworkInterfaceData nicData = new NetworkInterfaceData(); nicData.Location = location; nicData.IpConfigurations.Add(nicIPConfig); NetworkInterfaceCreateOrUpdateOperation nicCreateLro = await resourceGroup.GetNetworkInterfaces().CreateOrUpdateAsync(nicName, nicData); NetworkInterface nic = nicCreateLro.Value; #endregion #region Snippet:Create_VirtualMachine VirtualMachineData vmData = new VirtualMachineData(location); vmData.OsProfile.AdminUsername = "******"; vmData.OsProfile.AdminPassword = "******"; vmData.OsProfile.ComputerName = "computer-name"; vmData.AvailabilitySet = new Compute.Models.SubResource(); vmData.AvailabilitySet.Id = aset.Id; NetworkInterfaceReference nicReference = new NetworkInterfaceReference(); nicReference.Id = nic.Id; vmData.NetworkProfile.NetworkInterfaces.Add(nicReference); VirtualMachine vm = (await resourceGroup.GetVirtualMachines().CreateOrUpdateAsync(vmName, vmData)).Value; Console.WriteLine("VM ID: " + vm.Id); #endregion }
private async Task <InstancePoolResource> CreateInstancePool(string instancePoolName) { //Prerequisites: 1. create NetworkSecurityGroup string networkSecurityGroupName = SessionRecording.GenerateAssetName("networkSecurityGroup-"); NetworkSecurityGroupData networkSecurityGroupData = new NetworkSecurityGroupData() { Location = AzureLocation.WestUS2, }; var networkSecurityGroup = await _resourceGroup.GetNetworkSecurityGroups().CreateOrUpdateAsync(WaitUntil.Completed, networkSecurityGroupName, networkSecurityGroupData); //2. create Route table string routeTableName = SessionRecording.GenerateAssetName("routeTable-"); RouteTableData routeTableData = new RouteTableData() { Location = AzureLocation.WestUS2, }; var routeTable = await _resourceGroup.GetRouteTables().CreateOrUpdateAsync(WaitUntil.Completed, routeTableName, routeTableData); //3. create Virtual network string vnetName = SessionRecording.GenerateAssetName("vnet-"); var vnetData = new VirtualNetworkData() { Location = "westus2", Subnets = { new SubnetData() { Name = "subnet01", AddressPrefix = "10.10.1.0/24", }, new SubnetData() { Name = "ManagedInstance", AddressPrefix = "10.10.2.0/24", Delegations = { new Delegation() { ServiceName = "Microsoft.Sql/managedInstances", Name = "Microsoft.Sql/managedInstances", ResourceType = "Microsoft.Sql" } }, RouteTable = new RouteTableData() { Id = routeTable.Value.Data.Id }, NetworkSecurityGroup = new NetworkSecurityGroupData() { Id = networkSecurityGroup.Value.Data.Id }, } }, }; vnetData.AddressPrefixes.Add("10.10.0.0/16"); var vnet = await _resourceGroup.GetVirtualNetworks().CreateOrUpdateAsync(WaitUntil.Completed, vnetName, vnetData); string subnetId = $"{vnet.Value.Data.Id.ToString()}/subnets/ManagedInstance"; InstancePoolData data = new InstancePoolData(AzureLocation.WestUS2) { Sku = new SqlSku("GP_Gen5", "GeneralPurpose", null, "Gen5", null), LicenseType = InstancePoolLicenseType.LicenseIncluded, Location = AzureLocation.WestUS2, SubnetId = subnetId, VCores = 8, }; var instancePoolLro = await _resourceGroup.GetInstancePools().CreateOrUpdateAsync(WaitUntil.Completed, instancePoolName, data); return(instancePoolLro.Value); }
public async Task SecurityRuleWithRulesApiTest() { string resourceGroupName = Recording.GenerateAssetName("csmrg"); string location = TestEnvironment.Location; var resourceGroup = await CreateResourceGroup(resourceGroupName); string networkSecurityGroupName = Recording.GenerateAssetName("azsmnet"); string securityRule1 = Recording.GenerateAssetName("azsmnet"); string securityRule2 = Recording.GenerateAssetName("azsmnet"); string destinationPortRange = "123-3500"; NetworkSecurityGroupData networkSecurityGroup = new NetworkSecurityGroupData() { Location = location, SecurityRules = { new SecurityRuleData() { Name = securityRule1, Access = SecurityRuleAccess.Allow, Description = "Test security rule", DestinationAddressPrefix = "*", DestinationPortRange = destinationPortRange, Direction = SecurityRuleDirection.Inbound, Priority = 500, Protocol = SecurityRuleProtocol.Tcp, SourceAddressPrefix = "*", SourcePortRange = "655" } } }; // Put Nsg var networkSecurityGroupContainer = resourceGroup.GetNetworkSecurityGroups(); var putNsgResponseOperation = await networkSecurityGroupContainer.CreateOrUpdateAsync(networkSecurityGroupName, networkSecurityGroup); Response <NetworkSecurityGroup> putNsgResponse = await putNsgResponseOperation.WaitForCompletionAsync();; Assert.AreEqual("Succeeded", putNsgResponse.Value.Data.ProvisioningState.ToString()); // Get NSG Response <NetworkSecurityGroup> getNsgResponse = await networkSecurityGroupContainer.GetAsync(networkSecurityGroupName); Assert.AreEqual(networkSecurityGroupName, getNsgResponse.Value.Data.Name); // Get SecurityRule Response <SecurityRule> getSecurityRuleResponse = await getNsgResponse.Value.GetSecurityRules().GetAsync(securityRule1); Assert.AreEqual(securityRule1, getSecurityRuleResponse.Value.Data.Name); CompareSecurityRule(getNsgResponse.Value.Data.SecurityRules[0], getSecurityRuleResponse.Value.Data); // Add a new security rule var securityRule = new SecurityRuleData() { Name = securityRule2, Access = SecurityRuleAccess.Deny, Description = "Test outbound security rule", DestinationAddressPrefix = "*", DestinationPortRange = destinationPortRange, Direction = SecurityRuleDirection.Outbound, Priority = 501, Protocol = SecurityRuleProtocol.Udp, SourceAddressPrefix = "*", SourcePortRange = "656", }; var putSecurityRuleResponseOperation = await getNsgResponse.Value.GetSecurityRules().CreateOrUpdateAsync(securityRule2, securityRule); Response <SecurityRule> putSecurityRuleResponse = await putSecurityRuleResponseOperation.WaitForCompletionAsync();; Assert.AreEqual("Succeeded", putSecurityRuleResponse.Value.Data.ProvisioningState.ToString()); // Get NSG getNsgResponse = await networkSecurityGroupContainer.GetAsync(networkSecurityGroupName); // Get the SecurityRule2 Response <SecurityRule> getSecurityRule2Response = await getNsgResponse.Value.GetSecurityRules().GetAsync(securityRule2); Assert.AreEqual(securityRule2, getSecurityRule2Response.Value.Data.Name); // Verify the security rule Assert.AreEqual(SecurityRuleAccess.Deny, getSecurityRule2Response.Value.Data.Access); Assert.AreEqual("Test outbound security rule", getSecurityRule2Response.Value.Data.Description); Assert.AreEqual("*", getSecurityRule2Response.Value.Data.DestinationAddressPrefix); Assert.AreEqual(destinationPortRange, getSecurityRule2Response.Value.Data.DestinationPortRange); Assert.AreEqual(SecurityRuleDirection.Outbound, getSecurityRule2Response.Value.Data.Direction); Assert.AreEqual(501, getSecurityRule2Response.Value.Data.Priority); Assert.AreEqual(SecurityRuleProtocol.Udp, getSecurityRule2Response.Value.Data.Protocol); Assert.AreEqual("Succeeded", getSecurityRule2Response.Value.Data.ProvisioningState.ToString()); Assert.AreEqual("*", getSecurityRule2Response.Value.Data.SourceAddressPrefix); Assert.AreEqual("656", getSecurityRule2Response.Value.Data.SourcePortRange); CompareSecurityRule(getNsgResponse.Value.Data.SecurityRules[1], getSecurityRule2Response.Value.Data); // List all SecurityRules AsyncPageable <SecurityRule> getsecurityRulesAP = getNsgResponse.Value.GetSecurityRules().GetAllAsync(); List <SecurityRule> getsecurityRules = await getsecurityRulesAP.ToEnumerableAsync(); Assert.AreEqual(2, getsecurityRules.Count()); CompareSecurityRule(getNsgResponse.Value.Data.SecurityRules[0], getsecurityRules.ElementAt(0).Data); CompareSecurityRule(getNsgResponse.Value.Data.SecurityRules[1], getsecurityRules.ElementAt(1).Data); // Delete a SecurityRule await getSecurityRule2Response.Value.DeleteAsync(); getsecurityRulesAP = getNsgResponse.Value.GetSecurityRules().GetAllAsync(); getsecurityRules = await getsecurityRulesAP.ToEnumerableAsync(); Has.One.EqualTo(getsecurityRules); // Delete NSG await getNsgResponse.Value.DeleteAsync(); // List NSG AsyncPageable <NetworkSecurityGroup> listNsgResponseAP = networkSecurityGroupContainer.GetAllAsync(); List <NetworkSecurityGroup> listNsgResponse = await listNsgResponseAP.ToEnumerableAsync(); Assert.IsEmpty(listNsgResponse); }
public async Task GlobalSetUp() { var rgLro = await GlobalClient.GetDefaultSubscriptionAsync().Result.GetResourceGroups().CreateOrUpdateAsync(SessionRecording.GenerateAssetName("Sql-RG-"), new ResourceGroupData(Location.WestUS2)); ResourceGroup resourceGroup = rgLro.Value; _resourceGroupIdentifier = resourceGroup.Id; //Prerequisites: 1. create NetworkSecurityGroup string networkSecurityGroupName = SessionRecording.GenerateAssetName("networkSecurityGroup-"); NetworkSecurityGroupData networkSecurityGroupData = new NetworkSecurityGroupData() { Location = Location.WestUS2, }; var networkSecurityGroup = await resourceGroup.GetNetworkSecurityGroups().CreateOrUpdateAsync(networkSecurityGroupName, networkSecurityGroupData); //2. create Route table string routeTableName = SessionRecording.GenerateAssetName("routeTable-"); RouteTableData routeTableData = new RouteTableData() { Location = Location.WestUS2, }; var routeTable = await resourceGroup.GetRouteTables().CreateOrUpdateAsync(routeTableName, routeTableData); //3. create Virtual network string vnetName = SessionRecording.GenerateAssetName("vnet-"); var vnetData = new VirtualNetworkData() { Location = "westus2", AddressSpace = new AddressSpace() { AddressPrefixes = { "10.10.0.0/16", } }, Subnets = { new SubnetData() { Name = "subnet01", AddressPrefix = "10.10.1.0/24", }, new SubnetData() { Name = "ManagedInstance", AddressPrefix = "10.10.2.0/24", Delegations = { new Delegation() { ServiceName = "Microsoft.Sql/managedInstances", Name = "Microsoft.Sql/managedInstances", Type = "Microsoft.Sql" } }, RouteTable = new RouteTableData() { Id = routeTable.Value.Data.Id.ToString() }, NetworkSecurityGroup = new NetworkSecurityGroupData() { Id = networkSecurityGroup.Value.Data.Id.ToString() }, } }, }; var vnet = await resourceGroup.GetVirtualNetworks().CreateOrUpdateAsync(vnetName, vnetData); SubnetId = $"{vnet.Value.Data.Id.ToString()}/subnets/ManagedInstance"; await StopSessionRecordingAsync(); }
public async Task NetworkSecurityGroupApiTest() { Subscription subscription = await ArmClient.GetDefaultSubscriptionAsync(); string resourceGroupName = Recording.GenerateAssetName("csmrg"); string location = TestEnvironment.Location; var resourceGroup = await CreateResourceGroup(resourceGroupName); string networkSecurityGroupName = Recording.GenerateAssetName("azsmnet"); var networkSecurityGroup = new NetworkSecurityGroupData() { Location = location, }; // Put Nsg var networkSecurityGroupCollection = resourceGroup.GetNetworkSecurityGroups(); var putNsgResponseOperation = await networkSecurityGroupCollection.CreateOrUpdateAsync(networkSecurityGroupName, networkSecurityGroup); Response <NetworkSecurityGroup> putNsgResponse = await putNsgResponseOperation.WaitForCompletionAsync();; Assert.AreEqual("Succeeded", putNsgResponse.Value.Data.ProvisioningState.ToString()); // Get NSG Response <NetworkSecurityGroup> getNsgResponse = await networkSecurityGroupCollection.GetAsync(networkSecurityGroupName); Assert.AreEqual(networkSecurityGroupName, getNsgResponse.Value.Data.Name); Assert.NotNull(getNsgResponse.Value.Data.ResourceGuid); Assert.AreEqual(6, getNsgResponse.Value.Data.DefaultSecurityRules.Count); Assert.AreEqual("AllowVnetInBound", getNsgResponse.Value.Data.DefaultSecurityRules[0].Name); Assert.AreEqual("AllowAzureLoadBalancerInBound", getNsgResponse.Value.Data.DefaultSecurityRules[1].Name); Assert.AreEqual("DenyAllInBound", getNsgResponse.Value.Data.DefaultSecurityRules[2].Name); Assert.AreEqual("AllowVnetOutBound", getNsgResponse.Value.Data.DefaultSecurityRules[3].Name); Assert.AreEqual("AllowInternetOutBound", getNsgResponse.Value.Data.DefaultSecurityRules[4].Name); Assert.AreEqual("DenyAllOutBound", getNsgResponse.Value.Data.DefaultSecurityRules[5].Name); // Verify a default security rule Assert.AreEqual(SecurityRuleAccess.Allow, getNsgResponse.Value.Data.DefaultSecurityRules[0].Access); Assert.AreEqual("Allow inbound traffic from all VMs in VNET", getNsgResponse.Value.Data.DefaultSecurityRules[0].Description); Assert.AreEqual("VirtualNetwork", getNsgResponse.Value.Data.DefaultSecurityRules[0].DestinationAddressPrefix); Assert.AreEqual("*", getNsgResponse.Value.Data.DefaultSecurityRules[0].DestinationPortRange); Assert.AreEqual(SecurityRuleDirection.Inbound, getNsgResponse.Value.Data.DefaultSecurityRules[0].Direction); Assert.AreEqual(65000, getNsgResponse.Value.Data.DefaultSecurityRules[0].Priority); Assert.AreEqual(SecurityRuleProtocol.Asterisk, getNsgResponse.Value.Data.DefaultSecurityRules[0].Protocol); Assert.AreEqual("Succeeded", getNsgResponse.Value.Data.DefaultSecurityRules[0].ProvisioningState.ToString()); Assert.AreEqual("VirtualNetwork", getNsgResponse.Value.Data.DefaultSecurityRules[0].SourceAddressPrefix); Assert.AreEqual("*", getNsgResponse.Value.Data.DefaultSecurityRules[0].SourcePortRange); // List NSG AsyncPageable <NetworkSecurityGroup> listNsgResponseAP = networkSecurityGroupCollection.GetAllAsync(); List <NetworkSecurityGroup> listNsgResponse = await listNsgResponseAP.ToEnumerableAsync(); Assert.AreEqual(networkSecurityGroupName, listNsgResponse.First().Data.Name); Assert.AreEqual(6, listNsgResponse.First().Data.DefaultSecurityRules.Count); Assert.AreEqual("AllowVnetInBound", listNsgResponse.First().Data.DefaultSecurityRules[0].Name); Assert.AreEqual("AllowAzureLoadBalancerInBound", listNsgResponse.First().Data.DefaultSecurityRules[1].Name); Assert.AreEqual("DenyAllInBound", listNsgResponse.First().Data.DefaultSecurityRules[2].Name); Assert.AreEqual("AllowVnetOutBound", listNsgResponse.First().Data.DefaultSecurityRules[3].Name); Assert.AreEqual("AllowInternetOutBound", listNsgResponse.First().Data.DefaultSecurityRules[4].Name); Assert.AreEqual("DenyAllOutBound", listNsgResponse.First().Data.DefaultSecurityRules[5].Name); Assert.AreEqual(getNsgResponse.Value.Data.Etag, listNsgResponse.First().Data.Etag); // List NSG in a subscription AsyncPageable <NetworkSecurityGroup> listNsgSubsciptionResponseAP = subscription.GetNetworkSecurityGroupsAsync(); List <NetworkSecurityGroup> listNsgSubsciptionResponse = await listNsgSubsciptionResponseAP.ToEnumerableAsync(); Assert.IsNotEmpty(listNsgSubsciptionResponse); // Delete NSG await putNsgResponse.Value.DeleteAsync(); // List NSG listNsgResponseAP = networkSecurityGroupCollection.GetAllAsync(); listNsgResponse = await listNsgResponseAP.ToEnumerableAsync(); Assert.IsEmpty(listNsgResponse); }
public async Task NetworkSecurityGroupWithRulesApiTest() { Subscription subscription = await ArmClient.GetDefaultSubscriptionAsync(); string resourceGroupName = Recording.GenerateAssetName("csmrg"); string location = TestEnvironment.Location; var resourceGroup = await CreateResourceGroup(resourceGroupName); string networkSecurityGroupName = Recording.GenerateAssetName("azsmnet"); string securityRule1 = Recording.GenerateAssetName("azsmnet"); string securityRule2 = Recording.GenerateAssetName("azsmnet"); string destinationPortRange = "123-3500"; var networkSecurityGroup = new NetworkSecurityGroupData() { Location = location, SecurityRules = { new SecurityRuleData() { Name = securityRule1, Access = SecurityRuleAccess.Allow, Description = "Test security rule", DestinationAddressPrefix = "*", DestinationPortRange = destinationPortRange, Direction = SecurityRuleDirection.Inbound, Priority = 500, Protocol = SecurityRuleProtocol.Tcp, SourceAddressPrefix = "*", SourcePortRange = "655" } } }; // Put Nsg var networkSecurityGroupCollection = resourceGroup.GetNetworkSecurityGroups(); var putNsgResponseOperation = await networkSecurityGroupCollection.CreateOrUpdateAsync(networkSecurityGroupName, networkSecurityGroup); Response <NetworkSecurityGroup> putNsgResponse = await putNsgResponseOperation.WaitForCompletionAsync();; Assert.AreEqual("Succeeded", putNsgResponse.Value.Data.ProvisioningState.ToString()); // Get NSG Response <NetworkSecurityGroup> getNsgResponse = await networkSecurityGroupCollection.GetAsync(networkSecurityGroupName); Assert.AreEqual(networkSecurityGroupName, getNsgResponse.Value.Data.Name); Assert.AreEqual(6, getNsgResponse.Value.Data.DefaultSecurityRules.Count); Assert.AreEqual("AllowVnetInBound", getNsgResponse.Value.Data.DefaultSecurityRules[0].Name); Assert.AreEqual("AllowAzureLoadBalancerInBound", getNsgResponse.Value.Data.DefaultSecurityRules[1].Name); Assert.AreEqual("DenyAllInBound", getNsgResponse.Value.Data.DefaultSecurityRules[2].Name); Assert.AreEqual("AllowVnetOutBound", getNsgResponse.Value.Data.DefaultSecurityRules[3].Name); Assert.AreEqual("AllowInternetOutBound", getNsgResponse.Value.Data.DefaultSecurityRules[4].Name); Assert.AreEqual("DenyAllOutBound", getNsgResponse.Value.Data.DefaultSecurityRules[5].Name); // Verify the security rule Assert.AreEqual(SecurityRuleAccess.Allow, getNsgResponse.Value.Data.SecurityRules[0].Access); Assert.AreEqual("Test security rule", getNsgResponse.Value.Data.SecurityRules[0].Description); Assert.AreEqual("*", getNsgResponse.Value.Data.SecurityRules[0].DestinationAddressPrefix); Assert.AreEqual(destinationPortRange, getNsgResponse.Value.Data.SecurityRules[0].DestinationPortRange); Assert.AreEqual(SecurityRuleDirection.Inbound, getNsgResponse.Value.Data.SecurityRules[0].Direction); Assert.AreEqual(500, getNsgResponse.Value.Data.SecurityRules[0].Priority); Assert.AreEqual(SecurityRuleProtocol.Tcp, getNsgResponse.Value.Data.SecurityRules[0].Protocol); Assert.AreEqual("Succeeded", getNsgResponse.Value.Data.SecurityRules[0].ProvisioningState.ToString()); Assert.AreEqual("*", getNsgResponse.Value.Data.SecurityRules[0].SourceAddressPrefix); Assert.AreEqual("655", getNsgResponse.Value.Data.SecurityRules[0].SourcePortRange); // List NSG AsyncPageable <NetworkSecurityGroup> listNsgResponseAP = networkSecurityGroupCollection.GetAllAsync(); List <NetworkSecurityGroup> listNsgResponse = await listNsgResponseAP.ToEnumerableAsync(); Has.One.EqualTo(listNsgResponse); Assert.AreEqual(networkSecurityGroupName, listNsgResponse.First().Data.Name); Assert.AreEqual(6, listNsgResponse.First().Data.DefaultSecurityRules.Count); Assert.AreEqual("AllowVnetInBound", listNsgResponse.First().Data.DefaultSecurityRules[0].Name); Assert.AreEqual("AllowAzureLoadBalancerInBound", listNsgResponse.First().Data.DefaultSecurityRules[1].Name); Assert.AreEqual("DenyAllInBound", listNsgResponse.First().Data.DefaultSecurityRules[2].Name); Assert.AreEqual("AllowVnetOutBound", listNsgResponse.First().Data.DefaultSecurityRules[3].Name); Assert.AreEqual("AllowInternetOutBound", listNsgResponse.First().Data.DefaultSecurityRules[4].Name); Assert.AreEqual("DenyAllOutBound", listNsgResponse.First().Data.DefaultSecurityRules[5].Name); Assert.AreEqual(getNsgResponse.Value.Data.Etag, listNsgResponse.First().Data.Etag); // List NSG in a subscription AsyncPageable <NetworkSecurityGroup> listNsgSubsciptionResponseAP = subscription.GetNetworkSecurityGroupsAsync(); List <NetworkSecurityGroup> listNsgSubsciptionResponse = await listNsgSubsciptionResponseAP.ToEnumerableAsync(); Assert.IsNotEmpty(listNsgSubsciptionResponse); // Add a new security rule var SecurityRule = new SecurityRuleData() { Name = securityRule2, Access = SecurityRuleAccess.Deny, Description = "Test outbound security rule", DestinationAddressPrefix = "*", DestinationPortRange = destinationPortRange, Direction = SecurityRuleDirection.Outbound, Priority = 501, Protocol = SecurityRuleProtocol.Udp, SourceAddressPrefix = "*", SourcePortRange = "656", }; networkSecurityGroup.SecurityRules.Add(SecurityRule); putNsgResponseOperation = await networkSecurityGroupCollection.CreateOrUpdateAsync(networkSecurityGroupName, networkSecurityGroup); await putNsgResponseOperation.WaitForCompletionAsync();; // Get NSG getNsgResponse = await networkSecurityGroupCollection.GetAsync(networkSecurityGroupName); // Verify the security rule Assert.AreEqual(SecurityRuleAccess.Deny, getNsgResponse.Value.Data.SecurityRules[1].Access); Assert.AreEqual("Test outbound security rule", getNsgResponse.Value.Data.SecurityRules[1].Description); Assert.AreEqual("*", getNsgResponse.Value.Data.SecurityRules[1].DestinationAddressPrefix); Assert.AreEqual(destinationPortRange, getNsgResponse.Value.Data.SecurityRules[1].DestinationPortRange); Assert.AreEqual(SecurityRuleDirection.Outbound, getNsgResponse.Value.Data.SecurityRules[1].Direction); Assert.AreEqual(501, getNsgResponse.Value.Data.SecurityRules[1].Priority); Assert.AreEqual(SecurityRuleProtocol.Udp, getNsgResponse.Value.Data.SecurityRules[1].Protocol); Assert.AreEqual("Succeeded", getNsgResponse.Value.Data.SecurityRules[1].ProvisioningState.ToString()); Assert.AreEqual("*", getNsgResponse.Value.Data.SecurityRules[1].SourceAddressPrefix); Assert.AreEqual("656", getNsgResponse.Value.Data.SecurityRules[1].SourcePortRange); // List Default Security Groups AsyncPageable <SecurityRuleData> listDefaultSecurityGroupsAP = getNsgResponse.Value.GetDefaultSecurityRulesAsync(); List <SecurityRuleData> listDefaultSecurityGroups = await listDefaultSecurityGroupsAP.ToEnumerableAsync(); Assert.IsNotEmpty(listDefaultSecurityGroups); // Get Defaul Security Group // TODO: ADO 5975 //Response<SecurityRuleData> getDefaultSecurityGroups = await getNsgResponse.Value.GetDefaultSecurityRuleAsync(); //Assert.AreEqual(listDefaultSecurityGroups.First().Name, getDefaultSecurityGroups.Value.Name); // Delete NSG await putNsgResponse.Value.DeleteAsync(); // List NSG listNsgResponseAP = networkSecurityGroupCollection.GetAllAsync(); listNsgResponse = await listNsgResponseAP.ToEnumerableAsync(); Assert.IsEmpty(listNsgResponse); }
public async Task MigrationExample() { #region Snippet:Construct_Client ArmClient client = new ArmClient(new DefaultAzureCredential()); #endregion #region Snippet:Create_ResourceGroup Subscription subscription = await client.GetDefaultSubscriptionAsync(); ResourceGroupCollection resourceGroups = subscription.GetResourceGroups(); AzureLocation location = AzureLocation.WestUS2; string resourceGroupName = "QuickStartRG"; ResourceGroupData resourceGroupData = new ResourceGroupData(location); ArmOperation <ResourceGroup> resourceGroupOperation = await resourceGroups.CreateOrUpdateAsync(WaitUntil.Completed, resourceGroupName, resourceGroupData); ResourceGroup resourceGroup = resourceGroupOperation.Value; #endregion #region Snippet:Create_AvailabilitySet string virtualMachineName = "quickstartvm"; AvailabilitySetData availabilitySetData = new AvailabilitySetData(location); AvailabilitySetCollection availabilitySets = resourceGroup.GetAvailabilitySets(); ArmOperation <AvailabilitySet> availabilitySetOperation = await availabilitySets.CreateOrUpdateAsync(WaitUntil.Completed, virtualMachineName + "_aSet", availabilitySetData); AvailabilitySet availabilitySet = availabilitySetOperation.Value; #endregion #region Snippet:Create_Vnet_and_Subnet string virtualNetworkName = "MYVM" + "_vnet"; string subnetName = "mySubnet"; VirtualNetworkData virtualNetworkData = new VirtualNetworkData() { Subnets = { new SubnetData() { Name = subnetName, AddressPrefix = "10.0.0.0/24" } } }; VirtualNetworkCollection virtualNetworks = resourceGroup.GetVirtualNetworks(); virtualNetworkData.AddressPrefixes.Add("10.0.0.0/16"); ArmOperation <VirtualNetwork> virtualNetworkOperation = await virtualNetworks.CreateOrUpdateAsync(WaitUntil.Completed, virtualNetworkName, virtualNetworkData); VirtualNetwork virtualNetwork = virtualNetworkOperation.Value; #endregion #region Snippet:Create_NetworkSecurityGroup string networkSecurityGroupName = virtualMachineName + "_nsg"; NetworkSecurityGroupData networkSecurityGroupData = new NetworkSecurityGroupData() { Location = location }; NetworkSecurityGroupCollection networkSecurityGroups = resourceGroup.GetNetworkSecurityGroups(); ArmOperation <NetworkSecurityGroup> networkSecurityGroupOperation = await networkSecurityGroups.CreateOrUpdateAsync(WaitUntil.Completed, networkSecurityGroupName, networkSecurityGroupData); NetworkSecurityGroup networkSecurityGroup = networkSecurityGroupOperation.Value; #endregion #region Snippet:Create_NetworkInterface string networkInterfaceName = virtualMachineName + "_nic"; NetworkInterfaceIPConfigurationData networkInterfaceIPConfiguration = new NetworkInterfaceIPConfigurationData() { Name = "Primary", Primary = true, Subnet = new SubnetData() { Id = virtualNetwork.Data.Subnets.First().Id }, PrivateIPAllocationMethod = IPAllocationMethod.Dynamic, }; NetworkInterfaceData nicData = new NetworkInterfaceData(); nicData.Location = location; nicData.IPConfigurations.Add(networkInterfaceIPConfiguration); NetworkInterfaceCollection networkInterfaces = resourceGroup.GetNetworkInterfaces(); ArmOperation <NetworkInterface> networkInterfaceOperation = await networkInterfaces.CreateOrUpdateAsync(WaitUntil.Completed, networkInterfaceName, nicData); NetworkInterface networkInterface = networkInterfaceOperation.Value; #endregion #region Snippet:Create_VirtualMachine VirtualMachineData virutalMachineData = new VirtualMachineData(location); virutalMachineData.OSProfile.AdminUsername = "******"; virutalMachineData.OSProfile.AdminPassword = "******"; virutalMachineData.OSProfile.ComputerName = "computer-name"; virutalMachineData.AvailabilitySetId = availabilitySet.Id; NetworkInterfaceReference nicReference = new NetworkInterfaceReference(); nicReference.Id = networkInterface.Id; virutalMachineData.NetworkProfile.NetworkInterfaces.Add(nicReference); VirtualMachineCollection virtualMachines = resourceGroup.GetVirtualMachines(); ArmOperation <VirtualMachine> virtualMachineOperation = await virtualMachines.CreateOrUpdateAsync(WaitUntil.Completed, virtualMachineName, virutalMachineData); VirtualMachine virtualMachine = virtualMachineOperation.Value; Console.WriteLine("VM ID: " + virtualMachine.Id); #endregion }