From d423df66cc73c47d363736b7762e820d85f05b93 Mon Sep 17 00:00:00 2001 From: Koushik Das Date: Thu, 14 May 2015 17:30:19 +0530 Subject: [PATCH] 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". --- .../com/cloud/service/dao/ServiceOfferingDao.java | 2 ++ .../cloud/service/dao/ServiceOfferingDaoImpl.java | 15 +++++++++++++++ .../cloud/network/lb/LoadBalanceRuleHandler.java | 12 +----------- .../lb/InternalLoadBalancerVMManagerImpl.java | 12 +----------- .../consoleproxy/ConsoleProxyManagerImpl.java | 12 +----------- .../deployment/RouterDeploymentDefinition.java | 10 +--------- .../RouterDeploymentDefinitionTest.java | 2 +- .../VpcRouterDeploymentDefinitionTest.java | 2 +- .../SecondaryStorageManagerImpl.java | 12 +----------- 9 files changed, 24 insertions(+), 55 deletions(-) diff --git a/engine/schema/src/com/cloud/service/dao/ServiceOfferingDao.java b/engine/schema/src/com/cloud/service/dao/ServiceOfferingDao.java index 98dc3178de4..aae61a12094 100644 --- a/engine/schema/src/com/cloud/service/dao/ServiceOfferingDao.java +++ b/engine/schema/src/com/cloud/service/dao/ServiceOfferingDao.java @@ -55,4 +55,6 @@ public interface ServiceOfferingDao extends GenericDao boolean isDynamic(long serviceOfferingId); ServiceOfferingVO getcomputeOffering(ServiceOfferingVO serviceOffering, Map customParameters); + + ServiceOfferingVO findDefaultSystemOffering(String offeringName, Boolean useLocalStorage); } diff --git a/engine/schema/src/com/cloud/service/dao/ServiceOfferingDaoImpl.java b/engine/schema/src/com/cloud/service/dao/ServiceOfferingDaoImpl.java index a3ffbc1396d..4a5a8b5448b 100644 --- a/engine/schema/src/com/cloud/service/dao/ServiceOfferingDaoImpl.java +++ b/engine/schema/src/com/cloud/service/dao/ServiceOfferingDaoImpl.java @@ -276,4 +276,19 @@ public class ServiceOfferingDaoImpl extends GenericDaoBase> 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 diff --git a/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java b/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java index f8d7474cb22..476cc8e794f 100644 --- a/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java +++ b/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java @@ -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, diff --git a/server/src/org/cloud/network/router/deployment/RouterDeploymentDefinition.java b/server/src/org/cloud/network/router/deployment/RouterDeploymentDefinition.java index 569200c93c3..2d04a7e633f 100644 --- a/server/src/org/cloud/network/router/deployment/RouterDeploymentDefinition.java +++ b/server/src/org/cloud/network/router/deployment/RouterDeploymentDefinition.java @@ -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(); } diff --git a/server/test/org/cloud/network/router/deployment/RouterDeploymentDefinitionTest.java b/server/test/org/cloud/network/router/deployment/RouterDeploymentDefinitionTest.java index b266f880c1e..1570a2e15a9 100644 --- a/server/test/org/cloud/network/router/deployment/RouterDeploymentDefinitionTest.java +++ b/server/test/org/cloud/network/router/deployment/RouterDeploymentDefinitionTest.java @@ -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 diff --git a/server/test/org/cloud/network/router/deployment/VpcRouterDeploymentDefinitionTest.java b/server/test/org/cloud/network/router/deployment/VpcRouterDeploymentDefinitionTest.java index 5a34ebf037e..13c20ae7e50 100644 --- a/server/test/org/cloud/network/router/deployment/VpcRouterDeploymentDefinitionTest.java +++ b/server/test/org/cloud/network/router/deployment/VpcRouterDeploymentDefinitionTest.java @@ -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 diff --git a/services/secondary-storage/controller/src/org/apache/cloudstack/secondarystorage/SecondaryStorageManagerImpl.java b/services/secondary-storage/controller/src/org/apache/cloudstack/secondarystorage/SecondaryStorageManagerImpl.java index 445852d33f0..453a4cbab0b 100644 --- a/services/secondary-storage/controller/src/org/apache/cloudstack/secondarystorage/SecondaryStorageManagerImpl.java +++ b/services/secondary-storage/controller/src/org/apache/cloudstack/secondarystorage/SecondaryStorageManagerImpl.java @@ -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,