예제 #1
0
        internal static RouteTableListResult DeserializeRouteTableListResult(JsonElement element)
        {
            Optional <IReadOnlyList <RouteTableData> > 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 <RouteTableData> array = new List <RouteTableData>();
                    foreach (var item in property.Value.EnumerateArray())
                    {
                        array.Add(RouteTableData.DeserializeRouteTableData(item));
                    }
                    value = array;
                    continue;
                }
                if (property.NameEquals("nextLink"))
                {
                    nextLink = property.Value.GetString();
                    continue;
                }
            }
            return(new RouteTableListResult(Optional.ToList(value), nextLink.Value));
        }
예제 #2
0
        RouteTable IOperationSource <RouteTable> .CreateResult(Response response, CancellationToken cancellationToken)
        {
            using var document = JsonDocument.Parse(response.ContentStream);
            var data = RouteTableData.DeserializeRouteTableData(document.RootElement);

            return(new RouteTable(_armClient, data));
        }
예제 #3
0
        public async Task EmptyRouteTableTest()
        {
            string resourceGroupName = Recording.GenerateAssetName("csmrg");

            string location      = TestEnvironment.Location;
            var    resourceGroup = await CreateResourceGroup(resourceGroupName);

            string routeTableName = Recording.GenerateAssetName("azsmnet");
            var    routeTable     = new RouteTableData()
            {
                Location = location,
            };

            // Put RouteTable
            var routeTableCollection           = resourceGroup.GetRouteTables();
            var putRouteTableResponseOperation = await routeTableCollection.CreateOrUpdateAsync(WaitUntil.Completed, routeTableName, routeTable);

            Response <RouteTable> putRouteTableResponse = await putRouteTableResponseOperation.WaitForCompletionAsync();;

            Assert.AreEqual("Succeeded", putRouteTableResponse.Value.Data.ProvisioningState.ToString());

            // Get RouteTable
            Response <RouteTable> getRouteTableResponse = await routeTableCollection.GetAsync(routeTableName);

            Assert.AreEqual(routeTableName, getRouteTableResponse.Value.Data.Name);
            Assert.False(getRouteTableResponse.Value.Data.Routes.Any());

            // List RouteTable
            AsyncPageable <RouteTable> listRouteTableResponseAP = routeTableCollection.GetAllAsync();
            List <RouteTable>          listRouteTableResponse   = await listRouteTableResponseAP.ToEnumerableAsync();

            Has.One.EqualTo(listRouteTableResponse);
            Assert.AreEqual(getRouteTableResponse.Value.Data.Name, listRouteTableResponse.First().Data.Name);
            Assert.AreEqual(getRouteTableResponse.Value.Id, listRouteTableResponse.First().Id);

            // Delete RouteTable
            var deleteOperation = await getRouteTableResponse.Value.DeleteAsync(WaitUntil.Completed);

            await deleteOperation.WaitForCompletionResponseAsync();;

            // Verify delete
            listRouteTableResponseAP = routeTableCollection.GetAllAsync();
            listRouteTableResponse   = await listRouteTableResponseAP.ToEnumerableAsync();

            Assert.IsEmpty(listRouteTableResponse);
        }
예제 #4
0
        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;
        }
예제 #5
0
        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
        }
예제 #6
0
        /// <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);
        }
