Search in sources :

Example 91 with Zone

use of com.cloud.db.model.Zone in project cosmic by MissionCriticalCloud.

the class VirtualRouterElement method applyPFRules.

@Override
public boolean applyPFRules(final Network network, final List<PortForwardingRule> rules) throws ResourceUnavailableException {
    boolean result = true;
    if (canHandle(network, Service.PortForwarding)) {
        final List<DomainRouterVO> routers = this._routerDao.listByNetworkAndRole(network.getId(), Role.VIRTUAL_ROUTER);
        if (routers == null || routers.isEmpty()) {
            s_logger.debug("Virtual router elemnt doesn't need to apply firewall rules on the backend; virtual " + "router doesn't exist in the network " + network.getId());
            return true;
        }
        final Zone zone = this.zoneRepository.findById(network.getDataCenterId()).orElse(null);
        final NetworkTopology networkTopology = this.networkTopologyContext.retrieveNetworkTopology(zone);
        for (final DomainRouterVO domainRouterVO : routers) {
            result = result && networkTopology.applyFirewallRules(network, rules, domainRouterVO);
        }
    }
    return result;
}
Also used : Zone(com.cloud.db.model.Zone) NetworkTopology(com.cloud.network.topology.NetworkTopology) DomainRouterVO(com.cloud.vm.DomainRouterVO)

Example 92 with Zone

use of com.cloud.db.model.Zone in project cosmic by MissionCriticalCloud.

the class VirtualRouterElement method prepareMigration.

@Override
public boolean prepareMigration(final NicProfile nic, final Network network, final VirtualMachineProfile vm, final DeployDestination dest, final ReservationContext context) {
    if (nic.getBroadcastType() != BroadcastDomainType.Pvlan) {
        return true;
    }
    if (vm.getType() == VirtualMachineType.DomainRouter) {
        assert vm instanceof DomainRouterVO;
        final DomainRouterVO router = (DomainRouterVO) vm.getVirtualMachine();
        final Zone zone = this.zoneRepository.findById(network.getDataCenterId()).orElse(null);
        final NetworkTopology networkTopology = this.networkTopologyContext.retrieveNetworkTopology(zone);
        try {
            networkTopology.setupDhcpForPvlan(false, router, router.getHostId(), nic);
        } catch (final ResourceUnavailableException e) {
            s_logger.warn("Timed Out", e);
        }
    } else if (vm.getType() == VirtualMachineType.User) {
        assert vm instanceof UserVmVO;
        final UserVmVO userVm = (UserVmVO) vm.getVirtualMachine();
        this._userVmMgr.setupVmForPvlan(false, userVm.getHostId(), nic);
    }
    return true;
}
Also used : UserVmVO(com.cloud.vm.UserVmVO) Zone(com.cloud.db.model.Zone) NetworkTopology(com.cloud.network.topology.NetworkTopology) ResourceUnavailableException(com.cloud.legacymodel.exceptions.ResourceUnavailableException) DomainRouterVO(com.cloud.vm.DomainRouterVO)

Example 93 with Zone

use of com.cloud.db.model.Zone in project cosmic by MissionCriticalCloud.

the class VirtualRouterElement method commitMigration.

@Override
public void commitMigration(final NicProfile nic, final Network network, final VirtualMachineProfile vm, final ReservationContext src, final ReservationContext dst) {
    if (nic.getBroadcastType() != BroadcastDomainType.Pvlan) {
        return;
    }
    if (vm.getType() == VirtualMachineType.DomainRouter) {
        assert vm instanceof DomainRouterVO;
        final DomainRouterVO router = (DomainRouterVO) vm.getVirtualMachine();
        final Zone zone = this.zoneRepository.findById(network.getDataCenterId()).orElse(null);
        final NetworkTopology networkTopology = this.networkTopologyContext.retrieveNetworkTopology(zone);
        try {
            networkTopology.setupDhcpForPvlan(true, router, router.getHostId(), nic);
        } catch (final ResourceUnavailableException e) {
            s_logger.warn("Timed Out", e);
        }
    } else if (vm.getType() == VirtualMachineType.User) {
        assert vm instanceof UserVmVO;
        final UserVmVO userVm = (UserVmVO) vm.getVirtualMachine();
        this._userVmMgr.setupVmForPvlan(true, userVm.getHostId(), nic);
    }
}
Also used : UserVmVO(com.cloud.vm.UserVmVO) Zone(com.cloud.db.model.Zone) NetworkTopology(com.cloud.network.topology.NetworkTopology) ResourceUnavailableException(com.cloud.legacymodel.exceptions.ResourceUnavailableException) DomainRouterVO(com.cloud.vm.DomainRouterVO)

Example 94 with Zone

use of com.cloud.db.model.Zone in project cosmic by MissionCriticalCloud.

