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;
}
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;
}
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);
}
}
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;
}
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;
}
Aggregations