Search in sources :

Example 6 with PodVlanMapVO

use of com.cloud.dc.PodVlanMapVO in project cloudstack by apache.

the class NetworkOrchestrator method configure.

@Override
@DB
public boolean configure(final String name, final Map<String, Object> params) throws ConfigurationException {
    // populate providers
    final Map<Network.Service, Set<Network.Provider>> defaultSharedNetworkOfferingProviders = new HashMap<Network.Service, Set<Network.Provider>>();
    final Set<Network.Provider> defaultProviders = new HashSet<Network.Provider>();
    defaultProviders.add(Network.Provider.VirtualRouter);
    defaultSharedNetworkOfferingProviders.put(Service.Dhcp, defaultProviders);
    defaultSharedNetworkOfferingProviders.put(Service.Dns, defaultProviders);
    defaultSharedNetworkOfferingProviders.put(Service.UserData, defaultProviders);
    final Map<Network.Service, Set<Network.Provider>> defaultIsolatedNetworkOfferingProviders = defaultSharedNetworkOfferingProviders;
    defaultIsolatedNetworkOfferingProviders.put(Service.Dhcp, defaultProviders);
    defaultIsolatedNetworkOfferingProviders.put(Service.Dns, defaultProviders);
    defaultIsolatedNetworkOfferingProviders.put(Service.UserData, defaultProviders);
    defaultIsolatedNetworkOfferingProviders.put(Service.Firewall, defaultProviders);
    defaultIsolatedNetworkOfferingProviders.put(Service.Gateway, defaultProviders);
    defaultIsolatedNetworkOfferingProviders.put(Service.Lb, defaultProviders);
    defaultIsolatedNetworkOfferingProviders.put(Service.StaticNat, defaultProviders);
    defaultIsolatedNetworkOfferingProviders.put(Service.PortForwarding, defaultProviders);
    defaultIsolatedNetworkOfferingProviders.put(Service.Vpn, defaultProviders);
    final Map<Network.Service, Set<Network.Provider>> defaultSharedSGEnabledNetworkOfferingProviders = new HashMap<Network.Service, Set<Network.Provider>>();
    defaultSharedSGEnabledNetworkOfferingProviders.put(Service.Dhcp, defaultProviders);
    defaultSharedSGEnabledNetworkOfferingProviders.put(Service.Dns, defaultProviders);
    defaultSharedSGEnabledNetworkOfferingProviders.put(Service.UserData, defaultProviders);
    final Set<Provider> sgProviders = new HashSet<Provider>();
    sgProviders.add(Provider.SecurityGroupProvider);
    defaultSharedSGEnabledNetworkOfferingProviders.put(Service.SecurityGroup, sgProviders);
    final Map<Network.Service, Set<Network.Provider>> defaultIsolatedSourceNatEnabledNetworkOfferingProviders = new HashMap<Network.Service, Set<Network.Provider>>();
    defaultProviders.clear();
    defaultProviders.add(Network.Provider.VirtualRouter);
    defaultIsolatedSourceNatEnabledNetworkOfferingProviders.put(Service.Dhcp, defaultProviders);
    defaultIsolatedSourceNatEnabledNetworkOfferingProviders.put(Service.Dns, defaultProviders);
    defaultIsolatedSourceNatEnabledNetworkOfferingProviders.put(Service.UserData, defaultProviders);
    defaultIsolatedSourceNatEnabledNetworkOfferingProviders.put(Service.Firewall, defaultProviders);
    defaultIsolatedSourceNatEnabledNetworkOfferingProviders.put(Service.Gateway, defaultProviders);
    defaultIsolatedSourceNatEnabledNetworkOfferingProviders.put(Service.Lb, defaultProviders);
    defaultIsolatedSourceNatEnabledNetworkOfferingProviders.put(Service.SourceNat, defaultProviders);
    defaultIsolatedSourceNatEnabledNetworkOfferingProviders.put(Service.StaticNat, defaultProviders);
    defaultIsolatedSourceNatEnabledNetworkOfferingProviders.put(Service.PortForwarding, defaultProviders);
    defaultIsolatedSourceNatEnabledNetworkOfferingProviders.put(Service.Vpn, defaultProviders);
    final Map<Network.Service, Set<Network.Provider>> defaultVPCOffProviders = new HashMap<Network.Service, Set<Network.Provider>>();
    defaultProviders.clear();
    defaultProviders.add(Network.Provider.VPCVirtualRouter);
    defaultVPCOffProviders.put(Service.Dhcp, defaultProviders);
    defaultVPCOffProviders.put(Service.Dns, defaultProviders);
    defaultVPCOffProviders.put(Service.UserData, defaultProviders);
    defaultVPCOffProviders.put(Service.NetworkACL, defaultProviders);
    defaultVPCOffProviders.put(Service.Gateway, defaultProviders);
    defaultVPCOffProviders.put(Service.Lb, defaultProviders);
    defaultVPCOffProviders.put(Service.SourceNat, defaultProviders);
    defaultVPCOffProviders.put(Service.StaticNat, defaultProviders);
    defaultVPCOffProviders.put(Service.PortForwarding, defaultProviders);
    defaultVPCOffProviders.put(Service.Vpn, defaultProviders);
    Transaction.execute(new TransactionCallbackNoReturn() {

        @Override
        public void doInTransactionWithoutResult(final TransactionStatus status) {
            NetworkOfferingVO offering = null;
            //#1 - quick cloud network offering
            if (_networkOfferingDao.findByUniqueName(NetworkOffering.QuickCloudNoServices) == null) {
                offering = _configMgr.createNetworkOffering(NetworkOffering.QuickCloudNoServices, "Offering for QuickCloud with no services", TrafficType.Guest, null, true, Availability.Optional, null, new HashMap<Network.Service, Set<Network.Provider>>(), true, Network.GuestType.Shared, false, null, true, null, true, false, null, false, null, true);
                offering.setState(NetworkOffering.State.Enabled);
                _networkOfferingDao.update(offering.getId(), offering);
            }
            //#2 - SG enabled network offering
            if (_networkOfferingDao.findByUniqueName(NetworkOffering.DefaultSharedNetworkOfferingWithSGService) == null) {
                offering = _configMgr.createNetworkOffering(NetworkOffering.DefaultSharedNetworkOfferingWithSGService, "Offering for Shared Security group enabled networks", TrafficType.Guest, null, true, Availability.Optional, null, defaultSharedNetworkOfferingProviders, true, Network.GuestType.Shared, false, null, true, null, true, false, null, false, null, true);
                offering.setState(NetworkOffering.State.Enabled);
                _networkOfferingDao.update(offering.getId(), offering);
            }
            //#3 - shared network offering with no SG service
            if (_networkOfferingDao.findByUniqueName(NetworkOffering.DefaultSharedNetworkOffering) == null) {
                offering = _configMgr.createNetworkOffering(NetworkOffering.DefaultSharedNetworkOffering, "Offering for Shared networks", TrafficType.Guest, null, true, Availability.Optional, null, defaultSharedNetworkOfferingProviders, true, Network.GuestType.Shared, false, null, true, null, true, false, null, false, null, true);
                offering.setState(NetworkOffering.State.Enabled);
                _networkOfferingDao.update(offering.getId(), offering);
            }
            //#4 - default isolated offering with Source nat service
            if (_networkOfferingDao.findByUniqueName(NetworkOffering.DefaultIsolatedNetworkOfferingWithSourceNatService) == null) {
                offering = _configMgr.createNetworkOffering(NetworkOffering.DefaultIsolatedNetworkOfferingWithSourceNatService, "Offering for Isolated networks with Source Nat service enabled", TrafficType.Guest, null, false, Availability.Required, null, defaultIsolatedSourceNatEnabledNetworkOfferingProviders, true, Network.GuestType.Isolated, false, null, true, null, false, false, null, false, null, true);
                offering.setState(NetworkOffering.State.Enabled);
                _networkOfferingDao.update(offering.getId(), offering);
            }
            //#5 - default vpc offering with LB service
            if (_networkOfferingDao.findByUniqueName(NetworkOffering.DefaultIsolatedNetworkOfferingForVpcNetworks) == null) {
                offering = _configMgr.createNetworkOffering(NetworkOffering.DefaultIsolatedNetworkOfferingForVpcNetworks, "Offering for Isolated VPC networks with Source Nat service enabled", TrafficType.Guest, null, false, Availability.Optional, null, defaultVPCOffProviders, true, Network.GuestType.Isolated, false, null, false, null, false, false, null, false, null, true);
                offering.setState(NetworkOffering.State.Enabled);
                _networkOfferingDao.update(offering.getId(), offering);
            }
            //#6 - default vpc offering with no LB service
            if (_networkOfferingDao.findByUniqueName(NetworkOffering.DefaultIsolatedNetworkOfferingForVpcNetworksNoLB) == null) {
                //remove LB service
                defaultVPCOffProviders.remove(Service.Lb);
                offering = _configMgr.createNetworkOffering(NetworkOffering.DefaultIsolatedNetworkOfferingForVpcNetworksNoLB, "Offering for Isolated VPC networks with Source Nat service enabled and LB service disabled", TrafficType.Guest, null, false, Availability.Optional, null, defaultVPCOffProviders, true, Network.GuestType.Isolated, false, null, false, null, false, false, null, false, null, true);
                offering.setState(NetworkOffering.State.Enabled);
                _networkOfferingDao.update(offering.getId(), offering);
            }
            //#7 - isolated offering with source nat disabled
            if (_networkOfferingDao.findByUniqueName(NetworkOffering.DefaultIsolatedNetworkOffering) == null) {
                offering = _configMgr.createNetworkOffering(NetworkOffering.DefaultIsolatedNetworkOffering, "Offering for Isolated networks with no Source Nat service", TrafficType.Guest, null, true, Availability.Optional, null, defaultIsolatedNetworkOfferingProviders, true, Network.GuestType.Isolated, false, null, true, null, true, false, null, false, null, true);
                offering.setState(NetworkOffering.State.Enabled);
                _networkOfferingDao.update(offering.getId(), offering);
            }
            //#8 - network offering with internal lb service
            final Map<Network.Service, Set<Network.Provider>> internalLbOffProviders = new HashMap<Network.Service, Set<Network.Provider>>();
            final Set<Network.Provider> defaultVpcProvider = new HashSet<Network.Provider>();
            defaultVpcProvider.add(Network.Provider.VPCVirtualRouter);
            final Set<Network.Provider> defaultInternalLbProvider = new HashSet<Network.Provider>();
            defaultInternalLbProvider.add(Network.Provider.InternalLbVm);
            internalLbOffProviders.put(Service.Dhcp, defaultVpcProvider);
            internalLbOffProviders.put(Service.Dns, defaultVpcProvider);
            internalLbOffProviders.put(Service.UserData, defaultVpcProvider);
            internalLbOffProviders.put(Service.NetworkACL, defaultVpcProvider);
            internalLbOffProviders.put(Service.Gateway, defaultVpcProvider);
            internalLbOffProviders.put(Service.Lb, defaultInternalLbProvider);
            internalLbOffProviders.put(Service.SourceNat, defaultVpcProvider);
            if (_networkOfferingDao.findByUniqueName(NetworkOffering.DefaultIsolatedNetworkOfferingForVpcNetworksWithInternalLB) == null) {
                offering = _configMgr.createNetworkOffering(NetworkOffering.DefaultIsolatedNetworkOfferingForVpcNetworksWithInternalLB, "Offering for Isolated VPC networks with Internal Lb support", TrafficType.Guest, null, false, Availability.Optional, null, internalLbOffProviders, true, Network.GuestType.Isolated, false, null, false, null, false, false, null, false, null, true);
                offering.setState(NetworkOffering.State.Enabled);
                offering.setInternalLb(true);
                offering.setPublicLb(false);
                _networkOfferingDao.update(offering.getId(), offering);
            }
            final Map<Network.Service, Set<Network.Provider>> netscalerServiceProviders = new HashMap<Network.Service, Set<Network.Provider>>();
            final Set<Network.Provider> vrProvider = new HashSet<Network.Provider>();
            vrProvider.add(Provider.VirtualRouter);
            final Set<Network.Provider> sgProvider = new HashSet<Network.Provider>();
            sgProvider.add(Provider.SecurityGroupProvider);
            final Set<Network.Provider> nsProvider = new HashSet<Network.Provider>();
            nsProvider.add(Provider.Netscaler);
            netscalerServiceProviders.put(Service.Dhcp, vrProvider);
            netscalerServiceProviders.put(Service.Dns, vrProvider);
            netscalerServiceProviders.put(Service.UserData, vrProvider);
            netscalerServiceProviders.put(Service.SecurityGroup, sgProvider);
            netscalerServiceProviders.put(Service.StaticNat, nsProvider);
            netscalerServiceProviders.put(Service.Lb, nsProvider);
            final Map<Service, Map<Capability, String>> serviceCapabilityMap = new HashMap<Service, Map<Capability, String>>();
            final Map<Capability, String> elb = new HashMap<Capability, String>();
            elb.put(Capability.ElasticLb, "true");
            final Map<Capability, String> eip = new HashMap<Capability, String>();
            eip.put(Capability.ElasticIp, "true");
            serviceCapabilityMap.put(Service.Lb, elb);
            serviceCapabilityMap.put(Service.StaticNat, eip);
            if (_networkOfferingDao.findByUniqueName(NetworkOffering.DefaultSharedEIPandELBNetworkOffering) == null) {
                offering = _configMgr.createNetworkOffering(NetworkOffering.DefaultSharedEIPandELBNetworkOffering, "Offering for Shared networks with Elastic IP and Elastic LB capabilities", TrafficType.Guest, null, true, Availability.Optional, null, netscalerServiceProviders, true, Network.GuestType.Shared, false, null, true, serviceCapabilityMap, true, false, null, false, null, true);
                offering.setState(NetworkOffering.State.Enabled);
                offering.setDedicatedLB(false);
                _networkOfferingDao.update(offering.getId(), offering);
            }
        }
    });
    AssignIpAddressSearch = _ipAddressDao.createSearchBuilder();
    AssignIpAddressSearch.and("dc", AssignIpAddressSearch.entity().getDataCenterId(), Op.EQ);
    AssignIpAddressSearch.and("allocated", AssignIpAddressSearch.entity().getAllocatedTime(), Op.NULL);
    AssignIpAddressSearch.and("vlanId", AssignIpAddressSearch.entity().getVlanId(), Op.IN);
    final SearchBuilder<VlanVO> vlanSearch = _vlanDao.createSearchBuilder();
    vlanSearch.and("type", vlanSearch.entity().getVlanType(), Op.EQ);
    vlanSearch.and("networkId", vlanSearch.entity().getNetworkId(), Op.EQ);
    AssignIpAddressSearch.join("vlan", vlanSearch, vlanSearch.entity().getId(), AssignIpAddressSearch.entity().getVlanId(), JoinType.INNER);
    AssignIpAddressSearch.done();
    AssignIpAddressFromPodVlanSearch = _ipAddressDao.createSearchBuilder();
    AssignIpAddressFromPodVlanSearch.and("dc", AssignIpAddressFromPodVlanSearch.entity().getDataCenterId(), Op.EQ);
    AssignIpAddressFromPodVlanSearch.and("allocated", AssignIpAddressFromPodVlanSearch.entity().getAllocatedTime(), Op.NULL);
    AssignIpAddressFromPodVlanSearch.and("vlanId", AssignIpAddressFromPodVlanSearch.entity().getVlanId(), Op.IN);
    final SearchBuilder<VlanVO> podVlanSearch = _vlanDao.createSearchBuilder();
    podVlanSearch.and("type", podVlanSearch.entity().getVlanType(), Op.EQ);
    podVlanSearch.and("networkId", podVlanSearch.entity().getNetworkId(), Op.EQ);
    final SearchBuilder<PodVlanMapVO> podVlanMapSB = _podVlanMapDao.createSearchBuilder();
    podVlanMapSB.and("podId", podVlanMapSB.entity().getPodId(), Op.EQ);
    AssignIpAddressFromPodVlanSearch.join("podVlanMapSB", podVlanMapSB, podVlanMapSB.entity().getVlanDbId(), AssignIpAddressFromPodVlanSearch.entity().getVlanId(), JoinType.INNER);
    AssignIpAddressFromPodVlanSearch.join("vlan", podVlanSearch, podVlanSearch.entity().getId(), AssignIpAddressFromPodVlanSearch.entity().getVlanId(), JoinType.INNER);
    AssignIpAddressFromPodVlanSearch.done();
    _executor = Executors.newScheduledThreadPool(1, new NamedThreadFactory("Network-Scavenger"));
    _agentMgr.registerForHostEvents(this, true, false, true);
    Network.State.getStateMachine().registerListener(new NetworkStateListener(_configDao));
    s_logger.info("Network Manager is configured.");
    return true;
}
Also used : HashSet(java.util.HashSet) Set(java.util.Set) LinkedHashMap(java.util.LinkedHashMap) HashMap(java.util.HashMap) TransactionStatus(com.cloud.utils.db.TransactionStatus) TransactionCallbackNoReturn(com.cloud.utils.db.TransactionCallbackNoReturn) Network(com.cloud.network.Network) PhysicalNetwork(com.cloud.network.PhysicalNetwork) VlanVO(com.cloud.dc.VlanVO) HashSet(java.util.HashSet) Capability(com.cloud.network.Network.Capability) NamedThreadFactory(com.cloud.utils.concurrency.NamedThreadFactory) NetworkOrchestrationService(org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService) Service(com.cloud.network.Network.Service) ScheduledExecutorService(java.util.concurrent.ScheduledExecutorService) ResourceLimitService(com.cloud.user.ResourceLimitService) RemoteAccessVpnService(com.cloud.network.vpn.RemoteAccessVpnService) DnsServiceProvider(com.cloud.network.element.DnsServiceProvider) UserDataServiceProvider(com.cloud.network.element.UserDataServiceProvider) DhcpServiceProvider(com.cloud.network.element.DhcpServiceProvider) LoadBalancingServiceProvider(com.cloud.network.element.LoadBalancingServiceProvider) StaticNatServiceProvider(com.cloud.network.element.StaticNatServiceProvider) Provider(com.cloud.network.Network.Provider) NetworkStateListener(com.cloud.network.NetworkStateListener) PodVlanMapVO(com.cloud.dc.PodVlanMapVO) NetworkOfferingVO(com.cloud.offerings.NetworkOfferingVO) Map(java.util.Map) LinkedHashMap(java.util.LinkedHashMap) HashMap(java.util.HashMap) DB(com.cloud.utils.db.DB)

