Example #1
0
        VirtualNetworkPeering IOperationSource <VirtualNetworkPeering> .CreateResult(Response response, CancellationToken cancellationToken)
        {
            using var document = JsonDocument.Parse(response.ContentStream);
            var data = VirtualNetworkPeeringData.DeserializeVirtualNetworkPeeringData(document.RootElement);

            return(new VirtualNetworkPeering(_armClient, data));
        }
        internal static VirtualNetworkPeeringListResult DeserializeVirtualNetworkPeeringListResult(JsonElement element)
        {
            Optional <IReadOnlyList <VirtualNetworkPeeringData> > 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 <VirtualNetworkPeeringData> array = new List <VirtualNetworkPeeringData>();
                    foreach (var item in property.Value.EnumerateArray())
                    {
                        array.Add(VirtualNetworkPeeringData.DeserializeVirtualNetworkPeeringData(item));
                    }
                    value = array;
                    continue;
                }
                if (property.NameEquals("nextLink"))
                {
                    nextLink = property.Value.GetString();
                    continue;
                }
            }
            return(new VirtualNetworkPeeringListResult(Optional.ToList(value), nextLink.Value));
        }
Example #3
0
        public async Task VirtualNetworkPeeringTest()
        {
            string resourceGroupName = Recording.GenerateAssetName("csmrg");

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

            string vnet1Name   = Recording.GenerateAssetName("azsmnet");
            string vnet2Name   = Recording.GenerateAssetName("azsmnet");
            string subnet1Name = Recording.GenerateAssetName("azsmnet");
            string subnet2Name = 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 = subnet1Name, AddressPrefix = "10.0.1.0/24",
                            }, new SubnetData()
                            {
                                Name = subnet2Name, AddressPrefix = "10.0.2.0/24"
                            } }
            };

            // Put Vnet
            var virtualNetworkCollection = resourceGroup.GetVirtualNetworks();
            var putVnetResponseOperation = await virtualNetworkCollection.CreateOrUpdateAsync(true, vnet1Name, vnet);

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

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

            // Get Vnet
            Response <VirtualNetwork> getVnetResponse = await virtualNetworkCollection.GetAsync(vnet1Name);

            Assert.AreEqual(vnet1Name, getVnetResponse.Value.Data.Name);
            Assert.NotNull(getVnetResponse.Value.Data.ResourceGuid);
            Assert.AreEqual("Succeeded", getVnetResponse.Value.Data.ProvisioningState.ToString());

            // Create vnet2
            var vnet2 = new VirtualNetworkData()
            {
                Location     = location,
                AddressSpace = new AddressSpace()
                {
                    AddressPrefixes = { "10.1.0.0/16", }
                },
                Subnets = { new SubnetData()
                            {
                                Name = subnet1Name, AddressPrefix = "10.1.1.0/24"
                            } }
            };

            // Put Vnet2
            var putVnet2Operation = await virtualNetworkCollection.CreateOrUpdateAsync(true, vnet2Name, vnet2);

            Response <VirtualNetwork> putVnet2 = await putVnet2Operation.WaitForCompletionAsync();;

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

            // Create peering object
            var peering = new VirtualNetworkPeeringData()
            {
                AllowForwardedTraffic = true,
                RemoteVirtualNetwork  = new WritableSubResource {
                    Id = putVnet2.Value.Id
                }
            };

            // Create Peering
            var virtualNetworkPeeringCollection = getVnetResponse.Value.GetVirtualNetworkPeerings();
            await virtualNetworkPeeringCollection.CreateOrUpdateAsync(true, "peer1", peering);

            // Get Peering
            VirtualNetworkPeering getPeer = await virtualNetworkPeeringCollection.GetAsync("peer1");

            Assert.AreEqual("peer1", getPeer.Data.Name);
            Assert.True(getPeer.Data.AllowForwardedTraffic);
            Assert.True(getPeer.Data.AllowVirtualNetworkAccess);
            Assert.False(getPeer.Data.AllowGatewayTransit);
            Assert.NotNull(getPeer.Data.RemoteVirtualNetwork);
            Assert.AreEqual(putVnet2.Value.Id, getPeer.Data.RemoteVirtualNetwork.Id);

            // List Peering
            AsyncPageable <VirtualNetworkPeering> listPeerAP = virtualNetworkPeeringCollection.GetAllAsync();
            List <VirtualNetworkPeering>          listPeer   = await listPeerAP.ToEnumerableAsync();

            Has.One.EqualTo(listPeer);
            Assert.AreEqual("peer1", listPeer[0].Data.Name);
            Assert.True(listPeer[0].Data.AllowForwardedTraffic);
            Assert.True(listPeer[0].Data.AllowVirtualNetworkAccess);
            Assert.False(listPeer[0].Data.AllowGatewayTransit);
            Assert.NotNull(listPeer[0].Data.RemoteVirtualNetwork);
            Assert.AreEqual(putVnet2.Value.Id, listPeer[0].Data.RemoteVirtualNetwork.Id);

            // Get peering from GET vnet
            VirtualNetwork peeringVnet = await virtualNetworkCollection.GetAsync(vnet1Name);

            Assert.AreEqual(vnet1Name, peeringVnet.Data.Name);
            Has.One.EqualTo(peeringVnet.Data.VirtualNetworkPeerings);
            Assert.AreEqual("peer1", peeringVnet.Data.VirtualNetworkPeerings[0].Name);
            Assert.True(peeringVnet.Data.VirtualNetworkPeerings[0].AllowForwardedTraffic);
            Assert.True(peeringVnet.Data.VirtualNetworkPeerings[0].AllowVirtualNetworkAccess);
            Assert.False(peeringVnet.Data.VirtualNetworkPeerings[0].AllowGatewayTransit);
            Assert.NotNull(peeringVnet.Data.VirtualNetworkPeerings[0].RemoteVirtualNetwork);
            Assert.AreEqual(putVnet2.Value.Id, peeringVnet.Data.VirtualNetworkPeerings[0].RemoteVirtualNetwork.Id);

            // Delete Peering
            var deleteOperation = await getPeer.DeleteAsync(true);

            await deleteOperation.WaitForCompletionResponseAsync();;

            listPeerAP = virtualNetworkPeeringCollection.GetAllAsync();
            listPeer   = await listPeerAP.ToEnumerableAsync();

            Assert.IsEmpty(listPeer);

            peeringVnet = await virtualNetworkCollection.GetAsync(vnet1Name);

            Assert.AreEqual(vnet1Name, peeringVnet.Data.Name);
            Assert.IsEmpty(peeringVnet.Data.VirtualNetworkPeerings);

            // Delete Vnets
            await putVnet2.Value.DeleteAsync(true);

            await putVnetResponse.Value.DeleteAsync(true);
        }
