/// <summary> /// Convert a CaaS network to an OpenStack network. /// </summary> /// <remarks> /// Anthony, 4/15/2015. /// </remarks> /// <param name="network"> /// The network. /// </param> /// <param name="tenantId"> /// Identifier for the tenant. /// </param> /// <returns> /// A Network. /// </returns> public static Network CaaSNetworkToNetwork(NetworkWithLocationsNetwork network, string tenantId) { return new Network { AdminStateUp = true, Id = network.id, Name = network.name, ProviderNetworkType = "local", ProviderPhysicalNetwork = null, RouterExternal = true, SegmentationId = null, Shared = true, Status = "ACTIVE", Subnets = new[] { network.id }, // Each network maps to a subnet with the same id. TenantId = tenantId }; }
/// <summary> /// CaaS network to subnet. /// </summary> /// <remarks> /// Anthony, 4/15/2015. /// </remarks> /// <param name="network"> /// The network. /// </param> /// <param name="tenantId"> /// Identifier for the tenant. /// </param> /// <returns> /// A SubnetDetail. /// </returns> public static SubnetDetail CaaSNetworkToSubnet(NetworkWithLocationsNetwork network, string tenantId) { IPAddress networkAddress = IPAddress.Parse(network.privateNet); byte[] first3Segments = networkAddress.MapToIPv4().GetAddressBytes().Take(3).ToArray(); byte[] firstAddress = first3Segments.Concat(new byte[] { 10 }).ToArray(); byte[] lastAddress = first3Segments.Concat(new byte[] { 254 }).ToArray(); byte[] gatewayAddress = first3Segments.Concat(new byte[] { 1 }).ToArray(); return new SubnetDetail { AllocationPools = new List<AllocationPool> { new AllocationPool { Start = (new IPAddress(firstAddress)).ToString(), End = (new IPAddress(lastAddress)).ToString() } }, Cidr = network.privateNet + "/24", // always /24 in MCP 1.0 DnsNameservers = new List<object>(0), EnableDhcp = false, GatewayIp = (new IPAddress(gatewayAddress)).ToString(), HostRoutes = new List<object>(0), Id = network.id, IpVersion = 4, Name = network.name, NetworkId = network.id, TenantId = tenantId }; }