use of com.cloud.db.model.Zone in project cosmic by MissionCriticalCloud.
the class VirtualRouterElement method applyFWRules.
@Override
public boolean applyFWRules(final Network network, final List<? extends FirewallRule> rules) throws ResourceUnavailableException {
boolean result = true;
if (canHandle(network, Service.Firewall)) {
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;
}
if (rules != null && rules.size() == 1) {
// The default allow rule is added from the router defalut iptables rules iptables-router
if (rules.get(0).getTrafficType() == FirewallRule.TrafficType.Egress && rules.get(0).getType() == FirewallRule.FirewallRuleType.System && this._networkMdl.getNetworkEgressDefaultPolicy(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 applyVpnUsers.
@Override
public String[] applyVpnUsers(final RemoteAccessVpn vpn, final List<? extends VpnUser> users) throws ResourceUnavailableException {
if (vpn.getNetworkId() == null) {
return null;
}
final Network network = this._networksDao.findById(vpn.getNetworkId());
if (canHandle(network, Service.Vpn)) {
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 vpn users on the backend; virtual router" + " doesn't exist in the network " + network.getId());
return null;
}
final Zone zone = this.zoneRepository.findById(network.getDataCenterId()).orElse(null);
final NetworkTopology networkTopology = this.networkTopologyContext.retrieveNetworkTopology(zone);
return networkTopology.applyVpnUsers(network, users, routers);
} else {
s_logger.debug("Element " + getName() + " doesn't handle applyVpnUsers command");
return null;
}
}
use of com.cloud.db.model.Zone in project cosmic by MissionCriticalCloud.
the class VirtualRouterElement method savePassword.
@Override
public boolean savePassword(final Network network, final NicProfile nic, final VirtualMachineProfile vm) throws ResourceUnavailableException {
if (!canHandle(network, null)) {
return false;
}
final List<DomainRouterVO> routers = this._routerDao.listByNetworkAndRole(network.getId(), Role.VIRTUAL_ROUTER);
if (routers == null || routers.isEmpty()) {
s_logger.debug("Can't find virtual router element in network " + network.getId());
return true;
}
final VirtualMachineProfile uservm = vm;
final Zone zone = this.zoneRepository.findById(network.getDataCenterId()).orElse(null);
final NetworkTopology networkTopology = this.networkTopologyContext.retrieveNetworkTopology(zone);
// save the password in DB
for (final VirtualRouter router : routers) {
if (router.getState() == State.Running) {
return networkTopology.savePasswordToRouter(network, nic, uservm, router);
}
}
final String password = (String) uservm.getParameter(VirtualMachineProfile.Param.VmPassword);
final String password_encrypted = DBEncryptionUtil.encrypt(password);
final UserVmVO userVmVO = this._userVmDao.findById(vm.getId());
this._userVmDao.loadDetails(userVmVO);
userVmVO.setDetail("password", password_encrypted);
this._userVmDao.saveDetails(userVmVO);
userVmVO.setUpdateParameters(true);
this._userVmDao.update(userVmVO.getId(), userVmVO);
return true;
}
use of com.cloud.db.model.Zone in project cosmic by MissionCriticalCloud.
the class VirtualRouterElement method applyStaticNats.
@Override
public boolean applyStaticNats(final Network network, final List<? extends StaticNat> rules) throws ResourceUnavailableException {
boolean result = true;
if (canHandle(network, Service.StaticNat)) {
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 static nat 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.applyStaticNats(network, rules, domainRouterVO);
}
}
return result;
}
use of com.cloud.db.model.Zone in project cosmic by MissionCriticalCloud.
the class VirtualRouterElement method applyLBRules.
@Override
public boolean applyLBRules(final Network network, final List<LoadBalancingRule> rules) throws ResourceUnavailableException {
boolean result = true;
if (canHandle(network, Service.Lb)) {
if (!canHandleLbRules(rules)) {
return false;
}
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 lb 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.applyLoadBalancingRules(network, rules, domainRouterVO);
}
}
return result;
}
Aggregations