Example 7 with PodVlanMapVO

use of com.cloud.dc.PodVlanMapVO in project cloudstack by apache.

the class VlanDaoImpl method listVlansForPodByType.

@Override
public List<VlanVO> listVlansForPodByType(long podId, VlanType vlanType) {
    //FIXME: use a join statement to improve the performance (should be minor since we expect only one or two)
    List<PodVlanMapVO> vlanMaps = _podVlanMapDao.listPodVlanMapsByPod(podId);
    List<VlanVO> result = new ArrayList<VlanVO>();
    for (PodVlanMapVO pvmvo : vlanMaps) {
        VlanVO vlan = findById(pvmvo.getVlanDbId());
        if (vlan.getVlanType() == vlanType) {
            result.add(vlan);
        }
    }
    return result;
}
Also used : PodVlanMapVO(com.cloud.dc.PodVlanMapVO) ArrayList(java.util.ArrayList) VlanVO(com.cloud.dc.VlanVO)

Example 8 with PodVlanMapVO

use of com.cloud.dc.PodVlanMapVO in project cloudstack by apache.

the class VlanDaoImpl method listVlansForPod.

@Override
public List<VlanVO> listVlansForPod(long podId) {
    //FIXME: use a join statement to improve the performance (should be minor since we expect only one or two
    List<PodVlanMapVO> vlanMaps = _podVlanMapDao.listPodVlanMapsByPod(podId);
    List<VlanVO> result = new ArrayList<VlanVO>();
    for (PodVlanMapVO pvmvo : vlanMaps) {
        result.add(findById(pvmvo.getVlanDbId()));
    }
    return result;
}
Also used : PodVlanMapVO(com.cloud.dc.PodVlanMapVO) ArrayList(java.util.ArrayList) VlanVO(com.cloud.dc.VlanVO)

