Search in sources :

Example 1 with NetworkStateListener

use of com.cloud.network.NetworkStateListener 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)

Aggregations

PodVlanMapVO (com.cloud.dc.PodVlanMapVO)1 VlanVO (com.cloud.dc.VlanVO)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 PhysicalNetwork (com.cloud.network.PhysicalNetwork)1 DhcpServiceProvider (com.cloud.network.element.DhcpServiceProvider)1 DnsServiceProvider (com.cloud.network.element.DnsServiceProvider)1 LoadBalancingServiceProvider (com.cloud.network.element.LoadBalancingServiceProvider)1 StaticNatServiceProvider (com.cloud.network.element.StaticNatServiceProvider)1 UserDataServiceProvider (com.cloud.network.element.UserDataServiceProvider)1 RemoteAccessVpnService (com.cloud.network.vpn.RemoteAccessVpnService)1 NetworkOfferingVO (com.cloud.offerings.NetworkOfferingVO)1 ResourceLimitService (com.cloud.user.ResourceLimitService)1 NamedThreadFactory (com.cloud.utils.concurrency.NamedThreadFactory)1 DB (com.cloud.utils.db.DB)1 TransactionCallbackNoReturn (com.cloud.utils.db.TransactionCallbackNoReturn)1 TransactionStatus (com.cloud.utils.db.TransactionStatus)1