CLOUDSTACK-8301: Enable configuring local storage use for system VMs at zone level

Code cleanup, added helper method to get default system offering based on "system.vm.use.local.storage".
This commit is contained in:
Koushik Das 2015-05-14 17:30:19 +05:30
parent 3f7e31ed05
commit d423df66cc
9 changed files with 24 additions and 55 deletions

View File

@ -55,4 +55,6 @@ public interface ServiceOfferingDao extends GenericDao<ServiceOfferingVO, Long>
boolean isDynamic(long serviceOfferingId);
ServiceOfferingVO getcomputeOffering(ServiceOfferingVO serviceOffering, Map<String, String> customParameters);
ServiceOfferingVO findDefaultSystemOffering(String offeringName, Boolean useLocalStorage);
}

View File

@ -276,4 +276,19 @@ public class ServiceOfferingDaoImpl extends GenericDaoBase<ServiceOfferingVO, Lo
return list;
}
@Override
public ServiceOfferingVO findDefaultSystemOffering(String offeringName, Boolean useLocalStorage) {
String name = offeringName;
if (useLocalStorage != null && useLocalStorage.booleanValue()) {
name += "-Local";
}
ServiceOfferingVO serviceOffering = findByName(name);
if (serviceOffering == null) {
String message = "System service offering " + name + " not found";
s_logger.error(message);
throw new CloudRuntimeException(message);
}
return serviceOffering;
}
}

View File

@ -282,17 +282,7 @@ public class LoadBalanceRuleHandler {
userId = _userDao.listByAccount(owner.getAccountId()).get(0).getId();
}
String offeringName = ServiceOffering.elbVmDefaultOffUniqueName;
Boolean useLocalStorage = ConfigurationManagerImpl.SystemVMUseLocalStorage.valueIn(dest.getDataCenter().getId());
if (useLocalStorage != null && useLocalStorage.booleanValue()) {
offeringName += "-Local";
}
ServiceOfferingVO elasticLbVmOffering = _serviceOfferingDao.findByName(offeringName);
if (elasticLbVmOffering == null) {
String message = "System service offering " + offeringName + " not found";
s_logger.error(message);
throw new CloudRuntimeException(message);
}
ServiceOfferingVO elasticLbVmOffering = _serviceOfferingDao.findDefaultSystemOffering(ServiceOffering.elbVmDefaultOffUniqueName, ConfigurationManagerImpl.SystemVMUseLocalStorage.valueIn(dest.getDataCenter().getId()));
elbVm = new DomainRouterVO(id, elasticLbVmOffering.getId(), vrProvider.getId(), VirtualMachineName.getSystemVmName(id, _instance, ELB_VM_NAME_PREFIX),
template.getId(), template.getHypervisorType(), template.getGuestOSId(), owner.getDomainId(), owner.getId(), userId, false, RedundantState.UNKNOWN,
elasticLbVmOffering.getOfferHA(), false, null);

View File

@ -623,17 +623,7 @@ public class InternalLoadBalancerVMManagerImpl extends ManagerBase implements In
final LinkedHashMap<Network, List<? extends NicProfile>> networks = createInternalLbVmNetworks(guestNetwork, plan, requestedGuestIp);
long internalLbVmOfferingId = _internalLbVmOfferingId;
if (internalLbVmOfferingId == 0L) {
String offeringName = ServiceOffering.internalLbVmDefaultOffUniqueName;
Boolean useLocalStorage = ConfigurationManagerImpl.SystemVMUseLocalStorage.valueIn(dest.getDataCenter().getId());
if (useLocalStorage != null && useLocalStorage.booleanValue()) {
offeringName += "-Local";
}
ServiceOfferingVO serviceOffering = _serviceOfferingDao.findByName(offeringName);
if (serviceOffering == null) {
String message = "System service offering " + offeringName + " not found";
s_logger.error(message);
throw new CloudRuntimeException(message);
}
ServiceOfferingVO serviceOffering = _serviceOfferingDao.findDefaultSystemOffering(ServiceOffering.internalLbVmDefaultOffUniqueName, ConfigurationManagerImpl.SystemVMUseLocalStorage.valueIn(dest.getDataCenter().getId()));
internalLbVmOfferingId = serviceOffering.getId();
}
//Pass startVm=false as we are holding the network lock that needs to be released at the end of vm allocation

View File

