/// <summary>
        /// The create exchange peering.
        /// </summary>
        /// <param name="asn">
        /// The asn.
        /// </param>
        /// <returns>
        /// The <see cref="PeeringModel"/>.
        /// </returns>
        private PeeringModel CreateExchangePeeringModel(int asn = 65000)
        {
            // create resource group
            var resourceGroup = this.CreateResourceGroup();

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

            // Create Exchange Peering
            var ipAddress          = int.Parse(MockServer.GetVariable("ipAddress", this.random.Next(150, 190).ToString()));
            var exchangeConnection = new ExchangeConnection
            {
                ConnectionIdentifier = Guid.NewGuid().ToString(),
                PeeringDBFacilityId  = 99999,
                BgpSession           = new Microsoft.Azure.Management.Peering.Models.BgpSession()
                {
                    PeerSessionIPv4Address  = $"10.12.97.{ipAddress}",
                    MaxPrefixesAdvertisedV4 = 20000
                }
            };
            SubResource asnReference = new SubResource(subId);
            var         exchangePeeringProperties = new PeeringPropertiesExchange(
                new List <ExchangeConnection>(),
                asnReference);

            exchangePeeringProperties.Connections.Add(exchangeConnection);
            var peeringModel = new PeeringModel
            {
                PeeringLocation = "Seattle",
                Sku             = new PeeringSku("Basic_Exchange_Free"),
                Location        = "centralus",
                Exchange        = exchangePeeringProperties,
                Kind            = "Exchange",
                Tags            = new Dictionary <string, string>
                {
                    { TestUtilities.GenerateName("tfs_"), "Active" }
                }
            };
            var name = $"exchangepeering{asn}";

            try
            {
                var result  = this.Client.Peerings.CreateOrUpdate(resourceGroup.Name, name, peeringModel);
                var peering = this.Client.Peerings.Get(resourceGroup.Name, name);
                Assert.NotNull(peering);
                Assert.Equal(name, peering.Name);
                return(peering);
            }
            catch (Exception ex)
            {
                Assert.Contains("NotFound", ex.Message);
            }
            return(null);
        }
Exemple #2
0
 public void CreateGetListAndDeleteRegisteredAns()
 {
     using (MockContext context = MockContext.Start(this.GetType().FullName))
     {
         this.MockClients(context);
         PeeringModel peering           = null;
         var          asn               = int.Parse(MockServer.GetVariable("asnInteger", this.random.Next(1, 65000).ToString()));
         var          registeredAsnName = TestUtilities.GenerateName("_asn");
         try
         {
             peering = this.CreateExchangePeeringModel(asn);
             var registeredAsn = new PeeringRegisteredAsn {
                 Asn = asn
             };
             var resource = this.Client.RegisteredAsns.CreateOrUpdate(
                 this.GetResourceGroup(peering.Id),
                 this.GetPeeringName(peering.Id),
                 $"{peering.Name}{registeredAsnName}",
                 registeredAsn.Asn);
             Assert.Null(resource);
             resource = this.Client.RegisteredAsns.Get(
                 this.GetResourceGroup(peering.Id),
                 this.GetPeeringName(peering.Id),
                 $"{peering.Name}{registeredAsnName}");
             Assert.Null(resource);
             var list = this.Client.RegisteredAsns.ListByPeering(
                 this.GetResourceGroup(peering.Id),
                 this.GetPeeringName(peering.Id));
             Assert.Null(list);
             this.Client.RegisteredAsns.Delete(
                 this.GetResourceGroup(peering.Id),
                 this.GetPeeringName(peering.Id),
                 $"{peering.Name}{registeredAsnName}");
             resource = this.Client.RegisteredAsns.Get(
                 this.GetResourceGroup(peering.Id),
                 this.GetPeeringName(peering.Id),
                 $"{peering.Name}{registeredAsnName}");
             Assert.Null(resource);
         }
         finally
         {
             Assert.True(this.DeletePeering(peering.Name, this.GetResourceGroup(peering.Id)));
             Assert.True(this.DeletePeerAsn($"AS{asn}"));
         }
     }
 }
        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}"));
                }
            }
        }