예제 #7
0
        public async Task RouteTableApiTest()
        {
            string resourceGroupName = Recording.GenerateAssetName("csmrg");

            string location      = TestEnvironment.Location;
            var    resourceGroup = await CreateResourceGroup(resourceGroupName);

            string routeTableName = Recording.GenerateAssetName("azsmnet");
            string route1Name     = Recording.GenerateAssetName("azsmnet");
            string route2Name     = Recording.GenerateAssetName("azsmnet");

            var routeTable = new RouteTableData()
            {
                Location = location,
            };

            // Add a route
            var route1 = new RouteData()
            {
                AddressPrefix    = "192.168.1.0/24",
                Name             = route1Name,
                NextHopIPAddress = "23.108.1.1",
                NextHopType      = RouteNextHopType.VirtualAppliance
            };

            routeTable.Routes.Add(route1);

            // Put RouteTable
            var routeTableCollection           = resourceGroup.GetRouteTables();
            var putRouteTableResponseOperation = await routeTableCollection.CreateOrUpdateAsync(WaitUntil.Completed, routeTableName, routeTable);

            Response <RouteTable> putRouteTableResponse = await putRouteTableResponseOperation.WaitForCompletionAsync();;

            Assert.AreEqual("Succeeded", putRouteTableResponse.Value.Data.ProvisioningState.ToString());

            // Get RouteTable
            Response <RouteTable> getRouteTableResponse = await routeTableCollection.GetAsync(routeTableName);

            Assert.AreEqual(routeTableName, getRouteTableResponse.Value.Data.Name);
            Assert.AreEqual(1, getRouteTableResponse.Value.Data.Routes.Count);
            Assert.AreEqual(route1Name, getRouteTableResponse.Value.Data.Routes[0].Name);
            Assert.AreEqual("192.168.1.0/24", getRouteTableResponse.Value.Data.Routes[0].AddressPrefix);
            Assert.AreEqual("23.108.1.1", getRouteTableResponse.Value.Data.Routes[0].NextHopIPAddress);
            Assert.AreEqual(RouteNextHopType.VirtualAppliance, getRouteTableResponse.Value.Data.Routes[0].NextHopType);

            // Add another route
            var route2 = new RouteData()
            {
                AddressPrefix = "10.0.1.0/24",
                Name          = route2Name,
                NextHopType   = RouteNextHopType.VnetLocal
            };

            getRouteTableResponse.Value.Data.Routes.Add(route2);

            await routeTableCollection.CreateOrUpdateAsync(WaitUntil.Completed, routeTableName, getRouteTableResponse.Value.Data);

            getRouteTableResponse = await routeTableCollection.GetAsync(routeTableName);

            Assert.AreEqual(routeTableName, getRouteTableResponse.Value.Data.Name);
            Assert.AreEqual(2, getRouteTableResponse.Value.Data.Routes.Count);
            Assert.AreEqual(route2Name, getRouteTableResponse.Value.Data.Routes[1].Name);
            Assert.AreEqual("10.0.1.0/24", getRouteTableResponse.Value.Data.Routes[1].AddressPrefix);
            Assert.True(string.IsNullOrEmpty(getRouteTableResponse.Value.Data.Routes[1].NextHopIPAddress));
            Assert.AreEqual(RouteNextHopType.VnetLocal, getRouteTableResponse.Value.Data.Routes[1].NextHopType);

            // Delete a route
            getRouteTableResponse.Value.Data.Routes.RemoveAt(0);

            await routeTableCollection.CreateOrUpdateAsync(WaitUntil.Completed, routeTableName, getRouteTableResponse.Value.Data);

            getRouteTableResponse = await routeTableCollection.GetAsync(routeTableName);

            Assert.AreEqual(routeTableName, getRouteTableResponse.Value.Data.Name);
            Assert.AreEqual(1, getRouteTableResponse.Value.Data.Routes.Count);
            Assert.AreEqual(route2Name, getRouteTableResponse.Value.Data.Routes[0].Name);
            Assert.AreEqual("10.0.1.0/24", getRouteTableResponse.Value.Data.Routes[0].AddressPrefix);
            Assert.True(string.IsNullOrEmpty(getRouteTableResponse.Value.Data.Routes[0].NextHopIPAddress));
            Assert.AreEqual(RouteNextHopType.VnetLocal, getRouteTableResponse.Value.Data.Routes[0].NextHopType);

            // Delete RouteTable
            var deleteOperation = await getRouteTableResponse.Value.DeleteAsync(WaitUntil.Completed);

            await deleteOperation.WaitForCompletionResponseAsync();;

            // Verify delete
            AsyncPageable <RouteTable> listRouteTableResponseAP = routeTableCollection.GetAllAsync();
            List <RouteTable>          listRouteTableResponse   = await listRouteTableResponseAP.ToEnumerableAsync();

            Assert.IsEmpty(listRouteTableResponse);
        }