@ -718,17 +718,7 @@ public class ConsoleProxyManagerImpl extends ManagerBase implements ConsoleProxy
ServiceOfferingVO serviceOffering = _serviceOffering;
if (serviceOffering == null) {
String offeringName = ServiceOffering.consoleProxyDefaultOffUniqueName;
Boolean useLocalStorage = ConfigurationManagerImpl.SystemVMUseLocalStorage.valueIn(dataCenterId);
if (useLocalStorage != null && useLocalStorage.booleanValue()) {
offeringName += "-Local";
}
serviceOffering = _offeringDao.findByName(offeringName);
if (serviceOffering == null) {
String message = "System service offering " + offeringName + " not found";
s_logger.error(message);
throw new CloudRuntimeException(message);
}
serviceOffering = _offeringDao.findDefaultSystemOffering(ServiceOffering.consoleProxyDefaultOffUniqueName, ConfigurationManagerImpl.SystemVMUseLocalStorage.valueIn(dataCenterId));
}
ConsoleProxyVO proxy =
new ConsoleProxyVO(id, serviceOffering.getId(), name, template.getId(), template.getHypervisorType(), template.getGuestOSId(), dataCenterId,

View File

@ -360,15 +360,7 @@ public class RouterDeploymentDefinition {
}
protected void findDefaultServiceOfferingId() {
String offeringName = ServiceOffering.routerDefaultOffUniqueName;
Boolean useLocalStorage = ConfigurationManagerImpl.SystemVMUseLocalStorage.valueIn(dest.getDataCenter().getId());
if (useLocalStorage != null && useLocalStorage.booleanValue()) {
offeringName += "-Local";
}
ServiceOfferingVO serviceOffering = serviceOfferingDao.findByName(offeringName);
if (serviceOffering == null) {
throw new CloudRuntimeException("System service offering " + offeringName + " not found");
}
ServiceOfferingVO serviceOffering = serviceOfferingDao.findDefaultSystemOffering(ServiceOffering.routerDefaultOffUniqueName, ConfigurationManagerImpl.SystemVMUseLocalStorage.valueIn(dest.getDataCenter().getId()));
serviceOfferingId = serviceOffering.getId();
}

View File

@ -658,7 +658,7 @@ public class RouterDeploymentDefinitionTest extends RouterDeploymentDefinitionTe
when(mockNw.getNetworkOfferingId()).thenReturn(OFFERING_ID);
when(mockNetworkOfferingDao.findById(OFFERING_ID)).thenReturn(mockNwOfferingVO);
when(mockNwOfferingVO.getServiceOfferingId()).thenReturn(null);
when(mockServiceOfferingDao.findByName(Matchers.anyString())).thenReturn(mockSvcOfferingVO);
when(mockServiceOfferingDao.findDefaultSystemOffering(Matchers.anyString(), Matchers.anyBoolean())).thenReturn(mockSvcOfferingVO);
when(mockSvcOfferingVO.getId()).thenReturn(DEFAULT_OFFERING_ID);
// Execute

View File

@ -184,7 +184,7 @@ public class VpcRouterDeploymentDefinitionTest extends RouterDeploymentDefinitio
final VpcOfferingVO vpcOffering = mock(VpcOfferingVO.class);
when(mockVpcOffDao.findById(VPC_OFFERING_ID)).thenReturn(vpcOffering);
when(vpcOffering.getServiceOfferingId()).thenReturn(null);
when(mockServiceOfferingDao.findByName(Matchers.anyString())).thenReturn(mockSvcOfferingVO);
when(mockServiceOfferingDao.findDefaultSystemOffering(Matchers.anyString(), Matchers.anyBoolean())).thenReturn(mockSvcOfferingVO);
when(mockSvcOfferingVO.getId()).thenReturn(DEFAULT_OFFERING_ID);
// Execute

View File

@ -578,17 +578,7 @@ public class SecondaryStorageManagerImpl extends ManagerBase implements Secondar
ServiceOfferingVO serviceOffering = _serviceOffering;
if (serviceOffering == null) {
String offeringName = ServiceOffering.ssvmDefaultOffUniqueName;
Boolean useLocalStorage = ConfigurationManagerImpl.SystemVMUseLocalStorage.valueIn(dataCenterId);
if (useLocalStorage != null && useLocalStorage.booleanValue()) {
offeringName += "-Local";
}
serviceOffering = _offeringDao.findByName(offeringName);
if (serviceOffering == null) {
String message = "System service offering " + offeringName + " not found";
s_logger.error(message);
throw new CloudRuntimeException(message);
}
serviceOffering = _offeringDao.findDefaultSystemOffering(ServiceOffering.ssvmDefaultOffUniqueName, ConfigurationManagerImpl.SystemVMUseLocalStorage.valueIn(dataCenterId));
}
SecondaryStorageVmVO secStorageVm =
new SecondaryStorageVmVO(id, serviceOffering.getId(), name, template.getId(), template.getHypervisorType(), template.getGuestOSId(), dataCenterId,