Merge branch '2.2.8' of ssh://git.cloud.com/var/lib/git/cloudstack-oss into 2.2.8

This commit is contained in:
Chiradeep Vittal 2011-08-08 22:42:10 -07:00
commit 64efcf0443
2 changed files with 33 additions and 26 deletions

View File

@ -196,8 +196,14 @@ public class DhcpElement extends AdapterBase implements NetworkElement, Password
@Override
public boolean restart(Network network, ReservationContext context) throws ConcurrentOperationException, ResourceUnavailableException, InsufficientCapacityException{
DataCenter dc = _configMgr.getZone(network.getDataCenterId());
NetworkOffering offering = _configMgr.getNetworkOffering(network.getNetworkOfferingId());
DeployDestination dest = new DeployDestination(dc, null, null, null);
NetworkOffering offering = _configMgr.getNetworkOffering(network.getNetworkOfferingId());
if (!canHandle(network.getGuestType(), dest, offering.getTrafficType())) {
s_logger.trace("Dhcp element doesn't handle network restart for the network " + network);
return false;
}
List<DomainRouterVO> routers = _routerDao.findByNetwork(network.getId());
if (routers == null || routers.isEmpty()) {
s_logger.trace("Can't find dhcp element in network " + network.getId());
@ -207,19 +213,16 @@ public class DhcpElement extends AdapterBase implements NetworkElement, Password
VirtualRouter result = null;
boolean ret = true;
for (DomainRouterVO router : routers) {
if (canHandle(network.getGuestType(), dest, offering.getTrafficType())) {
if (router.getState() == State.Stopped) {
result = _routerMgr.startRouter(router.getId(), false);
} else {
result = _routerMgr.rebootRouter(router.getId(), false);
}
if (result == null) {
s_logger.warn("Failed to restart dhcp element " + router + " as a part of netowrk " + network + " restart");
ret = false;
}
if (router.getState() == State.Stopped) {
result = _routerMgr.startRouter(router.getId(), false);
} else {
s_logger.trace("Dhcp element doesn't handle network restart for the network " + network);
result = _routerMgr.rebootRouter(router.getId(), false);
}
if (result == null) {
s_logger.warn("Failed to restart dhcp element " + router + " as a part of netowrk " + network + " restart");
ret = false;
}
}
return ret;
}

View File

@ -132,8 +132,13 @@ public class VirtualRouterElement extends DhcpElement implements NetworkElement,
@Override
public boolean restart(Network network, ReservationContext context) throws ConcurrentOperationException, ResourceUnavailableException, InsufficientCapacityException{
DataCenter dc = _configMgr.getZone(network.getDataCenterId());
if (!canHandle(network.getGuestType(), dc)) {
s_logger.trace("Virtual router element doesn't handle network restart for the network " + network);
return false;
}
DeployDestination dest = new DeployDestination(dc, null, null, null);
NetworkOffering networkOffering = _networkOfferingDao.findById(network.getNetworkOfferingId());
// We need to re-implement the network since the redundancy capability may changed
@ -148,21 +153,20 @@ public class VirtualRouterElement extends DhcpElement implements NetworkElement,
boolean result = true;
boolean ret = true;
for (DomainRouterVO router : routers) {
if (canHandle(network.getGuestType(), dest.getDataCenter())) {
host_id = router.getHostId();
if (_routerMgr.stopRouter(router.getId(), false) == null) {
s_logger.warn("Failed to stop virtual router element " + router + " as a part of netowrk " + network + " restart");
ret = false;
}
result = _routerMgr.destroyRouter(router.getId());
if (!result) {
s_logger.warn("Failed to destroy virtual router element " + router + " as a part of netowrk " + network + " restart");
ret = false;
}
} else {
s_logger.trace("Virtual router element doesn't handle network restart for the network " + network);
host_id = router.getHostId();
if (_routerMgr.stopRouter(router.getId(), false) == null) {
s_logger.warn("Failed to stop virtual router element " + router + " as a part of netowrk " + network + " restart");
ret = false;
}
result = _routerMgr.destroyRouter(router.getId());
if (!result) {
s_logger.warn("Failed to destroy virtual router element " + router + " as a part of netowrk " + network + " restart");
ret = false;
}
}
Cluster cluster = _configMgr.getCluster(_hostDao.findById(host_id).getClusterId());
dest = new DeployDestination(dc, null, cluster, null);
implement(network, networkOffering, dest, context);