the class VpcVirtualRouterElement method applyIps.

@Override
public boolean applyIps(final Network network, final List<? extends PublicIpAddress> ipAddress, final Set<Service> services) throws ResourceUnavailableException {
    boolean canHandle = true;
    for (final Service service : services) {
        if (!canHandle(network, service)) {
            canHandle = false;
            break;
        }
    }
    boolean result = true;
    if (canHandle) {
        final List<DomainRouterVO> routers = _routerDao.listByNetworkAndRole(network.getId(), Role.VIRTUAL_ROUTER);
        if (routers == null || routers.isEmpty()) {
            s_logger.debug(getName() + " element doesn't need to associate ip addresses on the backend; VPC virtual router doesn't exist in the network " + network.getId());
            return false;
        }
        final Zone zone = zoneRepository.findById(network.getDataCenterId()).orElse(null);
        final NetworkTopology networkTopology = networkTopologyContext.retrieveNetworkTopology(zone);
        for (final DomainRouterVO domainRouterVO : routers) {
            result = result && networkTopology.associatePublicIP(network, ipAddress, domainRouterVO);
        }
    }
    return result;
}
Also used : Zone(com.cloud.db.model.Zone) NetworkTopology(com.cloud.network.topology.NetworkTopology) Service(com.cloud.legacymodel.network.Network.Service) DomainRouterVO(com.cloud.vm.DomainRouterVO)

Example 95 with Zone

use of com.cloud.db.model.Zone in project cosmic by MissionCriticalCloud.

the class VpcVirtualRouterElement method applyNetworkACLs.

@Override
public boolean applyNetworkACLs(final Network network, final List<? extends NetworkACLItem> rules) throws ResourceUnavailableException {
    boolean result = true;
    if (canHandle(network, Service.NetworkACL)) {
        final List<DomainRouterVO> routers = _routerDao.listByNetworkAndRole(network.getId(), Role.VIRTUAL_ROUTER);
        if (routers == null || routers.isEmpty()) {
            s_logger.debug("Virtual router element doesn't need to apply firewall rules on the backend; virtual router doesn't exist in the network " + network.getId());
            return true;
        }
        final Zone zone = zoneRepository.findById(network.getDataCenterId()).orElse(null);
        final NetworkTopology networkTopology = networkTopologyContext.retrieveNetworkTopology(zone);
        for (final DomainRouterVO domainRouterVO : routers) {
            try {
                result = result && networkTopology.applyNetworkACLs(network, rules, domainRouterVO, false);
            } catch (final Exception ex) {
                s_logger.debug("Failed to apply network acl in network " + network.getId());
            }
        }
    }
    return result;
}
Also used : Zone(com.cloud.db.model.Zone) NetworkTopology(com.cloud.network.topology.NetworkTopology) DomainRouterVO(com.cloud.vm.DomainRouterVO) InsufficientCapacityException(com.cloud.legacymodel.exceptions.InsufficientCapacityException) IllegalVirtualMachineException(com.cloud.legacymodel.exceptions.IllegalVirtualMachineException) ResourceUnavailableException(com.cloud.legacymodel.exceptions.ResourceUnavailableException) ConcurrentOperationException(com.cloud.legacymodel.exceptions.ConcurrentOperationException) CloudRuntimeException(com.cloud.legacymodel.exceptions.CloudRuntimeException)

Aggregations

Zone (com.cloud.db.model.Zone)109 CloudRuntimeException (com.cloud.legacymodel.exceptions.CloudRuntimeException)34 ArrayList (java.util.ArrayList)34 DomainRouterVO (com.cloud.vm.DomainRouterVO)28 ResourceUnavailableException (com.cloud.legacymodel.exceptions.ResourceUnavailableException)26 Network (com.cloud.legacymodel.network.Network)25 InvalidParameterValueException (com.cloud.legacymodel.exceptions.InvalidParameterValueException)23 Account (com.cloud.legacymodel.user.Account)23 NetworkVO (com.cloud.network.dao.NetworkVO)23 NetworkTopology (com.cloud.network.topology.NetworkTopology)23 DeployDestination (com.cloud.deploy.DeployDestination)18 NicProfile (com.cloud.vm.NicProfile)17 List (java.util.List)17 HostPodVO (com.cloud.dc.HostPodVO)16 HostVO (com.cloud.host.HostVO)16 ConcurrentOperationException (com.cloud.legacymodel.exceptions.ConcurrentOperationException)14 InsufficientCapacityException (com.cloud.legacymodel.exceptions.InsufficientCapacityException)14 DB (com.cloud.utils.db.DB)14 PhysicalNetworkVO (com.cloud.network.dao.PhysicalNetworkVO)12 NetworkOffering (com.cloud.offering.NetworkOffering)11