renamed the domainrouter services

This commit is contained in:
Alex Huang 2010-12-20 16:11:45 -08:00
parent 356526db83
commit 0ecb0118ec
16 changed files with 63 additions and 186 deletions

View File

@ -34,7 +34,7 @@ import com.cloud.exception.ConcurrentOperationException;
import com.cloud.exception.InsufficientCapacityException;
import com.cloud.exception.ResourceAllocationException;
import com.cloud.exception.ResourceUnavailableException;
import com.cloud.network.DomainRouterService;
import com.cloud.network.VirtualNetworkApplianceService;
import com.cloud.network.NetworkService;
import com.cloud.network.lb.LoadBalancingRulesService;
import com.cloud.network.rules.RulesService;
@ -99,7 +99,7 @@ public abstract class BaseCmd {
public static SecurityGroupService _securityGroupMgr;
public static SnapshotService _snapshotMgr;
public static ConsoleProxyService _consoleProxyMgr;
public static DomainRouterService _routerService;
public static VirtualNetworkApplianceService _routerService;
public static ResponseGenerator _responseGenerator;
public static EntityManager _entityMgr;
public static RulesService _rulesService;
@ -119,7 +119,7 @@ public abstract class BaseCmd {
_securityGroupMgr = locator.getManager(SecurityGroupService.class);
_snapshotMgr = locator.getManager(SnapshotService.class);
_consoleProxyMgr = locator.getManager(ConsoleProxyService.class);
_routerService = locator.getManager(DomainRouterService.class);
_routerService = locator.getManager(VirtualNetworkApplianceService.class);
_entityMgr = locator.getManager(EntityManager.class);
_rulesService = locator.getManager(RulesService.class);
_lbService = locator.getManager(LoadBalancingRulesService.class);

View File

@ -27,7 +27,7 @@ import com.cloud.exception.InvalidParameterValueException;
import com.cloud.exception.ResourceUnavailableException;
import com.cloud.network.router.VirtualRouter;
public interface DomainRouterService {
public interface VirtualNetworkApplianceService {
/**
* Starts domain router
* @param cmd the command specifying router's id

View File

@ -76,7 +76,7 @@
<adapter name="First Fit" class="com.cloud.deploy.FirstFitPlanner"/>
</adapters>
<adapters key="com.cloud.network.element.NetworkElement">
<adapter name="DomainRouter" class="com.cloud.network.element.DomainRouterElement"/>
<adapter name="DomainRouter" class="com.cloud.network.element.VirtualRouterElement"/>
<adapter name="Dhcp" class="com.cloud.network.element.DhcpElement"/>
</adapters>
<adapters key="com.cloud.acl.SecurityChecker">

View File

@ -3177,11 +3177,11 @@ public abstract class CitrixResourceBase implements ServerResource {
}
long avail = cap - lvmsr.getPhysicalUtilisation(conn);
lvmsr.setNameLabel(conn, lvmuuid);
String name = "VMOps local storage pool in host : " + _host.uuid;
String name = "Cloud Stack Local Storage Pool for " + _host.uuid;
lvmsr.setNameDescription(conn, name);
Host host = Host.getByUuid(conn, _host.uuid);
String address = host.getAddress(conn);
StoragePoolInfo pInfo = new StoragePoolInfo(name, address, SRType.LVM.toString(), SRType.LVM.toString(), StoragePoolType.LVM, cap, avail);
StoragePoolInfo pInfo = new StoragePoolInfo(lvmuuid, address, SRType.LVM.toString(), SRType.LVM.toString(), StoragePoolType.LVM, cap, avail);
StartupStorageCommand cmd = new StartupStorageCommand();
cmd.setPoolInfo(pInfo);
cmd.setGuid(_host.uuid);

View File

@ -591,8 +591,9 @@ public class AgentManagerImpl implements AgentManager, HandlerFactory, ResourceS
if(cmd.getClusterType() != null && !cmd.getClusterType().isEmpty()) {
clusterType = Cluster.ClusterType.valueOf(cmd.getClusterType());
}
if(clusterType == null)
clusterType = Cluster.ClusterType.CloudManaged;
if(clusterType == null) {
clusterType = Cluster.ClusterType.CloudManaged;
}
Discoverer discoverer = getMatchingDiscover(hypervisorType);
if(discoverer == null) {
@ -616,8 +617,9 @@ public class AgentManagerImpl implements AgentManager, HandlerFactory, ResourceS
clusterId = cluster.getId();
}
if(clusterType == Cluster.ClusterType.CloudManaged)
return _hostDao.listByCluster(clusterId);
if(clusterType == Cluster.ClusterType.CloudManaged) {
return _hostDao.listByCluster(clusterId);
}
boolean success = false;
try {
@ -669,8 +671,9 @@ public class AgentManagerImpl implements AgentManager, HandlerFactory, ResourceS
Enumeration<Discoverer> en = _discoverers.enumeration();
while (en.hasMoreElements()) {
Discoverer discoverer = en.nextElement();
if(discoverer.getHypervisorType() == hypervisorType)
return discoverer;
if(discoverer.getHypervisorType() == hypervisorType) {
return discoverer;
}
}
return null;
}
@ -772,8 +775,9 @@ public class AgentManagerImpl implements AgentManager, HandlerFactory, ResourceS
while (en.hasMoreElements()) {
Discoverer discoverer = en.nextElement();
if(hypervisorType != null) {
if(!discoverer.matchHypervisor(hypervisorType))
continue;
if(!discoverer.matchHypervisor(hypervisorType)) {
continue;
}
}
Map<? extends ServerResource, Map<String, String>> resources = null;
@ -1376,23 +1380,19 @@ public class AgentManagerImpl implements AgentManager, HandlerFactory, ResourceS
}
if (host.getClusterId() != null) {
params.put("cluster", Long.toString(host.getClusterId()));
String guid = null;
ClusterVO cluster = _clusterDao.findById(host.getClusterId());
if ( cluster.getGuid() == null ) {
guid = host.getDetail("pool");
} else {
guid = cluster.getGuid();
}
if( guid == null || guid.isEmpty() ) {
throw new CloudRuntimeException("Can not find guid for cluster " + cluster.getId() + " name " + cluster.getName());
}
params.put("pool", guid);
}
String guid = null;
ClusterVO cluster = _clusterDao.findById(host.getClusterId());
if(cluster.getHypervisorType() == Hypervisor.HypervisorType.XenServer) {
if ( cluster.getGuid() == null ) {
guid = host.getDetail("pool");
} else {
guid = cluster.getGuid();
}
if( guid == null || guid.isEmpty() ) {
throw new CloudRuntimeException("Can not find guid for cluster " + cluster.getId() + " name " + cluster.getName());
}
params.put("pool", guid);
}
params.put("ipaddress", host.getPrivateIpAddress());
params.put("secondary.storage.vm", "false");
params.put("max.template.iso.size", _configDao.getValue("max.template.iso.size"));
@ -1904,6 +1904,7 @@ public class AgentManagerImpl implements AgentManager, HandlerFactory, ResourceS
}
}
@Override
public Host addHost(long zoneId, ServerResource resource, Type hostType, Map<String, String> hostDetails) {
// Check if the zone exists in the system
if (_dcDao.findById(zoneId) == null ){
@ -1911,7 +1912,7 @@ public class AgentManagerImpl implements AgentManager, HandlerFactory, ResourceS
}
Map<String, String> details = hostDetails;
String guid = (String) details.get("guid");
String guid = details.get("guid");
List<HostVO> currentHosts = _hostDao.listBy(hostType, zoneId);
for (HostVO currentHost : currentHosts) {
if (currentHost.getGuid().equals(guid)) {

View File

@ -70,7 +70,7 @@ import com.cloud.network.dao.NetworkRuleConfigDaoImpl;
import com.cloud.network.dao.RemoteAccessVpnDaoImpl;
import com.cloud.network.dao.VpnUserDaoImpl;
import com.cloud.network.lb.LoadBalancingRulesManagerImpl;
import com.cloud.network.router.DomainRouterManagerImpl;
import com.cloud.network.router.VirtualNetworkApplianceManagerImpl;
import com.cloud.network.rules.RulesManagerImpl;
import com.cloud.network.rules.dao.PortForwardingRulesDaoImpl;
import com.cloud.network.security.SecurityGroupManagerImpl;
@ -280,7 +280,7 @@ public class DefaultComponentLibrary implements ComponentLibrary {
addManager("SnapshotScheduler", SnapshotSchedulerImpl.class);
addManager("SecurityGroupManager", SecurityGroupManagerImpl.class);
addManager("VmManager", VirtualMachineManagerImpl.class);
addManager("DomainRouterManager", DomainRouterManagerImpl.class);
addManager("DomainRouterManager", VirtualNetworkApplianceManagerImpl.class);
addManager("EntityManager", EntityManagerImpl.class);
addManager("LoadBalancingRulesManager", LoadBalancingRulesManagerImpl.class);
addManager("RulesManager", RulesManagerImpl.class);

View File

@ -101,7 +101,7 @@ import com.cloud.network.guru.NetworkGuru;
import com.cloud.network.lb.LoadBalancingRule;
import com.cloud.network.lb.LoadBalancingRule.LbDestination;
import com.cloud.network.lb.LoadBalancingRulesManager;
import com.cloud.network.router.DomainRouterManager;
import com.cloud.network.router.VirtualNetworkApplianceManager;
import com.cloud.network.rules.FirewallRule;
import com.cloud.network.rules.PortForwardingRuleVO;
import com.cloud.network.rules.RulesManager;
@ -182,7 +182,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
@Inject NicDao _nicDao = null;
@Inject RemoteAccessVpnDao _remoteAccessVpnDao = null;
@Inject VpnUserDao _vpnUsersDao = null;
@Inject DomainRouterManager _routerMgr;
@Inject VirtualNetworkApplianceManager _routerMgr;
@Inject RulesManager _rulesMgr;
@Inject LoadBalancingRulesManager _lbMgr;
@Inject FirewallRulesDao _firewallRulesDao;

View File

@ -36,16 +36,16 @@ import com.cloud.host.HostVO;
import com.cloud.host.Status;
import com.cloud.host.dao.HostDao;
import com.cloud.hypervisor.Hypervisor.HypervisorType;
import com.cloud.network.router.DomainRouterManager;
import com.cloud.network.router.VirtualNetworkApplianceManager;
public class SshKeysDistriMonitor implements Listener {
private static final Logger s_logger = Logger.getLogger(SshKeysDistriMonitor.class);
private final DomainRouterManager _routerMgr;
private final VirtualNetworkApplianceManager _routerMgr;
private final HostDao _hostDao;
private ConfigurationDao _configDao;
public SshKeysDistriMonitor(DomainRouterManager mgr, HostDao host, ConfigurationDao config) {
public SshKeysDistriMonitor(VirtualNetworkApplianceManager mgr, HostDao host, ConfigurationDao config) {
this._routerMgr = mgr;
_hostDao = host;
_configDao = config;

View File

@ -32,7 +32,7 @@ import com.cloud.network.Network;
import com.cloud.network.NetworkManager;
import com.cloud.network.PublicIpAddress;
import com.cloud.network.dao.NetworkDao;
import com.cloud.network.router.DomainRouterManager;
import com.cloud.network.router.VirtualNetworkApplianceManager;
import com.cloud.network.rules.FirewallRule;
import com.cloud.network.service.Providers;
import com.cloud.offering.NetworkOffering;
@ -56,7 +56,7 @@ public class DhcpElement extends AdapterBase implements NetworkElement {
@Inject NetworkDao _networkConfigDao;
@Inject NetworkManager _networkMgr;
@Inject DomainRouterManager _routerMgr;
@Inject VirtualNetworkApplianceManager _routerMgr;
@Inject UserVmManager _userVmMgr;
@Inject UserVmDao _userVmDao;
@Inject DomainRouterDao _routerDao;

View File

@ -39,7 +39,7 @@ import com.cloud.network.dao.NetworkDao;
import com.cloud.network.lb.LoadBalancingRule;
import com.cloud.network.lb.LoadBalancingRule.LbDestination;
import com.cloud.network.lb.LoadBalancingRulesManager;
import com.cloud.network.router.DomainRouterManager;
import com.cloud.network.router.VirtualNetworkApplianceManager;
import com.cloud.network.rules.FirewallRule;
import com.cloud.network.rules.FirewallRule.Purpose;
import com.cloud.network.service.Providers;
@ -62,14 +62,14 @@ import com.cloud.vm.dao.UserVmDao;
@Local(value=NetworkElement.class)
public class DomainRouterElement extends AdapterBase implements NetworkElement {
private static final Logger s_logger = Logger.getLogger(DomainRouterElement.class);
public class VirtualRouterElement extends AdapterBase implements NetworkElement {
private static final Logger s_logger = Logger.getLogger(VirtualRouterElement.class);
@Inject NetworkDao _networkConfigDao;
@Inject NetworkManager _networkMgr;
@Inject LoadBalancingRulesManager _lbMgr;
@Inject NetworkOfferingDao _networkOfferingDao;
@Inject DomainRouterManager _routerMgr;
@Inject VirtualNetworkApplianceManager _routerMgr;
@Inject UserVmManager _userVmMgr;
@Inject UserVmDao _userVmDao;
@Inject DomainRouterDao _routerDao;

View File

@ -45,7 +45,7 @@ import com.cloud.vm.VirtualMachineProfile;
* NetworkManager manages the network for the different end users.
*
*/
public interface DomainRouterManager extends Manager {
public interface VirtualNetworkApplianceManager extends Manager {
public static final int DEFAULT_ROUTER_VM_RAMSIZE = 128; // 128M
public static final boolean USE_POD_VLAN = false;
/**

View File

@ -77,16 +77,12 @@ import com.cloud.configuration.dao.ResourceLimitDao;
import com.cloud.dc.DataCenter;
import com.cloud.dc.DataCenterVO;
import com.cloud.dc.HostPodVO;
import com.cloud.dc.Vlan;
import com.cloud.dc.Vlan.VlanType;
import com.cloud.dc.VlanVO;
import com.cloud.dc.dao.AccountVlanMapDao;
import com.cloud.dc.dao.DataCenterDao;
import com.cloud.dc.dao.HostPodDao;
import com.cloud.dc.dao.VlanDao;
import com.cloud.deploy.DataCenterDeployment;
import com.cloud.deploy.DeployDestination;
import com.cloud.domain.DomainVO;
import com.cloud.domain.dao.DomainDao;
import com.cloud.event.Event;
import com.cloud.event.EventTypes;
@ -107,7 +103,6 @@ import com.cloud.host.HostVO;
import com.cloud.host.dao.HostDao;
import com.cloud.hypervisor.Hypervisor;
import com.cloud.hypervisor.Hypervisor.HypervisorType;
import com.cloud.network.DomainRouterService;
import com.cloud.network.IPAddressVO;
import com.cloud.network.IpAddress;
import com.cloud.network.Network;
@ -119,6 +114,7 @@ import com.cloud.network.Networks.TrafficType;
import com.cloud.network.PublicIpAddress;
import com.cloud.network.RemoteAccessVpnVO;
import com.cloud.network.SshKeysDistriMonitor;
import com.cloud.network.VirtualNetworkApplianceService;
import com.cloud.network.VpnUserVO;
import com.cloud.network.addr.PublicIp;
import com.cloud.network.dao.FirewallRulesDao;
@ -152,7 +148,6 @@ import com.cloud.storage.dao.VolumeDao;
import com.cloud.user.Account;
import com.cloud.user.AccountManager;
import com.cloud.user.AccountService;
import com.cloud.user.AccountVO;
import com.cloud.user.User;
import com.cloud.user.UserContext;
import com.cloud.user.UserStatisticsVO;
@ -169,7 +164,6 @@ import com.cloud.utils.concurrency.NamedThreadFactory;
import com.cloud.utils.db.DB;
import com.cloud.utils.db.Transaction;
import com.cloud.utils.exception.CloudRuntimeException;
import com.cloud.utils.exception.ExecutionException;
import com.cloud.utils.net.NetUtils;
import com.cloud.vm.DomainRouterVO;
import com.cloud.vm.NicProfile;
@ -186,11 +180,12 @@ import com.cloud.vm.dao.NicDao;
import com.cloud.vm.dao.UserVmDao;
/**
* NetworkManagerImpl implements NetworkManager.
* VirtualNetworkApplianceManagerImpl manages the different types of
* virtual network appliances available in the Cloud Stack.
*/
@Local(value = { DomainRouterManager.class, DomainRouterService.class })
public class DomainRouterManagerImpl implements DomainRouterManager, DomainRouterService, VirtualMachineGuru<DomainRouterVO> {
private static final Logger s_logger = Logger.getLogger(DomainRouterManagerImpl.class);
@Local(value = { VirtualNetworkApplianceManager.class, VirtualNetworkApplianceService.class })
public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplianceManager, VirtualNetworkApplianceService, VirtualMachineGuru<DomainRouterVO> {
private static final Logger s_logger = Logger.getLogger(VirtualNetworkApplianceManagerImpl.class);
String _name;
@Inject
@ -336,126 +331,6 @@ public class DomainRouterManagerImpl implements DomainRouterManager, DomainRoute
}
}
@DB
public DomainRouterVO createDhcpServerForDirectlyAttachedGuests(long userId, long accountId, DataCenterVO dc, HostPodVO pod, Long candidateHost,
VlanVO guestVlan) throws ConcurrentOperationException {
final AccountVO account = _accountDao.findById(accountId);
boolean podVlan = guestVlan.getVlanType().equals(VlanType.DirectAttached) && guestVlan.getVlanTag().equals(Vlan.UNTAGGED);
long accountIdForDHCPServer = podVlan ? Account.ACCOUNT_ID_SYSTEM : accountId;
long domainIdForDHCPServer = podVlan ? DomainVO.ROOT_DOMAIN : account.getDomainId();
String domainNameForDHCPServer = podVlan ? "root" : _domainDao.findById(account.getDomainId()).getName();
final VMTemplateVO rtrTemplate = _templateDao.findRoutingTemplate();
final Transaction txn = Transaction.currentTxn();
DomainRouterVO router = null;
Long podId = pod.getId();
pod = _podDao.acquireInLockTable(podId, 20 * 60);
if (pod == null) {
throw new ConcurrentOperationException("Unable to acquire lock on pod " + podId);
}
if (s_logger.isDebugEnabled()) {
s_logger.debug("Lock on pod " + podId + " is acquired");
}
final long id = _routerDao.getNextInSequence(Long.class, "id");
final String[] macAddresses = _dcDao.getNextAvailableMacAddressPair(dc.getId());
final String mgmtMacAddress = macAddresses[0];
final String guestMacAddress = macAddresses[1];
final String name = VirtualMachineName.getRouterName(id, _instance).intern();
boolean routerLockAcquired = false;
try {
List<DomainRouterVO> rtrs = _routerDao.listByVlanDbId(guestVlan.getId());
assert rtrs.size() < 2 : "How did we get more than one router per vlan?";
if (rtrs.size() == 1) {
return rtrs.get(0);
}
String mgmtNetmask = NetUtils.getCidrNetmask(pod.getCidrSize());
final String guestIp = null;// _ipAddressDao.assignIpAddress(accountIdForDHCPServer,
// domainIdForDHCPServer,
// guestVlan.getId(),
// false).getAddress();
router = new DomainRouterVO(id, _offering.getId(), name, mgmtMacAddress, null, mgmtNetmask, _routerTemplateId,
rtrTemplate.getGuestOSId(), guestMacAddress, guestIp, guestVlan.getVlanNetmask(), accountIdForDHCPServer, domainIdForDHCPServer,
"FE:FF:FF:FF:FF:FF", null, "255.255.255.255", guestVlan.getId(), guestVlan.getVlanTag(), pod.getId(), dc.getId(), _routerRamSize,
guestVlan.getVlanGateway(), domainNameForDHCPServer, dc.getDns1(), dc.getDns2());
router.setRole(Role.DHCP_USERDATA);
router.setVnet(guestVlan.getVlanTag());
router.setLastHostId(candidateHost);
txn.start();
router = _routerDao.persist(router);
router = _routerDao.acquireInLockTable(router.getId());
if (router == null) {
s_logger.debug("Unable to acquire lock on router " + id);
throw new CloudRuntimeException("Unable to acquire lock on router " + id);
}
routerLockAcquired = true;
txn.commit();
List<VolumeVO> vols = _storageMgr.create(account, router, rtrTemplate, dc, pod, _offering, null, 0);
if (vols == null) {
_ipAddressDao.unassignIpAddress(guestIp);
_routerDao.expunge(router.getId());
if (s_logger.isDebugEnabled()) {
s_logger.debug("Unable to create dhcp server in storage host or pool in pod " + pod.getName() + " (id:" + pod.getId() + ")");
}
}
final EventVO event = new EventVO();
event.setUserId(userId);
event.setAccountId(accountIdForDHCPServer);
event.setType(EventTypes.EVENT_ROUTER_CREATE);
if (vols == null) {
event.setDescription("failed to create DHCP Server : " + router.getName());
event.setLevel(EventVO.LEVEL_ERROR);
_eventDao.persist(event);
throw new ExecutionException("Unable to create DHCP Server");
}
_itMgr.stateTransitTo(router, VirtualMachine.Event.OperationSucceeded, null);
s_logger.info("DHCP server created: id=" + router.getId() + "; name=" + router.getName() + "; vlan=" + guestVlan.getVlanTag() + "; pod="
+ pod.getName());
event.setDescription("successfully created DHCP Server : " + router.getName() + " with ip : " + router.getGuestIpAddress());
_eventDao.persist(event);
return router;
} catch (final Throwable th) {
if (th instanceof ExecutionException) {
s_logger.error("Error while starting router due to " + th.getMessage());
} else {
s_logger.error("Unable to create router", th);
}
txn.rollback();
if (router.getState() == State.Creating) {
_routerDao.expunge(router.getId());
}
return null;
} finally {
if (routerLockAcquired) {
if (s_logger.isDebugEnabled()) {
s_logger.debug("Releasing lock on router " + id);
}
_routerDao.releaseFromLockTable(id);
}
if (pod != null) {
if (s_logger.isDebugEnabled()) {
s_logger.debug("Releasing lock on pod " + podId);
}
_podDao.releaseFromLockTable(pod.getId());
}
}
}
@Override
public boolean destroyRouter(final long routerId) {
@ -1052,7 +927,7 @@ public class DomainRouterManagerImpl implements DomainRouterManager, DomainRoute
return true;
}
protected DomainRouterManagerImpl() {
protected VirtualNetworkApplianceManagerImpl() {
}
@Override

View File

@ -187,7 +187,7 @@ import com.cloud.network.dao.IPAddressDao;
import com.cloud.network.dao.NetworkDao;
import com.cloud.network.dao.RemoteAccessVpnDao;
import com.cloud.network.dao.VpnUserDao;
import com.cloud.network.router.DomainRouterManager;
import com.cloud.network.router.VirtualNetworkApplianceManager;
import com.cloud.network.security.SecurityGroupVO;
import com.cloud.network.security.dao.SecurityGroupDao;
import com.cloud.offering.NetworkOffering;
@ -437,7 +437,7 @@ public class ManagementServerImpl implements ManagementServer {
// Parse the max number of UserVMs and public IPs from server-setup.xml,
// and set them in the right places
_routerRamSize = NumbersUtil.parseInt(_configs.get("router.ram.size"),DomainRouterManager.DEFAULT_ROUTER_VM_RAMSIZE);
_routerRamSize = NumbersUtil.parseInt(_configs.get("router.ram.size"),VirtualNetworkApplianceManager.DEFAULT_ROUTER_VM_RAMSIZE);
_proxyRamSize = NumbersUtil.parseInt(_configs.get("consoleproxy.ram.size"), ConsoleProxyManager.DEFAULT_PROXY_VM_RAMSIZE);
_ssRamSize = NumbersUtil.parseInt(_configs.get("secstorage.ram.size"), SecondaryStorageVmManager.DEFAULT_SS_VM_RAMSIZE);

View File

@ -111,7 +111,7 @@ import com.cloud.host.dao.DetailsDao;
import com.cloud.host.dao.HostDao;
import com.cloud.hypervisor.Hypervisor.HypervisorType;
import com.cloud.network.NetworkManager;
import com.cloud.network.router.DomainRouterManager;
import com.cloud.network.router.VirtualNetworkApplianceManager;
import com.cloud.offering.ServiceOffering;
import com.cloud.service.ServiceOfferingVO;
import com.cloud.service.dao.ServiceOfferingDao;
@ -210,7 +210,7 @@ public class StorageManagerImpl implements StorageManager, StorageService, Manag
@Inject protected DomainDao _domainDao;
@Inject protected UserDao _userDao;
@Inject protected ClusterDao _clusterDao;
@Inject protected DomainRouterManager _routerMgr;
@Inject protected VirtualNetworkApplianceManager _routerMgr;
@Inject(adapter=StoragePoolAllocator.class)
protected Adapters<StoragePoolAllocator> _storagePoolAllocators;
@ -2783,13 +2783,14 @@ public class StorageManagerImpl implements StorageManager, StorageService, Manag
}
Pair<VolumeTO, StoragePool> created = createVolume(newVol, _diskOfferingDao.findById(newVol.getDiskOfferingId()), vm, vols, dest);
if (created == null) {
long poolId = newVol.getPoolId();
newVol.setPoolId(null);
try {
_volsDao.update(newVol, Volume.Event.OperationFailed);
} catch (ConcurrentOperationException e) {
throw new CloudRuntimeException("Unable to update the failure on a volume: " + newVol, e);
}
throw new StorageUnavailableException("Unable to create " + newVol, newVol.getPoolId());
throw new StorageUnavailableException("Unable to create " + newVol, poolId);
}
created.first().setDeviceId(newVol.getDeviceId().intValue());
newVol.setStatus(AsyncInstanceCreateStatus.Created);

View File

@ -70,7 +70,7 @@ import com.cloud.network.NetworkManager;
import com.cloud.network.NetworkVO;
import com.cloud.network.dao.IPAddressDao;
import com.cloud.network.dao.NetworkDao;
import com.cloud.network.router.DomainRouterManager;
import com.cloud.network.router.VirtualNetworkApplianceManager;
import com.cloud.network.security.SecurityGroupManager;
import com.cloud.server.Criteria;
import com.cloud.storage.StorageManager;
@ -128,7 +128,7 @@ public class AccountManagerImpl implements AccountManager, AccountService {
@Inject private StorageManager _storageMgr;
@Inject private TemplateManager _tmpltMgr;
@Inject private ConfigurationManager _configMgr;
@Inject private DomainRouterManager _routerMgr;
@Inject private VirtualNetworkApplianceManager _routerMgr;
private final GlobalLock m_resourceCountLock = GlobalLock.getInternLock("resource.count");

View File

@ -130,7 +130,7 @@ import com.cloud.network.dao.IPAddressDao;
import com.cloud.network.dao.LoadBalancerDao;
import com.cloud.network.dao.LoadBalancerVMMapDao;
import com.cloud.network.dao.NetworkDao;
import com.cloud.network.router.DomainRouterManager;
import com.cloud.network.router.VirtualNetworkApplianceManager;
import com.cloud.network.rules.RulesManager;
import com.cloud.network.security.SecurityGroupManager;
import com.cloud.offering.NetworkOffering;
@ -249,7 +249,7 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager
@Inject InstanceGroupVMMapDao _groupVMMapDao;
@Inject VirtualMachineManager _itMgr;
@Inject NetworkDao _networkDao;
@Inject DomainRouterManager _routerMgr;
@Inject VirtualNetworkApplianceManager _routerMgr;
@Inject NicDao _nicDao;
@Inject RulesManager _rulesMgr;