예제 #8
0
        public async Task SubnetRouteTableTest()
        {
            string resourceGroupName = Recording.GenerateAssetName("csmrg");

            string location      = TestEnvironment.Location;
            var    resourceGroup = await CreateResourceGroup(resourceGroupName);

            string routeTableName = Recording.GenerateAssetName("azsmnet");
            string route1Name     = Recording.GenerateAssetName("azsmnet");

            var routeTable = new RouteTableData()
            {
                Location = location,
            };

            var route1 = new RouteData()
            {
                AddressPrefix    = "192.168.1.0/24",
                Name             = route1Name,
                NextHopIPAddress = "23.108.1.1",
                NextHopType      = RouteNextHopType.VirtualAppliance
            };

            routeTable.Routes.Add(route1);

            // Put RouteTable
            var routeTableCollection           = resourceGroup.GetRouteTables();
            var putRouteTableResponseOperation = await routeTableCollection.CreateOrUpdateAsync(WaitUntil.Completed, routeTableName, routeTable);

            Response <RouteTable> putRouteTableResponse = await putRouteTableResponseOperation.WaitForCompletionAsync();;

            Assert.AreEqual("Succeeded", putRouteTableResponse.Value.Data.ProvisioningState.ToString());

            // Get RouteTable
            Response <RouteTable> getRouteTableResponse = await routeTableCollection.GetAsync(routeTableName);

            // Verify that the subnet reference is null
            Assert.IsEmpty(getRouteTableResponse.Value.Data.Subnets);

            // Create Vnet with subnet and add a route table
            string vnetName   = Recording.GenerateAssetName("azsmnet");
            string subnetName = Recording.GenerateAssetName("azsmnet");

            var vnet = new VirtualNetworkData()
            {
                Location = location,

                AddressSpace = new AddressSpace()
                {
                    AddressPrefixes = { "10.0.0.0/16", }
                },
                DhcpOptions = new DhcpOptions()
                {
                    DnsServers = { "10.1.1.1", "10.1.2.4" }
                },
                Subnets =
                {
                    new SubnetData()
                    {
                        Name          = subnetName,
                        AddressPrefix = "10.0.0.0/24",
                        RouteTable    = new RouteTableData()
                        {
                            Id = getRouteTableResponse.Value.Id,
                        }
                    }
                }
            };

            var putVnetResponseOperation = await resourceGroup.GetVirtualNetworks().CreateOrUpdateAsync(WaitUntil.Completed, vnetName, vnet);

            Response <VirtualNetwork> putVnetResponse = await putVnetResponseOperation.WaitForCompletionAsync();;

            Assert.AreEqual("Succeeded", putVnetResponse.Value.Data.ProvisioningState.ToString());

            Response <Subnet> getSubnetResponse = await putVnetResponse.Value.GetSubnets().GetAsync(subnetName);

            Assert.AreEqual(getSubnetResponse.Value.Data.RouteTable.Id, getRouteTableResponse.Value.Id.ToString());

            // Get RouteTable
            getRouteTableResponse = await routeTableCollection.GetAsync(routeTableName);

            Assert.AreEqual(1, getRouteTableResponse.Value.Data.Subnets.Count);
            Assert.AreEqual(getSubnetResponse.Value.Id.ToString(), getRouteTableResponse.Value.Data.Subnets[0].Id);
        }
예제 #9
0
        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);
        }
예제 #10
0
        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();
        }