Example #4
0
        public async Task VirtualNetworkPeeringApiTest()
        {
            string resourceGroupName = Recording.GenerateAssetName("csmrg");

            var location      = "westus";
            var resourceGroup = await CreateResourceGroup(resourceGroupName);

            string vnetName = Recording.GenerateAssetName("azsmnet");
            string remoteVirtualNetworkName = Recording.GenerateAssetName("azsmnet");
            string vnetPeeringName          = Recording.GenerateAssetName("azsmnet");
            string subnet1Name = Recording.GenerateAssetName("azsmnet");
            string subnet2Name = 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 = subnet1Name, AddressPrefix = "10.0.1.0/24",
                            }, new SubnetData()
                            {
                                Name = subnet2Name, AddressPrefix = "10.0.2.0/24",
                            } }
            };

            // Put Vnet
            var virtualNetworkCollection = resourceGroup.GetVirtualNetworks();
            var putVnetResponseOperation = await virtualNetworkCollection.CreateOrUpdateAsync(true, vnetName, vnet);

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

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

            // Get Vnet
            Response <VirtualNetwork> getVnetResponse = await virtualNetworkCollection.GetAsync(vnetName);

            Assert.AreEqual(vnetName, getVnetResponse.Value.Data.Name);
            Assert.NotNull(getVnetResponse.Value.Data.ResourceGuid);
            Assert.AreEqual("Succeeded", getVnetResponse.Value.Data.ProvisioningState.ToString());

            // Get all Vnets
            AsyncPageable <VirtualNetwork> getAllVnetsAP = virtualNetworkCollection.GetAllAsync();
            await getAllVnetsAP.ToEnumerableAsync();

            vnet.AddressSpace.AddressPrefixes[0] = "10.1.0.0/16";
            vnet.Subnets[0].AddressPrefix        = "10.1.1.0/24";
            vnet.Subnets[1].AddressPrefix        = "10.1.2.0/24";
            var remoteVirtualNetworkOperation = await virtualNetworkCollection.CreateOrUpdateAsync(true, remoteVirtualNetworkName, vnet);

            Response <VirtualNetwork> remoteVirtualNetwork = await remoteVirtualNetworkOperation.WaitForCompletionAsync();;

            // Get Peerings in the vnet
            var virtualNetworkPeeringCollection = resourceGroup.GetVirtualNetworks().Get(vnetName).Value.GetVirtualNetworkPeerings();
            AsyncPageable <VirtualNetworkPeering> listPeeringAP = virtualNetworkPeeringCollection.GetAllAsync();
            List <VirtualNetworkPeering>          listPeering   = await listPeeringAP.ToEnumerableAsync();

            Assert.IsEmpty(listPeering);

            var peering = new VirtualNetworkPeeringData
            {
                Name = vnetPeeringName,
                RemoteVirtualNetwork = new WritableSubResource
                {
                    Id = remoteVirtualNetwork.Value.Id
                },
                AllowForwardedTraffic     = true,
                AllowVirtualNetworkAccess = false
            };

            // Put peering in the vnet
            var putPeeringOperation = await virtualNetworkPeeringCollection.CreateOrUpdateAsync(true, vnetPeeringName, peering);

            Response <VirtualNetworkPeering> putPeering = await putPeeringOperation.WaitForCompletionAsync();;

            Assert.NotNull(putPeering.Value.Data.Etag);
            Assert.AreEqual(vnetPeeringName, putPeering.Value.Data.Name);
            Assert.AreEqual(remoteVirtualNetwork.Value.Id, putPeering.Value.Data.RemoteVirtualNetwork.Id);
            Assert.AreEqual(peering.AllowForwardedTraffic, putPeering.Value.Data.AllowForwardedTraffic);
            Assert.AreEqual(peering.AllowVirtualNetworkAccess, putPeering.Value.Data.AllowVirtualNetworkAccess);
            Assert.False(putPeering.Value.Data.UseRemoteGateways);
            Assert.False(putPeering.Value.Data.AllowGatewayTransit);
            Assert.AreEqual(VirtualNetworkPeeringState.Initiated, putPeering.Value.Data.PeeringState);

            // get peering
            Response <VirtualNetworkPeering> getPeering = await virtualNetworkPeeringCollection.GetAsync(vnetPeeringName);

            Assert.AreEqual(getPeering.Value.Data.Etag, putPeering.Value.Data.Etag);
            Assert.AreEqual(vnetPeeringName, getPeering.Value.Data.Name);
            Assert.AreEqual(remoteVirtualNetwork.Value.Id, getPeering.Value.Data.RemoteVirtualNetwork.Id);
            Assert.AreEqual(peering.AllowForwardedTraffic, getPeering.Value.Data.AllowForwardedTraffic);
            Assert.AreEqual(peering.AllowVirtualNetworkAccess, getPeering.Value.Data.AllowVirtualNetworkAccess);
            Assert.False(getPeering.Value.Data.UseRemoteGateways);
            Assert.False(getPeering.Value.Data.AllowGatewayTransit);
            Assert.AreEqual(VirtualNetworkPeeringState.Initiated, getPeering.Value.Data.PeeringState);

            // list peering
            listPeeringAP = virtualNetworkPeeringCollection.GetAllAsync();
            listPeering   = await listPeeringAP.ToEnumerableAsync();

            Has.One.EqualTo(listPeering);
            Assert.AreEqual(listPeering.ElementAt(0).Data.Etag, putPeering.Value.Data.Etag);
            Assert.AreEqual(vnetPeeringName, listPeering.ElementAt(0).Data.Name);
            Assert.AreEqual(remoteVirtualNetwork.Value.Id, listPeering.ElementAt(0).Data.RemoteVirtualNetwork.Id);
            Assert.AreEqual(peering.AllowForwardedTraffic, listPeering.ElementAt(0).Data.AllowForwardedTraffic);
            Assert.AreEqual(peering.AllowVirtualNetworkAccess, listPeering.ElementAt(0).Data.AllowVirtualNetworkAccess);
            Assert.False(listPeering.ElementAt(0).Data.UseRemoteGateways);
            Assert.False(listPeering.ElementAt(0).Data.AllowGatewayTransit);
            Assert.AreEqual(VirtualNetworkPeeringState.Initiated, listPeering.ElementAt(0).Data.PeeringState);

            // delete peering
            await getPeering.Value.DeleteAsync(true);

            listPeeringAP = virtualNetworkPeeringCollection.GetAllAsync();
            listPeering   = await listPeeringAP.ToEnumerableAsync();

            Assert.IsEmpty(listPeering);

            // Delete Vnet
            await putVnetResponse.Value.DeleteAsync(true);

            await remoteVirtualNetwork.Value.DeleteAsync(true);

            // Get all Vnets
            getAllVnetsAP = virtualNetworkCollection.GetAllAsync();
            List <VirtualNetwork> getAllVnets = await getAllVnetsAP.ToEnumerableAsync();

            Assert.IsEmpty(getAllVnets);
        }