public void CreateDirectPeering()
        {
            using (var context = MockContext.Start(this.GetType().FullName))
            {
                this.client = context.GetServiceClient <PeeringManagementClient>();

                //Create a Resource Group
                this.resourcesClient = context.GetServiceClient <ResourceManagementClient>();
                var rgname        = TestUtilities.GenerateName("res");
                var resourceGroup = resourcesClient.ResourceGroups.CreateOrUpdate(
                    rgname,
                    new ResourceGroup
                {
                    Location = "centralus"
                });

                //Create Direct Peering
                var directConnection = new DirectConnection
                {
                    BandwidthInMbps     = 10000,
                    PeeringDBFacilityId = 63,
                    BgpSession          = new Microsoft.Azure.Management.Peering.Models.BgpSession()
                    {
                        SessionPrefixV4         = this.CreateIpv4Address(true),
                        MaxPrefixesAdvertisedV4 = 20000
                    }
                };

                SubResource asnReference            = new SubResource(this.client.PeerAsns.Get($"Contoso{65000}").Id);
                var         directPeeringProperties = new PeeringPropertiesDirect(new List <DirectConnection>(), false, asnReference);
                directPeeringProperties.Connections.Add(directConnection);
                var peeringModel = new PeeringModel
                {
                    PeeringLocation = "Amsterdam",
                    Sku             = new PeeringSku("Basic_Direct_Free"),
                    Direct          = directPeeringProperties,
                    Location        = "centralus",
                    Kind            = "Direct"
                };
                var name    = $"directpeering3103";
                var result  = this.client.Peerings.CreateOrUpdate(rgname, name, peeringModel);
                var peering = this.client.Peerings.Get(rgname, name);
                Assert.NotNull(peering);
                Assert.Equal(name, peering.Name);
            }
        }
        public void CreateDirectPeering()
        {
            using (var context = MockContext.Start(this.GetType()))
            {
                this.client = context.GetServiceClient <PeeringManagementClient>();

                //Create a Resource Group
                this.resourcesClient = context.GetServiceClient <ResourceManagementClient>();
                var rgname        = TestUtilities.GenerateName("res");
                var resourceGroup = resourcesClient.ResourceGroups.CreateOrUpdate(
                    rgname,
                    new ResourceGroup
                {
                    Location = "centralus"
                });

                //Create Direct Peering
                var directConnection = new DirectConnection
                {
                    ConnectionIdentifier   = Guid.NewGuid().ToString(),
                    BandwidthInMbps        = 10000,
                    PeeringDBFacilityId    = 99999,
                    SessionAddressProvider = SessionAddressProvider.Peer,
                    UseForPeeringService   = false,
                    BgpSession             = new Microsoft.Azure.Management.Peering.Models.BgpSession()
                    {
                        SessionPrefixV4         = this.CreateIpv4Address(true),
                        MaxPrefixesAdvertisedV4 = 20000
                    }
                };

                //Create Asn
                int asn   = 65003;
                var subId = this.CreatePeerAsn(context, asn, $"AS{asn}", isApproved: true);

                SubResource asnReference            = new SubResource(subId);
                var         directPeeringProperties = new PeeringPropertiesDirect(new List <DirectConnection>(), false, asnReference, DirectPeeringType.Edge);
                directPeeringProperties.Connections.Add(directConnection);
                var peeringModel = new PeeringModel
                {
                    PeeringLocation = "Seattle",
                    Sku             = new PeeringSku("Basic_Direct_Free"),
                    Direct          = directPeeringProperties,
                    Location        = "centralus",
                    Kind            = "Direct"
                };
                var name = $"directpeering3103";
                try
                {
                    var result  = this.client.Peerings.CreateOrUpdate(rgname, name, peeringModel);
                    var peering = this.client.Peerings.Get(rgname, name);
                    Assert.NotNull(peering);
                }
                catch (Exception ex)
                {
                    Assert.Contains("NotFound", ex.Message);
                }
                finally
                {
                    Assert.True(this.DeletePeering(context, name, rgname));
                    Assert.True(this.DeletePeerAsn(context, $"AS{asn}"));
                    //Assert.True(this.DeleteResourceGroup(context, rgname));
                }
            }
        }
        public void CreateGetListAndDeleteRegisteredAsns()
        {
            using (MockContext context = MockContext.Start(this.GetType().FullName))
            {
                this.MockClients(context);

                // Create a Resource Group
                var rgname = this.CreateResourceGroup().Name;

                PeeringModel peering   = null;
                var          asn       = int.Parse(MockServer.GetVariable("asnInteger", this.random.Next(1, 65000).ToString()));
                var          peerAsnId = this.CreatePeerAsn(asn, $"AS{asn}", isApproved: true);
                var          peerAsn   = this.Client.PeerAsns.Get(this.GetPeerAsnName(peerAsnId));
                try
                {
                    var directPeeringProperties = new PeeringPropertiesDirect(
                        new List <DirectConnection>(),
                        true,
                        new SubResource(peerAsnId),
                        DirectPeeringType.IxRs);
                    var locations = this.Client.PeeringLocations.List("Direct", DirectPeeringType.Edge);
                    var loc       = locations.FirstOrDefault(x => x.Name == "Seattle");

                    // Create Direct Peering
                    var directConnection = new DirectConnection
                    {
                        ConnectionIdentifier = Guid.NewGuid().ToString(),
                        BandwidthInMbps      = 10000,
                        PeeringDBFacilityId  =
                            loc.Direct.PeeringFacilities
                            .FirstOrDefault(x => x.PeeringDBFacilityId == 99999)
                            ?.PeeringDBFacilityId,
                        SessionAddressProvider = SessionAddressProvider.Microsoft,
                        UseForPeeringService   = true
                    };
                    directPeeringProperties.Connections.Add(directConnection);
                    var peeringModel = new PeeringModel
                    {
                        PeeringLocation = loc.Name,
                        Sku             = new PeeringSku("Premium_Direct_Free"),
                        Direct          = directPeeringProperties,
                        Location        = loc.AzureRegion,
                        Kind            = "Direct"
                    };
                    var name = TestUtilities.GenerateName("direct_");
                    try
                    {
                        var result = this.Client.Peerings.CreateOrUpdate(rgname, name, peeringModel);
                        peering = this.Client.Peerings.Get(rgname, name);
                        Assert.NotNull(peering);
                    }
                    catch (Exception ex)
                    {
                        Assert.Contains("NotFound", ex.Message);
                    }

                    var rgName            = this.GetResourceGroup(peering.Id);
                    var pName             = this.GetPeeringName(peering.Id);
                    var registeredAsnName = $"{peering.Name}_{peerAsn.PeerAsnProperty}";
                    var resource          = this.Client.RegisteredAsns.CreateOrUpdate(
                        rgName,
                        pName,
                        registeredAsnName,
                        peerAsn.PeerAsnProperty);
                    Assert.NotNull(resource);
                    resource = this.Client.RegisteredAsns.Get(rgName, pName, registeredAsnName);
                    Assert.NotNull(resource);
                    var list = this.Client.RegisteredAsns.ListByPeering(rgname, pName);
                    Assert.NotNull(list);
                    this.Client.RegisteredAsns.Delete(
                        rgName,
                        pName,
                        registeredAsnName);
                    resource = this.Client.RegisteredAsns.Get(
                        rgName,
                        pName,
                        registeredAsnName);
                    Assert.NotNull(resource);
                }
                finally
                {
                    Assert.True(this.DeletePeering(peering.Name, this.GetResourceGroup(peering.Id)));
                    Assert.True(this.DeletePeerAsn($"AS{asn}"));
                }
            }
        }
        public void CreateGetListAndDeleteRegisteredPrefix()
        {
            using (MockContext context = MockContext.Start(this.GetType().FullName))
            {
                this.MockClients(context);
                PeeringModel peering    = null;
                var          asn        = int.Parse(TestUtilities.GenerateName("0"));
                var          prefixName = TestUtilities.GenerateName("prefix_");
                try
                {
                    // Create a Resource Group
                    var rgname = this.CreateResourceGroup().Name;

                    // Create Asn
                    var subId = this.CreatePeerAsn(asn, $"AS{asn}", isApproved: true, peerName: "FooBar");

                    // Set prefix
                    var prefix = new PeeringRegisteredPrefix {
                        Prefix = CreateIpv4Address(true)
                    };

                    SubResource asnReference            = new SubResource(subId);
                    var         directPeeringProperties = new PeeringPropertiesDirect(
                        new List <DirectConnection>(),
                        true,
                        asnReference,
                        DirectPeeringType.Edge);
                    var locations = this.Client.PeeringLocations.List("Direct", DirectPeeringType.Edge);
                    var loc       = locations.FirstOrDefault(x => x.Name == "Seattle");

                    // Create Direct Peering
                    var directConnection = new DirectConnection
                    {
                        ConnectionIdentifier = Guid.NewGuid().ToString(),
                        BandwidthInMbps      = 10000,
                        PeeringDBFacilityId  =
                            loc.Direct.PeeringFacilities.FirstOrDefault(x => x.PeeringDBFacilityId == 99999)
                            ?.PeeringDBFacilityId,
                        SessionAddressProvider = SessionAddressProvider.Peer,
                        BgpSession             = new BgpSession
                        {
                            SessionPrefixV4 = prefix.Prefix, MaxPrefixesAdvertisedV4 = 20000
                        },
                        UseForPeeringService = true
                    };

                    directPeeringProperties.Connections.Add(directConnection);
                    var peeringModel = new PeeringModel
                    {
                        PeeringLocation = loc.Name,
                        Sku             = new PeeringSku("Premium_Direct_Free"),
                        Direct          = directPeeringProperties,
                        Location        = loc.AzureRegion,
                        Kind            = "Direct"
                    };
                    var name = TestUtilities.GenerateName("direct_");
                    try
                    {
                        var result = this.Client.Peerings.CreateOrUpdate(rgname, name, peeringModel);
                        peering = this.Client.Peerings.Get(rgname, name);
                        Assert.NotNull(peering);
                    }
                    catch (Exception ex)
                    {
                        Assert.Contains("NotFound", ex.Message);
                    }

                    var resourceGroupName    = this.GetResourceGroup(peering?.Id);
                    var peeringName          = this.GetPeeringName(peering?.Id);
                    var registeredPrefixName = $"{peering?.Name}{prefixName}";

                    var resource = this.Client.RegisteredPrefixes.CreateOrUpdate(
                        resourceGroupName,
                        peeringName,
                        registeredPrefixName,
                        this.CreateIpv4Address(true));
                    Assert.NotNull(resource.PeeringServicePrefixKey);
                    resource = this.Client.RegisteredPrefixes.Get(
                        resourceGroupName,
                        peeringName,
                        registeredPrefixName);
                    Assert.NotNull(resource.PeeringServicePrefixKey);
                    var list = this.Client.RegisteredPrefixes.ListByPeering(resourceGroupName, peeringName);
                    Assert.NotNull(list.FirstOrDefault()?.PeeringServicePrefixKey);
                    this.Client.RegisteredPrefixes.Delete(
                        resourceGroupName,
                        peeringName,
                        registeredPrefixName);
                    try
                    {
                        resource = this.Client.RegisteredPrefixes.Get(
                            resourceGroupName,
                            peeringName,
                            registeredPrefixName);
                    }
                    catch (Exception ex)
                    {
                        Assert.NotNull(ex.Message);
                    }
                }
                finally
                {
                    Assert.True(this.DeletePeering(peering.Name, this.GetResourceGroup(peering.Id)));
                    Assert.True(this.DeletePeerAsn($"AS{asn}"));
                }
            }
        }