예제 #11
0
        public async Task RoutesHopTypeTest()
        {
            string resourceGroupName = Recording.GenerateAssetName("csmrg");

            string location      = TestEnvironment.Location;
            var    resourceGroup = await CreateResourceGroup(resourceGroupName);

            string routeTableName = Recording.GenerateAssetName("azsmnet");
            string route1Name     = Recording.GenerateAssetName("azsmnet");
            string route2Name     = Recording.GenerateAssetName("azsmnet");
            string route3Name     = Recording.GenerateAssetName("azsmnet");
            string route4Name     = Recording.GenerateAssetName("azsmnet");

            var routeTable = new RouteTableData()
            {
                Location = location,
            };

            // Add a route
            var route1 = new RouteData()
            {
                AddressPrefix    = "192.168.1.0/24",
                Name             = route1Name,
                NextHopIpAddress = "23.108.1.1",
                NextHopType      = RouteNextHopType.VirtualAppliance
            };

            routeTable.Routes.Add(route1);

            // Put RouteTable
            var routeTableContainer            = resourceGroup.GetRouteTables();
            var putRouteTableResponseOperation =
                await routeTableContainer.CreateOrUpdateAsync(routeTableName, routeTable);

            Response <RouteTable> putRouteTableResponse = await putRouteTableResponseOperation.WaitForCompletionAsync();;

            Assert.AreEqual("Succeeded", putRouteTableResponse.Value.Data.ProvisioningState.ToString());

            // Get RouteTable
            Response <RouteTable> getRouteTableResponse = await routeTableContainer.GetAsync(routeTableName);

            Assert.AreEqual(routeTableName, getRouteTableResponse.Value.Data.Name);
            Assert.AreEqual(1, getRouteTableResponse.Value.Data.Routes.Count);
            Assert.AreEqual(route1Name, getRouteTableResponse.Value.Data.Routes[0].Name);

            // Add another route
            var route2 = new RouteData()
            {
                AddressPrefix = "10.0.1.0/24",
                Name          = route2Name,
                NextHopType   = RouteNextHopType.VnetLocal
            };
            await getRouteTableResponse.Value.GetRoutes().CreateOrUpdateAsync(route2Name, route2);

            // Add another route
            var route3 = new RouteData()
            {
                AddressPrefix = "0.0.0.0/0",
                Name          = route3Name,
                NextHopType   = RouteNextHopType.Internet
            };
            await getRouteTableResponse.Value.GetRoutes().CreateOrUpdateAsync(route3Name, route3);

            // Add another route
            var route4 = new RouteData()
            {
                AddressPrefix = "10.0.2.0/24",
                Name          = route4Name,
                NextHopType   = RouteNextHopType.None
            };
            await getRouteTableResponse.Value.GetRoutes().CreateOrUpdateAsync(route4Name, route4);

            getRouteTableResponse = await routeTableContainer.GetAsync(routeTableName);

            Assert.AreEqual(routeTableName, getRouteTableResponse.Value.Data.Name);
            Assert.AreEqual(4, getRouteTableResponse.Value.Data.Routes.Count);
            Assert.AreEqual(route2Name, getRouteTableResponse.Value.Data.Routes[1].Name);
            Assert.AreEqual(RouteNextHopType.VirtualAppliance, getRouteTableResponse.Value.Data.Routes[0].NextHopType);
            Assert.AreEqual(RouteNextHopType.VnetLocal, getRouteTableResponse.Value.Data.Routes[1].NextHopType);
            Assert.AreEqual(RouteNextHopType.Internet, getRouteTableResponse.Value.Data.Routes[2].NextHopType);
            Assert.AreEqual(RouteNextHopType.None, getRouteTableResponse.Value.Data.Routes[3].NextHopType);

            // Delete RouteTable
            await getRouteTableResponse.Value.DeleteAsync();

            // Verify delete
            AsyncPageable <RouteTable> listRouteTableResponseAP = routeTableContainer.GetAllAsync();
            List <RouteTable>          listRouteTableResponse   = await listRouteTableResponseAP.ToEnumerableAsync();

            Assert.IsEmpty(listRouteTableResponse);
        }