public override void Execute()
        {
            base.Execute();

            var peering =
                this.ExpressRouteCircuit.Peerings.SingleOrDefault(
                    resource =>
                    string.Equals(resource.Name, "AzurePrivatePeering", System.StringComparison.CurrentCultureIgnoreCase));

            if (peering == null)
            {
                throw new ArgumentException(Properties.Resources.ExpressRoutePrivatePeeringNotFound);
            }

            var circuitconnection = peering.Connections.SingleOrDefault(
                resource =>
                string.Equals(resource.Name, Name, System.StringComparison.CurrentCultureIgnoreCase));

            if (circuitconnection != null)
            {
                throw new ArgumentException(string.Format(Properties.Resources.ExpressRouteCircuitConnectionAlreadyAdded, Name));
            }

            circuitconnection = new PSExpressRouteCircuitConnection();

            circuitconnection.Name = this.Name;

            circuitconnection.ExpressRouteCircuitPeering    = new PSResourceId();
            circuitconnection.ExpressRouteCircuitPeering.Id = peering.Id;

            circuitconnection.PeerExpressRouteCircuitPeering    = new PSResourceId();
            circuitconnection.PeerExpressRouteCircuitPeering.Id = this.PeerExpressRouteCircuitPeering;

            if (!string.IsNullOrWhiteSpace(this.AuthorizationKey))
            {
                circuitconnection.AuthorizationKey = this.AuthorizationKey;
            }

            if (this.AddressPrefixType == IPv6)
            {
                // Create new PSExpressRouteIPv6AddressPrefix()
                var expressRouteIPv6AddressPrefix = new PSExpressRouteCircuitConnectionIPv6ConnectionConfig();
                expressRouteIPv6AddressPrefix.AddressPrefix   = AddressPrefix;
                circuitconnection.IPv6CircuitConnectionConfig = expressRouteIPv6AddressPrefix;
            }
            else
            {
                // For IPv4
                circuitconnection.AddressPrefix = this.AddressPrefix;
            }

            peering.Connections.Add(circuitconnection);

            WriteObject(this.ExpressRouteCircuit);
        }
예제 #2
0
        public override void Execute()
        {
            base.Execute();

            var peering = this.ExpressRouteCircuit.Peerings.SingleOrDefault(
                resource =>
                string.Equals(resource.Name, "AzurePrivatePeering", System.StringComparison.CurrentCultureIgnoreCase));

            if (peering == null)
            {
                throw new ArgumentException(Properties.Resources.ExpressRoutePrivatePeeringNotFound);
            }

            var circuitconnection = peering.Connections.SingleOrDefault(
                resource =>
                string.Equals(resource.Name, Name, StringComparison.CurrentCultureIgnoreCase));

            if (null == circuitconnection)
            {
                throw new ArgumentException(string.Format(Properties.Resources.ExpressRouteCircuitConnectionNotFound, Name));
            }

            circuitconnection.Name = this.Name;

            if (null != peering.Id)
            {
                circuitconnection.ExpressRouteCircuitPeering.Id = peering.Id;
            }

            if (null != this.PeerExpressRouteCircuitPeering)
            {
                circuitconnection.PeerExpressRouteCircuitPeering.Id = this.PeerExpressRouteCircuitPeering;
            }

            if (!string.IsNullOrWhiteSpace(this.AuthorizationKey))
            {
                circuitconnection.AuthorizationKey = this.AuthorizationKey;
            }

            if (this.AddressPrefix != null)
            {
                if (AddressTypeUtils.IsIpv6(this.AddressPrefixType))
                {
                    if (circuitconnection.IPv6CircuitConnectionConfig != null)
                    {
                        circuitconnection.IPv6CircuitConnectionConfig.AddressPrefix = this.AddressPrefix;
                    }
                    else
                    {
                        var ipv6AddressPrefix = new PSExpressRouteCircuitConnectionIPv6ConnectionConfig();
                        ipv6AddressPrefix.AddressPrefix = this.AddressPrefix;
                        circuitconnection.IPv6CircuitConnectionConfig = ipv6AddressPrefix;
                    }
                }
                else
                {
                    circuitconnection.AddressPrefix = this.AddressPrefix;
                }
            }

            WriteObject(this.ExpressRouteCircuit);
        } // end of Execute()