Example 9 with PodVlanMapVO

use of com.cloud.dc.PodVlanMapVO in project cloudstack by apache.

the class BaremetaNetworkGuru method reserve.

@Override
public void reserve(NicProfile nic, Network network, VirtualMachineProfile vm, DeployDestination dest, ReservationContext context) throws InsufficientAddressCapacityException, ConcurrentOperationException, InsufficientVirtualNetworkCapacityException {
    if (dest.getHost().getHypervisorType() != HypervisorType.BareMetal) {
        super.reserve(nic, network, vm, dest, context);
        return;
    }
    HostVO host = _hostDao.findById(dest.getHost().getId());
    _hostDao.loadDetails(host);
    String intentIp = host.getDetail(ApiConstants.IP_ADDRESS);
    if (intentIp == null) {
        super.reserve(nic, network, vm, dest, context);
        return;
    }
    String oldIp = nic.getIPv4Address();
    boolean getNewIp = false;
    if (oldIp == null) {
        getNewIp = true;
    } else {
        // we need to get a new ip address if we try to deploy a vm in a
        // different pod
        final IPAddressVO ipVO = _ipAddressDao.findByIpAndSourceNetworkId(network.getId(), oldIp);
        if (ipVO != null) {
            PodVlanMapVO mapVO = _podVlanDao.listPodVlanMapsByVlan(ipVO.getVlanId());
            if (mapVO.getPodId() != dest.getPod().getId()) {
                Transaction.execute(new TransactionCallbackNoReturn() {

                    @Override
                    public void doInTransactionWithoutResult(TransactionStatus status) {
                        // release the old ip here
                        _ipAddrMgr.markIpAsUnavailable(ipVO.getId());
                        _ipAddressDao.unassignIpAddress(ipVO.getId());
                    }
                });
                nic.setIPv4Address(null);
                getNewIp = true;
            }
        }
    }
    if (getNewIp) {
        // we don't set reservationStrategy to Create because we need this
        // method to be called again for the case when vm fails to deploy in
        // Pod1, and we try to redeploy it in Pod2
        getBaremetalIp(nic, dest.getPod(), vm, network, intentIp);
    }
    DataCenter dc = _dcDao.findById(network.getDataCenterId());
    nic.setIPv4Dns1(dc.getDns1());
    nic.setIPv4Dns2(dc.getDns2());
    /*
         * Pod pod = dest.getPod(); Pair<String, Long> ip =
         * _dcDao.allocatePrivateIpAddress(dest.getDataCenter().getId(),
         * dest.getPod().getId(), nic.getId(), context.getReservationId(),
         * intentIp); if (ip == null) { throw new
         * InsufficientAddressCapacityException
         * ("Unable to get a management ip address", Pod.class, pod.getId()); }
         *
         * nic.setIp4Address(ip.first());
         * nic.setMacAddress(NetUtils.long2Mac(NetUtils
         * .createSequenceBasedMacAddress(ip.second())));
         * nic.setGateway(pod.getGateway()); nic.setFormat(AddressFormat.Ip4);
         * String netmask = NetUtils.getCidrNetmask(pod.getCidrSize());
         * nic.setNetmask(netmask);
         * nic.setBroadcastType(BroadcastDomainType.Native);
         * nic.setBroadcastUri(null); nic.setIsolationUri(null);
         */
    s_logger.debug("Allocated a nic " + nic + " for " + vm);
}
Also used : DataCenter(com.cloud.dc.DataCenter) PodVlanMapVO(com.cloud.dc.PodVlanMapVO) TransactionStatus(com.cloud.utils.db.TransactionStatus) IPAddressVO(com.cloud.network.dao.IPAddressVO) TransactionCallbackNoReturn(com.cloud.utils.db.TransactionCallbackNoReturn) HostVO(com.cloud.host.HostVO)

Aggregations

PodVlanMapVO (com.cloud.dc.PodVlanMapVO)9 VlanVO (com.cloud.dc.VlanVO)5 IPAddressVO (com.cloud.network.dao.IPAddressVO)4 TransactionStatus (com.cloud.utils.db.TransactionStatus)4 ArrayList (java.util.ArrayList)4 TransactionCallbackNoReturn (com.cloud.utils.db.TransactionCallbackNoReturn)3 AccountVlanMapVO (com.cloud.dc.AccountVlanMapVO)2 DataCenter (com.cloud.dc.DataCenter)2 DB (com.cloud.utils.db.DB)2 List (java.util.List)2 DomainVlanMapVO (com.cloud.dc.DomainVlanMapVO)1 ExcludeList (com.cloud.deploy.DeploymentPlanner.ExcludeList)1 DomainVO (com.cloud.domain.DomainVO)1 InvalidParameterValueException (com.cloud.exception.InvalidParameterValueException)1 HostVO (com.cloud.host.HostVO)1 Network (com.cloud.network.Network)1 Capability (com.cloud.network.Network.Capability)1 Provider (com.cloud.network.Network.Provider)1 Service (com.cloud.network.Network.Service)1 NetworkStateListener (com.cloud.network.NetworkStateListener)1