// // Retrieve the list of IP prefixes associated with this network. // func (m *NetworkManagerImpl) NetworkIPPrefixList(network *types.VirtualNetwork) ([]string, error) { prefixList := make([]string, 0) refList, err := network.GetNetworkIpamRefs() if err != nil { return nil, err } for _, ref := range refList { attr := ref.Attr.(types.VnSubnetsType) for _, ipamSubnet := range attr.IpamSubnets { prefixList = append(prefixList, fmt.Sprintf("%s/%d", ipamSubnet.Subnet.IpPrefix, ipamSubnet.Subnet.IpPrefixLen)) } } return prefixList, nil }
func (m *NetworkManagerImpl) GetGatewayAddress(network *types.VirtualNetwork) (string, error) { refs, err := network.GetNetworkIpamRefs() if err != nil { glog.Errorf("Get network %s network-ipam refs: %v", network.GetName(), err) return "", err } attr := refs[0].Attr.(types.VnSubnetsType) if len(attr.IpamSubnets) == 0 { glog.Errorf("Network %s has no subnets configured", network.GetName()) return "", fmt.Errorf("Network %s: empty subnet list", network.GetName()) } gateway := attr.IpamSubnets[0].DefaultGateway if gateway == "" { glog.Errorf("Gateway for %s is empty", network.GetName()) return "", fmt.Errorf("Gateway is empty: %+v", attr.IpamSubnets) } return gateway, nil }
func buildNetworkInfo(net *types.VirtualNetwork, detail bool) ( *NetworkInfo, error) { var subnets []string var policies []string refList, err := net.GetNetworkIpamRefs() if err != nil { return nil, err } for _, ref := range refList { attr := ref.Attr.(types.VnSubnetsType) for _, ipamSubnet := range attr.IpamSubnets { subnets = append(subnets, fmt.Sprintf("%s/%d", ipamSubnet.Subnet.IpPrefix, ipamSubnet.Subnet.IpPrefixLen)) } } if detail { refList, err = net.GetNetworkPolicyRefs() for _, ref := range refList { policies = append(policies, strings.Join(ref.To, ":")) } } info := &NetworkInfo{ net.GetUuid(), net.GetName(), net.GetIdPerms().Enable, net.GetVirtualNetworkProperties().NetworkId, net.GetVirtualNetworkProperties().AllowTransit, net.GetVirtualNetworkProperties().ForwardingMode, subnets, policies, net.GetRouteTargetList().RouteTarget, } return info, err }