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

            return(new VirtualNetworkGateway(_armClient, data));
        }
        public async Task TroubleshootApiTest()
        {
            string resourceGroupName = Recording.GenerateAssetName("azsmnet");

            string location      = "westus2";
            var    resourceGroup = CreateResourceGroup(resourceGroupName, location);

            // CreateVirtualNetworkGateway API
            // Prerequisite:- Create PublicIPAddress(Gateway Ip) using Put PublicIPAddressResource API
            string publicIpName    = Recording.GenerateAssetName("azsmnet");
            string domainNameLabel = Recording.GenerateAssetName("azsmnet");

            PublicIPAddressResource nic1publicIp = await CreateDefaultPublicIpAddress(publicIpName, resourceGroupName, domainNameLabel, location);

            //Prerequisite:-Create Virtual Network using Put VirtualNetworkResource API
            string vnetName   = Recording.GenerateAssetName("azsmnet");
            string subnetName = "GatewaySubnet";

            await CreateVirtualNetwork(vnetName, subnetName, resourceGroupName, location);

            Response <SubnetResource> getSubnetResponse = await GetVirtualNetworkCollection(resourceGroupName).Get(vnetName).Value.GetSubnets().GetAsync(subnetName);

            // CreateVirtualNetworkGateway API
            string virtualNetworkGatewayName = Recording.GenerateAssetName("azsmnet");
            string ipConfigName = Recording.GenerateAssetName("azsmnet");

            var virtualNetworkGateway = new VirtualNetworkGatewayData()
            {
                Location           = location,
                Tags               = { { "key", "value" } },
                EnableBgp          = false,
                GatewayDefaultSite = null,
                GatewayType        = VirtualNetworkGatewayType.Vpn,
                VpnType            = VpnType.RouteBased,
                IpConfigurations   =
                {
                    new VirtualNetworkGatewayIPConfiguration()
                    {
                        Name = ipConfigName,
                        PrivateIPAllocationMethod = IPAllocationMethod.Dynamic,
                        PublicIPAddress           = new SubResource()
                        {
                            Id = nic1publicIp.Id
                        }, Subnet = new SubResource()
                        {
                            Id = getSubnetResponse.Value.Id
                        }
                    }
                },
                Sku = new VirtualNetworkGatewaySku()
                {
                    Name = VirtualNetworkGatewaySkuName.Basic, Tier = VirtualNetworkGatewaySkuTier.Basic
                }
            };

            var virtualNetworkGatewayCollection           = GetVirtualNetworkGatewayCollection(resourceGroupName);
            var putVirtualNetworkGatewayResponseOperation =
                await virtualNetworkGatewayCollection.CreateOrUpdateAsync(true, virtualNetworkGatewayName, virtualNetworkGateway);

            await putVirtualNetworkGatewayResponseOperation.WaitForCompletionAsync();;
            // GetVirtualNetworkGateway API
            Response <VirtualNetworkGatewayResource> getVirtualNetworkGatewayResponse =
                await virtualNetworkGatewayCollection.GetAsync(virtualNetworkGatewayName);

            //TODO:There is no need to perform a separate create NetworkWatchers operation
            //Create network Watcher
            //string networkWatcherName = Recording.GenerateAssetName("azsmnet");
            //NetworkWatcherResource properties = new NetworkWatcherResource { Location = location };
            //await networkWatcherCollection.CreateOrUpdateAsync(true, resourceGroupName, networkWatcherName, properties);

            //Create storage
            //string storageName = Recording.GenerateAssetName("azsmnet");
            //var storageParameters = new StorageAccountCreateParameters(new Sku(SkuName.StandardLRS), Kind.Storage, location);

            //Operation<StorageAccountResource> accountOperation = await StorageManagementClient.StorageAccounts.CreateAsync(resourceGroupName, storageName, storageParameters);
            //Response<StorageAccountResource> account = await accountOperation.WaitForCompletionAsync();;
            //TroubleshootingParameters parameters = new TroubleshootingParameters(getVirtualNetworkGatewayResponse.Value.Id, account.Value.Id, "https://nwtestdbdzq4xsvskrei6.blob.core.windows.net/vhds");

            ////Get troubleshooting
            //var networkWatcherCollection = GetNetworkWatcherCollection("NetworkWatcherRG");
            //var troubleshootOperation = await networkWatcherCollection.Get("NetworkWatcher_westus2").Value.GetTroubleshootingAsync(parameters);
            //await troubleshootOperation.WaitForCompletionAsync();;

            ////Query last troubleshoot
            //var queryTroubleshootOperation = await networkWatcherCollection.Get("NetworkWatcher_westus2").Value.GetTroubleshootingResultAsync(new QueryTroubleshootingParameters(getVirtualNetworkGatewayResponse.Value.Id));
            //await queryTroubleshootOperation.WaitForCompletionAsync();;
            //TODO: make verification once fixed for troubleshoot API deployed
        }