From f44e26f97c18cdd9b6726b6b46460559a787ceef Mon Sep 17 00:00:00 2001 From: Daan Hoogland Date: Thu, 22 Oct 2026 11:35:40 +0200 Subject: [PATCH] use ConfigKeys for ManagementServer, agent, secondary storage and router settings Part of the split of #13884 (phase out the Config enum, #10752). Co-Authored-By: Claude Opus 5.5 --- .../cloud/agent/manager/AgentManagerImpl.java | 6 +- .../motion/AncientDataMotionStrategy.java | 6 +- .../StorageSystemDataMotionStrategy.java | 5 +- .../storage/image/TemplateServiceImpl.java | 10 +-- .../storage/snapshot/SnapshotServiceImpl.java | 10 +-- .../vmsnapshot/ScaleIOVMSnapshotStrategy.java | 4 +- .../cloudstack/storage/LocalHostEndpoint.java | 4 +- .../image/BaseImageStoreDriverImpl.java | 10 +-- .../hyperv/manager/HypervManagerImpl.java | 10 ++- .../resource/LibvirtComputingResource.java | 6 +- .../cloud/ovm/hypervisor/OvmDiscoverer.java | 8 +- .../ovm3/resources/Ovm3Discoverer.java | 12 ++- .../vmware/manager/VmwareManagerImpl.java | 5 +- .../discoverer/XcpServerDiscoverer.java | 6 +- .../lb/InternalLoadBalancerVMManagerImpl.java | 8 +- .../CloudStackImageStoreDriverImpl.java | 13 +--- .../driver/S3ImageStoreDriverImpl.java | 7 +- .../driver/SwiftImageStoreDriverImpl.java | 4 +- .../LinstorPrimaryDataStoreDriverImpl.java | 6 +- .../driver/ScaleIOPrimaryDataStoreDriver.java | 19 +++-- .../ScaleIOPrimaryDataStoreDriverTest.java | 5 -- .../main/java/com/cloud/api/ApiDBUtils.java | 5 +- .../api/response/ApiResponseSerializer.java | 4 +- .../ConfigurationManagerImpl.java | 13 ++-- .../consoleproxy/ConsoleProxyManagerImpl.java | 23 +++--- .../discoverer/LibvirtServerDiscoverer.java | 7 +- .../network/ExternalIpAddressAllocator.java | 10 +-- .../network/router/CommandSetupHelper.java | 2 +- .../VirtualNetworkApplianceManagerImpl.java | 25 +++--- .../com/cloud/resource/DiscovererBase.java | 16 ++-- .../cloud/server/ConfigurationServerImpl.java | 48 ++++++++---- .../cloud/storage/VolumeApiServiceImpl.java | 7 +- .../storage/download/DownloadMonitorImpl.java | 6 +- .../storage/snapshot/SnapshotManagerImpl.java | 4 +- .../cloud/template/TemplateAdapterBase.java | 3 +- .../cloud/template/TemplateManagerImpl.java | 4 +- .../java/com/cloud/vm/UserVmManagerImpl.java | 2 +- .../ConfigurationManagerImplTest.java | 12 +-- .../cloud/resource/DiscovererBaseTest.java | 78 +++++++++++++++++++ .../server/ConfigurationServerImplTest.java | 22 ++++-- .../PremiumSecondaryStorageManagerImpl.java | 16 ++-- .../SecondaryStorageManagerImpl.java | 38 ++++----- .../resource/SecondaryStorageDiscoverer.java | 4 +- 43 files changed, 289 insertions(+), 224 deletions(-) create mode 100644 server/src/test/java/com/cloud/resource/DiscovererBaseTest.java diff --git a/engine/orchestration/src/main/java/com/cloud/agent/manager/AgentManagerImpl.java b/engine/orchestration/src/main/java/com/cloud/agent/manager/AgentManagerImpl.java index d9f1fef87e47..5c26b46bbbbf 100644 --- a/engine/orchestration/src/main/java/com/cloud/agent/manager/AgentManagerImpl.java +++ b/engine/orchestration/src/main/java/com/cloud/agent/manager/AgentManagerImpl.java @@ -94,7 +94,6 @@ import com.cloud.alert.AlertManager; import com.cloud.cluster.ManagementServerHostVO; import com.cloud.cluster.dao.ManagementServerHostDao; -import com.cloud.configuration.Config; import com.cloud.configuration.ManagementServiceConfiguration; import com.cloud.dc.ClusterVO; import com.cloud.dc.DataCenterVO; @@ -121,6 +120,7 @@ import com.cloud.resource.ResourceManager; import com.cloud.resource.ResourceState; import com.cloud.resource.ServerResource; +import com.cloud.server.ManagementServer; import com.cloud.utils.NumbersUtil; import com.cloud.utils.Pair; import com.cloud.utils.component.ManagerBase; @@ -2273,8 +2273,8 @@ public void processConnect(final Host host, final StartupCommand cmd, final bool if (((StartupRoutingCommand)cmd).getHypervisorType() == HypervisorType.KVM || ((StartupRoutingCommand)cmd).getHypervisorType() == HypervisorType.LXC) { Map params = new HashMap<>(); - params.put(Config.RouterAggregationCommandEachTimeout.toString(), _configDao.getValue(Config.RouterAggregationCommandEachTimeout.toString())); - params.put(Config.MigrateWait.toString(), _configDao.getValue(Config.MigrateWait.toString())); + params.put(ManagementServer.RouterAggregationCommandEachTimeout.key(), String.valueOf(ManagementServer.RouterAggregationCommandEachTimeout.value())); + params.put(MigrateWait.toString(), String.valueOf(MigrateWait.value())); params.put(NetworkOrchestrationService.TUNGSTEN_ENABLED.key(), String.valueOf(NetworkOrchestrationService.TUNGSTEN_ENABLED.valueIn(host.getDataCenterId()))); params.put(ReconcileCommandService.ReconcileCommandsEnabled.key(), String.valueOf(_reconcileCommandsEnabled)); diff --git a/engine/storage/datamotion/src/main/java/org/apache/cloudstack/storage/motion/AncientDataMotionStrategy.java b/engine/storage/datamotion/src/main/java/org/apache/cloudstack/storage/motion/AncientDataMotionStrategy.java index 8cb4e0c40c0e..17fa80ce8c96 100644 --- a/engine/storage/datamotion/src/main/java/org/apache/cloudstack/storage/motion/AncientDataMotionStrategy.java +++ b/engine/storage/datamotion/src/main/java/org/apache/cloudstack/storage/motion/AncientDataMotionStrategy.java @@ -59,6 +59,7 @@ import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; import org.springframework.stereotype.Component; +import com.cloud.agent.AgentManager; import com.cloud.agent.api.Answer; import com.cloud.agent.api.storage.MigrateVolumeAnswer; @@ -68,7 +69,6 @@ import com.cloud.agent.api.to.DataTO; import com.cloud.agent.api.to.NfsTO; import com.cloud.agent.api.to.VirtualMachineTO; -import com.cloud.configuration.Config; import com.cloud.host.Host; import com.cloud.hypervisor.Hypervisor; import com.cloud.storage.DataStoreRole; @@ -85,7 +85,6 @@ import com.cloud.storage.dao.VolumeDao; import com.cloud.storage.snapshot.SnapshotManager; import com.cloud.template.TemplateManager; -import com.cloud.utils.NumbersUtil; import com.cloud.utils.db.DB; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.vm.VirtualMachineManager; @@ -632,8 +631,7 @@ private boolean canDirectlyCopyBetweenDataStoreScopes(Scope srcDataStoreScope, S } protected Answer migrateVolumeToPool(DataObject srcData, DataObject destData) { - String value = configDao.getValue(Config.MigrateWait.key()); - int waitInterval = NumbersUtil.parseInt(value, Integer.parseInt(Config.MigrateWait.getDefaultValue())); + int waitInterval = AgentManager.MigrateWait.value(); VolumeInfo volume = (VolumeInfo)srcData; StoragePool srcPool = (StoragePool)dataStoreMgr.getDataStore(srcData.getDataStore().getId(), DataStoreRole.Primary); diff --git a/engine/storage/datamotion/src/main/java/org/apache/cloudstack/storage/motion/StorageSystemDataMotionStrategy.java b/engine/storage/datamotion/src/main/java/org/apache/cloudstack/storage/motion/StorageSystemDataMotionStrategy.java index a98e1fa893b9..1a27498ed9c1 100644 --- a/engine/storage/datamotion/src/main/java/org/apache/cloudstack/storage/motion/StorageSystemDataMotionStrategy.java +++ b/engine/storage/datamotion/src/main/java/org/apache/cloudstack/storage/motion/StorageSystemDataMotionStrategy.java @@ -101,7 +101,6 @@ import com.cloud.agent.api.to.DiskTO; import com.cloud.agent.api.to.NfsTO; import com.cloud.agent.api.to.VirtualMachineTO; -import com.cloud.configuration.Config; import com.cloud.dc.dao.ClusterDao; import com.cloud.exception.AgentUnavailableException; import com.cloud.exception.OperationTimedoutException; @@ -139,7 +138,6 @@ import com.cloud.storage.dao.VMTemplatePoolDao; import com.cloud.storage.dao.VolumeDao; import com.cloud.storage.dao.VolumeDetailsDao; -import com.cloud.utils.NumbersUtil; import com.cloud.utils.db.GlobalLock; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.vm.VMInstanceVO; @@ -753,8 +751,7 @@ private void handleVolumeMigrationForXenServer(VolumeInfo srcVolumeInfo, VolumeI _volumeService.grantAccess(destVolumeInfo, hostVO, destVolumeInfo.getDataStore()); - String value = _configDao.getValue(Config.MigrateWait.key()); - int waitInterval = NumbersUtil.parseInt(value, Integer.parseInt(Config.MigrateWait.getDefaultValue())); + int waitInterval = AgentManager.MigrateWait.value(); StoragePool destPool = (StoragePool)dataStoreMgr.getDataStore(destVolumeInfo.getDataStore().getId(), DataStoreRole.Primary); diff --git a/engine/storage/image/src/main/java/org/apache/cloudstack/storage/image/TemplateServiceImpl.java b/engine/storage/image/src/main/java/org/apache/cloudstack/storage/image/TemplateServiceImpl.java index 6e32df5d5e3c..7299ddfa1423 100644 --- a/engine/storage/image/src/main/java/org/apache/cloudstack/storage/image/TemplateServiceImpl.java +++ b/engine/storage/image/src/main/java/org/apache/cloudstack/storage/image/TemplateServiceImpl.java @@ -81,7 +81,6 @@ import com.cloud.agent.api.storage.ListTemplateCommand; import com.cloud.agent.api.to.DatadiskTO; import com.cloud.alert.AlertManager; -import com.cloud.configuration.Config; import com.cloud.configuration.Resource.ResourceType; import com.cloud.dc.DataCenterVO; import com.cloud.dc.dao.ClusterDao; @@ -104,6 +103,7 @@ import com.cloud.storage.VMTemplateZoneVO; import com.cloud.storage.dao.VMTemplateDao; import com.cloud.storage.dao.VMTemplateZoneDao; +import com.cloud.storage.secondary.SecondaryStorageVmManager; import com.cloud.storage.template.TemplateConstants; import com.cloud.storage.template.TemplateProp; import com.cloud.template.TemplateManager; @@ -1519,12 +1519,8 @@ public AsyncCallFuture copyTemplate(TemplateInfo srcTemplate, private String generateCopyUrl(String ipAddress, String dir, String path) { String hostname = ipAddress; String scheme = "http"; - boolean _sslCopy = false; - String sslCfg = _configDao.getValue(Config.SecStorageEncryptCopy.toString()); - String _ssvmUrlDomain = _configDao.getValue("secstorage.ssl.cert.domain"); - if (sslCfg != null) { - _sslCopy = Boolean.parseBoolean(sslCfg); - } + boolean _sslCopy = SecondaryStorageVmManager.SecStorageEncryptCopy.value(); + String _ssvmUrlDomain = SecondaryStorageVmManager.SecStorageSecureCopyCert.value(); if(_sslCopy && (_ssvmUrlDomain == null || _ssvmUrlDomain.isEmpty())){ logger.warn("Empty secondary storage url domain, ignoring SSL"); _sslCopy = false; diff --git a/engine/storage/snapshot/src/main/java/org/apache/cloudstack/storage/snapshot/SnapshotServiceImpl.java b/engine/storage/snapshot/src/main/java/org/apache/cloudstack/storage/snapshot/SnapshotServiceImpl.java index a94c04ff4aae..0aea6e354e53 100644 --- a/engine/storage/snapshot/src/main/java/org/apache/cloudstack/storage/snapshot/SnapshotServiceImpl.java +++ b/engine/storage/snapshot/src/main/java/org/apache/cloudstack/storage/snapshot/SnapshotServiceImpl.java @@ -75,7 +75,6 @@ import org.apache.logging.log4j.LogManager; import com.cloud.agent.api.Answer; -import com.cloud.configuration.Config; import com.cloud.dc.DataCenter; import com.cloud.event.EventTypes; import com.cloud.event.UsageEventUtils; @@ -86,6 +85,7 @@ import com.cloud.storage.SnapshotVO; import com.cloud.storage.dao.SnapshotDao; import com.cloud.storage.dao.SnapshotDetailsDao; +import com.cloud.storage.secondary.SecondaryStorageVmManager; import com.cloud.storage.template.TemplateConstants; import com.cloud.utils.db.Transaction; import com.cloud.utils.db.TransactionCallbackNoReturn; @@ -188,12 +188,8 @@ public RevertSnapshotContext(AsyncCompletionCallback callback, SnapshotInfo s private String generateCopyUrlBase(String hostname, String dir) { String scheme = "http"; - boolean _sslCopy = false; - String sslCfg = _configDao.getValue(Config.SecStorageEncryptCopy.toString()); - String _ssvmUrlDomain = _configDao.getValue("secstorage.ssl.cert.domain"); - if (sslCfg != null) { - _sslCopy = Boolean.parseBoolean(sslCfg); - } + boolean _sslCopy = SecondaryStorageVmManager.SecStorageEncryptCopy.value(); + String _ssvmUrlDomain = SecondaryStorageVmManager.SecStorageSecureCopyCert.value(); if(_sslCopy && (_ssvmUrlDomain == null || _ssvmUrlDomain.isEmpty())){ logger.warn("Empty secondary storage url domain, ignoring SSL"); _sslCopy = false; diff --git a/engine/storage/snapshot/src/main/java/org/apache/cloudstack/storage/vmsnapshot/ScaleIOVMSnapshotStrategy.java b/engine/storage/snapshot/src/main/java/org/apache/cloudstack/storage/vmsnapshot/ScaleIOVMSnapshotStrategy.java index a18d65748cf1..80a53c538df1 100644 --- a/engine/storage/snapshot/src/main/java/org/apache/cloudstack/storage/vmsnapshot/ScaleIOVMSnapshotStrategy.java +++ b/engine/storage/snapshot/src/main/java/org/apache/cloudstack/storage/vmsnapshot/ScaleIOVMSnapshotStrategy.java @@ -47,7 +47,7 @@ import com.cloud.event.EventTypes; import com.cloud.event.UsageEventUtils; import com.cloud.event.UsageEventVO; -import com.cloud.server.ManagementServerImpl; +import com.cloud.server.ManagementServer; import com.cloud.storage.DiskOfferingVO; import com.cloud.storage.Storage; import com.cloud.storage.Storage.ImageFormat; @@ -170,7 +170,7 @@ public VMSnapshot takeVMSnapshot(VMSnapshot vmSnapshot) { long virtual_size=0; for (VolumeObjectTO volume : volumeTOs) { String volumeSnapshotName = String.format("%s-%s-%s-%s-%s", ScaleIOUtil.VMSNAPSHOT_PREFIX, vmSnapshotVO.getId(), volume.getId(), - storagePool.getUuid().split("-")[0].substring(4), ManagementServerImpl.customCsIdentifier.value()); + storagePool.getUuid().split("-")[0].substring(4), ManagementServer.customCsIdentifier.value()); srcVolumeDestSnapshotMap.put(ScaleIOUtil.getVolumePath(volume.getPath()), volumeSnapshotName); virtual_size += volume.getSize(); diff --git a/engine/storage/src/main/java/org/apache/cloudstack/storage/LocalHostEndpoint.java b/engine/storage/src/main/java/org/apache/cloudstack/storage/LocalHostEndpoint.java index 758bbe0c8c48..c970ec262fd0 100644 --- a/engine/storage/src/main/java/org/apache/cloudstack/storage/LocalHostEndpoint.java +++ b/engine/storage/src/main/java/org/apache/cloudstack/storage/LocalHostEndpoint.java @@ -33,8 +33,8 @@ import com.cloud.agent.api.Answer; import com.cloud.agent.api.Command; -import com.cloud.configuration.Config; import com.cloud.resource.ServerResource; +import com.cloud.storage.secondary.SecondaryStorageVmManager; import com.cloud.utils.component.ComponentContext; import com.cloud.utils.net.NetUtils; @@ -51,7 +51,7 @@ public LocalHostEndpoint() { private void configure() { // get mount parent folder configured in global setting, if set, this will overwrite _parent in NfsSecondaryStorageResource to work // around permission issue for default /mnt folder - String mountParent = configDao.getValue(Config.MountParent.key()); + String mountParent = SecondaryStorageVmManager.MountParent.value(); String path = mountParent + File.separator + "secStorage"; diff --git a/engine/storage/src/main/java/org/apache/cloudstack/storage/image/BaseImageStoreDriverImpl.java b/engine/storage/src/main/java/org/apache/cloudstack/storage/image/BaseImageStoreDriverImpl.java index 26b39e30776f..051717cf3e82 100644 --- a/engine/storage/src/main/java/org/apache/cloudstack/storage/image/BaseImageStoreDriverImpl.java +++ b/engine/storage/src/main/java/org/apache/cloudstack/storage/image/BaseImageStoreDriverImpl.java @@ -40,7 +40,6 @@ import org.apache.cloudstack.framework.async.AsyncCallbackDispatcher; import org.apache.cloudstack.framework.async.AsyncCompletionCallback; import org.apache.cloudstack.framework.async.AsyncRpcContext; -import org.apache.cloudstack.framework.config.dao.ConfigurationDao; import org.apache.cloudstack.storage.command.CommandResult; import org.apache.cloudstack.storage.command.CopyCommand; import org.apache.cloudstack.storage.command.DeleteCommand; @@ -67,7 +66,6 @@ import com.cloud.agent.api.to.NfsTO; import com.cloud.agent.api.to.OVFInformationTO; import com.cloud.alert.AlertManager; -import com.cloud.configuration.Config; import com.cloud.exception.AgentUnavailableException; import com.cloud.exception.OperationTimedoutException; import com.cloud.host.Host; @@ -79,11 +77,11 @@ import com.cloud.storage.VMTemplateStorageResourceAssoc; import com.cloud.storage.VMTemplateVO; import com.cloud.storage.VolumeVO; +import com.cloud.storage.secondary.SecondaryStorageVmManager; import com.cloud.storage.dao.VMTemplateDao; import com.cloud.storage.dao.VMTemplateZoneDao; import com.cloud.storage.dao.VolumeDao; import com.cloud.storage.download.DownloadMonitor; -import com.cloud.utils.NumbersUtil; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.utils.net.Proxy; import com.cloud.vm.VirtualMachineManager; @@ -107,8 +105,6 @@ public abstract class BaseImageStoreDriverImpl implements ImageStoreDriver { @Inject EndPointSelector _epSelector; @Inject - ConfigurationDao configDao; - @Inject VMTemplateZoneDao _vmTemplateZoneDao; @Inject AlertManager _alertMgr; @@ -163,7 +159,7 @@ public CreateContext(AsyncCompletionCallback callback, DataObject data) { protected Long getMaxTemplateSizeInBytes() { try { - return Long.parseLong(configDao.getValue("max.template.iso.size")) * 1024L * 1024L * 1024L; + return SecondaryStorageVmManager.MaxTemplateAndIsoSize.value() * 1024L * 1024L * 1024L; } catch (NumberFormatException e) { return null; } @@ -398,7 +394,7 @@ public void copyAsync(DataObject srcdata, DataObject destData, AsyncCompletionCa (srcdata.getType() == DataObjectType.SNAPSHOT && destData.getType() == DataObjectType.SNAPSHOT) || (srcdata.getType() == DataObjectType.VOLUME && destData.getType() == DataObjectType.VOLUME)) { - int nMaxExecutionMinutes = NumbersUtil.parseInt(configDao.getValue(Config.SecStorageCmdExecutionTimeMax.key()), 30); + int nMaxExecutionMinutes = AgentManager.SecStorageCmdExecutionTimeMax.value(); CopyCommand cmd = new CopyCommand(srcdata.getTO(), destData.getTO(), nMaxExecutionMinutes * 60 * 1000, VirtualMachineManager.ExecuteInSequence.value()); Answer answer = null; diff --git a/plugins/hypervisors/hyperv/src/main/java/com/cloud/hypervisor/hyperv/manager/HypervManagerImpl.java b/plugins/hypervisors/hyperv/src/main/java/com/cloud/hypervisor/hyperv/manager/HypervManagerImpl.java index a31637b60deb..3c1803612fa6 100644 --- a/plugins/hypervisors/hyperv/src/main/java/com/cloud/hypervisor/hyperv/manager/HypervManagerImpl.java +++ b/plugins/hypervisors/hyperv/src/main/java/com/cloud/hypervisor/hyperv/manager/HypervManagerImpl.java @@ -35,10 +35,12 @@ import org.apache.cloudstack.utils.identity.ManagementServerNode; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; +import com.cloud.agent.AgentManager; +import com.cloud.network.router.VirtualNetworkApplianceManager; -import com.cloud.configuration.Config; import com.cloud.storage.JavaStorageLayer; import com.cloud.storage.StorageLayer; +import com.cloud.storage.secondary.SecondaryStorageVmManager; import com.cloud.utils.FileUtil; import com.cloud.utils.NumbersUtil; import com.cloud.utils.db.GlobalLock; @@ -78,7 +80,7 @@ public boolean configure(String name, Map params) throws Configu _storage = new JavaStorageLayer(); _storage.configure("StorageLayer", params); } - _routerExtraPublicNics = NumbersUtil.parseInt(_configDao.getValue(Config.RouterExtraPublicNics.key()), 2); + _routerExtraPublicNics = VirtualNetworkApplianceManager.RouterExtraPublicNics.value(); return true; } @@ -313,12 +315,12 @@ private File getSystemVMPatchIsoFile() { } private String getMountParent() { - String mountParent = _configDao.getValue(Config.MountParent.key()); + String mountParent = SecondaryStorageVmManager.MountParent.value(); if (mountParent == null) { mountParent = File.separator + "mnt"; } - String instance = _configDao.getValue(Config.InstanceName.key()); + String instance = AgentManager.InstanceName.value(); if (instance == null) { instance = "DEFAULT"; } diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java index 7c3f826be171..621e6c82c85b 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java @@ -187,7 +187,7 @@ import com.cloud.agent.resource.virtualnetwork.VRScripts; import com.cloud.agent.resource.virtualnetwork.VirtualRouterDeployer; import com.cloud.agent.resource.virtualnetwork.VirtualRoutingResource; -import com.cloud.configuration.Config; +import com.cloud.agent.AgentManager; import com.cloud.dc.Vlan; import com.cloud.exception.InternalErrorException; import com.cloud.host.Host.Type; @@ -1768,8 +1768,8 @@ public boolean configureHostParams(final Map params) { storage.persist(AgentProperties.ROUTER_AGGREGATION_COMMAND_EACH_TIMEOUT.getName(), String.valueOf(longValue)); } - if (params.get(Config.MigrateWait.toString()) != null) { - String value = (String)params.get(Config.MigrateWait.toString()); + if (params.get(AgentManager.MigrateWait.toString()) != null) { + String value = (String)params.get(AgentManager.MigrateWait.toString()); Integer intValue = NumbersUtil.parseInt(value, -1); storage.persist("vm.migrate.wait", String.valueOf(intValue)); migrateWait = intValue; diff --git a/plugins/hypervisors/ovm/src/main/java/com/cloud/ovm/hypervisor/OvmDiscoverer.java b/plugins/hypervisors/ovm/src/main/java/com/cloud/ovm/hypervisor/OvmDiscoverer.java index 7dfd98301d72..7914b261aec1 100644 --- a/plugins/hypervisors/ovm/src/main/java/com/cloud/ovm/hypervisor/OvmDiscoverer.java +++ b/plugins/hypervisors/ovm/src/main/java/com/cloud/ovm/hypervisor/OvmDiscoverer.java @@ -31,7 +31,6 @@ import com.cloud.agent.api.StartupCommand; import com.cloud.agent.api.StartupRoutingCommand; -import com.cloud.configuration.Config; import com.cloud.dc.ClusterVO; import com.cloud.dc.dao.ClusterDao; import com.cloud.exception.DiscoveryException; @@ -46,6 +45,7 @@ import com.cloud.resource.ResourceStateAdapter; import com.cloud.resource.ServerResource; import com.cloud.resource.UnableDeleteHostException; +import com.cloud.server.ManagementServer; import com.cloud.utils.UuidUtils; import com.cloud.utils.db.QueryBuilder; import com.cloud.utils.db.SearchCriteria; @@ -65,9 +65,9 @@ public class OvmDiscoverer extends DiscovererBase implements Discoverer, Resourc @Override public boolean configure(String name, Map params) throws ConfigurationException { super.configure(name, params); - _publicNetworkDevice = _params.get(Config.OvmPublicNetwork.key()); - _privateNetworkDevice = _params.get(Config.OvmPrivateNetwork.key()); - _guestNetworkDevice = _params.get(Config.OvmGuestNetwork.key()); + _publicNetworkDevice = ManagementServer.OvmPublicNetwork.value(); + _privateNetworkDevice = ManagementServer.OvmPrivateNetwork.value(); + _guestNetworkDevice = ManagementServer.OvmGuestNetwork.value(); _resourceMgr.registerResourceStateAdapter(this.getClass().getSimpleName(), this); return true; } diff --git a/plugins/hypervisors/ovm3/src/main/java/com/cloud/hypervisor/ovm3/resources/Ovm3Discoverer.java b/plugins/hypervisors/ovm3/src/main/java/com/cloud/hypervisor/ovm3/resources/Ovm3Discoverer.java index 52cc419ad2e4..8bed78b58248 100755 --- a/plugins/hypervisors/ovm3/src/main/java/com/cloud/hypervisor/ovm3/resources/Ovm3Discoverer.java +++ b/plugins/hypervisors/ovm3/src/main/java/com/cloud/hypervisor/ovm3/resources/Ovm3Discoverer.java @@ -29,7 +29,6 @@ import javax.inject.Inject; import javax.naming.ConfigurationException; - import com.cloud.agent.AgentManager; import com.cloud.agent.Listener; import com.cloud.agent.api.AgentControlAnswer; @@ -38,7 +37,6 @@ import com.cloud.agent.api.Command; import com.cloud.agent.api.StartupCommand; import com.cloud.agent.api.StartupRoutingCommand; -import com.cloud.configuration.Config; import com.cloud.dc.ClusterDetailsDao; import com.cloud.dc.ClusterVO; import com.cloud.dc.dao.ClusterDao; @@ -58,6 +56,7 @@ import com.cloud.resource.ResourceStateAdapter; import com.cloud.resource.ServerResource; import com.cloud.resource.UnableDeleteHostException; +import com.cloud.server.ManagementServer; import com.cloud.utils.UuidUtils; import com.cloud.utils.db.QueryBuilder; import com.cloud.utils.db.SearchCriteria; @@ -93,11 +92,10 @@ public boolean configure(String name, Map params) return false; } - /* these are in Config.java */ - publicNetworkDevice = _params.get(Config.Ovm3PublicNetwork.key()); - privateNetworkDevice = _params.get(Config.Ovm3PrivateNetwork.key()); - guestNetworkDevice = _params.get(Config.Ovm3GuestNetwork.key()); - storageNetworkDevice = _params.get(Config.Ovm3StorageNetwork.key()); + publicNetworkDevice = ManagementServer.Ovm3PublicNetwork.value(); + privateNetworkDevice = ManagementServer.Ovm3PrivateNetwork.value(); + guestNetworkDevice = ManagementServer.Ovm3GuestNetwork.value(); + storageNetworkDevice = ManagementServer.Ovm3StorageNetwork.value(); resourceMgr.registerResourceStateAdapter(this.getClass() .getSimpleName(), this); return true; diff --git a/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java b/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java index 15ded5936c5d..8be9e686364c 100644 --- a/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java +++ b/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java @@ -150,6 +150,7 @@ import com.cloud.storage.StoragePool; import com.cloud.storage.StoragePoolStatus; import com.cloud.storage.dao.VMTemplatePoolDao; +import com.cloud.storage.secondary.SecondaryStorageVmManager; import com.cloud.template.TemplateManager; import com.cloud.utils.FileUtil; import com.cloud.utils.NumbersUtil; @@ -313,13 +314,13 @@ public boolean configure(String name, Map params) throws Configu throw new ConfigurationException("Vmware component can only run under premium distribution"); } - _instance = _configDao.getValue(Config.InstanceName.key()); + _instance = AgentManager.InstanceName.value(); if (_instance == null) { _instance = "DEFAULT"; } logger.info("VmwareManagerImpl config - instance.name: " + _instance); - _mountParent = _configDao.getValue(Config.MountParent.key()); + _mountParent = SecondaryStorageVmManager.MountParent.value(); if (_mountParent == null) { _mountParent = File.separator + "mnt"; } diff --git a/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/discoverer/XcpServerDiscoverer.java b/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/discoverer/XcpServerDiscoverer.java index 6d298629e7ef..9381d9f88a1d 100644 --- a/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/discoverer/XcpServerDiscoverer.java +++ b/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/discoverer/XcpServerDiscoverer.java @@ -482,10 +482,10 @@ public boolean configure(String name, Map params) throws Configu super.configure(name, params); serverConfig(); - String value = _params.get(Config.XapiWait.toString()); - _wait = NumbersUtil.parseInt(value, Integer.parseInt(Config.XapiWait.getDefaultValue())); + String value = _params.get(AgentManager.XapiWait.toString()); + _wait = NumbersUtil.parseInt(value, Integer.parseInt(AgentManager.XapiWait.defaultValue())); - _instance = _params.get(Config.InstanceName.key()); + _instance = _params.get(AgentManager.InstanceName.key()); value = _params.get("xenserver.check.hvm"); _checkHvm = Boolean.parseBoolean(value); diff --git a/plugins/network-elements/internal-loadbalancer/src/main/java/org/apache/cloudstack/network/lb/InternalLoadBalancerVMManagerImpl.java b/plugins/network-elements/internal-loadbalancer/src/main/java/org/apache/cloudstack/network/lb/InternalLoadBalancerVMManagerImpl.java index 4ce4c3eef9eb..ef355f49a5f2 100644 --- a/plugins/network-elements/internal-loadbalancer/src/main/java/org/apache/cloudstack/network/lb/InternalLoadBalancerVMManagerImpl.java +++ b/plugins/network-elements/internal-loadbalancer/src/main/java/org/apache/cloudstack/network/lb/InternalLoadBalancerVMManagerImpl.java @@ -99,6 +99,8 @@ import com.cloud.offering.ServiceOffering; import com.cloud.offerings.dao.NetworkOfferingDao; import com.cloud.resource.ResourceManager; +import com.cloud.server.ManagementServer; +import com.cloud.storage.secondary.SecondaryStorageVmManager; import com.cloud.service.ServiceOfferingVO; import com.cloud.service.dao.ServiceOfferingDao; import com.cloud.storage.Storage; @@ -193,8 +195,8 @@ public boolean finalizeVirtualMachineProfile(final VirtualMachineProfile profile buf.append(" template=domP"); buf.append(" name=").append(profile.getHostName()); - if (Boolean.valueOf(_configDao.getValue("system.vm.random.password"))) { - buf.append(" vmpassword=").append(_configDao.getValue("system.vm.password")); + if (SecondaryStorageVmManager.SystemVMRandomPassword.value()) { + buf.append(" vmpassword=").append(ManagementServer.SystemVMPassword.value()); } NicProfile controlNic = null; @@ -231,7 +233,7 @@ public boolean finalizeVirtualMachineProfile(final VirtualMachineProfile profile buf.append(" localgw=").append(dest.getPod().getGateway()); } } - String msPublicKey = _configDao.getValue("ssh.publickey"); + String msPublicKey = ManagementServer.SshPublicKey.value(); buf.append(" authorized_key=").append(VirtualMachineGuru.getEncodedMsPublicKey(msPublicKey)); } diff --git a/plugins/storage/image/default/src/main/java/org/apache/cloudstack/storage/datastore/driver/CloudStackImageStoreDriverImpl.java b/plugins/storage/image/default/src/main/java/org/apache/cloudstack/storage/datastore/driver/CloudStackImageStoreDriverImpl.java index f4c310be40f4..b9789cf20b27 100644 --- a/plugins/storage/image/default/src/main/java/org/apache/cloudstack/storage/datastore/driver/CloudStackImageStoreDriverImpl.java +++ b/plugins/storage/image/default/src/main/java/org/apache/cloudstack/storage/datastore/driver/CloudStackImageStoreDriverImpl.java @@ -33,7 +33,6 @@ import org.apache.cloudstack.engine.subsystem.api.storage.DataStore; import org.apache.cloudstack.engine.subsystem.api.storage.EndPoint; import org.apache.cloudstack.engine.subsystem.api.storage.EndPointSelector; -import org.apache.cloudstack.framework.config.dao.ConfigurationDao; import org.apache.cloudstack.storage.image.NfsImageStoreDriverImpl; import org.apache.cloudstack.storage.image.datastore.ImageStoreEntity; import org.apache.cloudstack.storage.image.store.ImageStoreImpl; @@ -42,14 +41,12 @@ import com.cloud.agent.api.storage.CreateEntityDownloadURLCommand; import com.cloud.agent.api.to.DataStoreTO; import com.cloud.agent.api.to.NfsTO; -import com.cloud.configuration.Config; import com.cloud.storage.Storage.ImageFormat; +import com.cloud.storage.secondary.SecondaryStorageVmManager; import com.cloud.utils.exception.CloudRuntimeException; public class CloudStackImageStoreDriverImpl extends NfsImageStoreDriverImpl { - @Inject - ConfigurationDao _configDao; @Inject HostDao _hostDao; @Inject @@ -130,12 +127,8 @@ private String generateCopyUrl(String ipAddress, String fileName, String filePat String hostname = ipAddress; String scheme = "http"; - boolean _sslCopy = false; - String sslCfg = _configDao.getValue(Config.SecStorageEncryptCopy.toString()); - String _ssvmUrlDomain = _configDao.getValue("secstorage.ssl.cert.domain"); - if (sslCfg != null) { - _sslCopy = Boolean.parseBoolean(sslCfg); - } + boolean _sslCopy = SecondaryStorageVmManager.SecStorageEncryptCopy.value(); + String _ssvmUrlDomain = SecondaryStorageVmManager.SecStorageSecureCopyCert.value(); if(_sslCopy && (_ssvmUrlDomain == null || _ssvmUrlDomain.isEmpty())){ logger.warn("Empty secondary storage url domain, ignoring SSL"); _sslCopy = false; diff --git a/plugins/storage/image/s3/src/main/java/org/apache/cloudstack/storage/datastore/driver/S3ImageStoreDriverImpl.java b/plugins/storage/image/s3/src/main/java/org/apache/cloudstack/storage/datastore/driver/S3ImageStoreDriverImpl.java index 6318c1920a99..e24eb8a31fcd 100644 --- a/plugins/storage/image/s3/src/main/java/org/apache/cloudstack/storage/datastore/driver/S3ImageStoreDriverImpl.java +++ b/plugins/storage/image/s3/src/main/java/org/apache/cloudstack/storage/datastore/driver/S3ImageStoreDriverImpl.java @@ -24,7 +24,6 @@ import javax.inject.Inject; - import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.engine.subsystem.api.storage.DataObject; import org.apache.cloudstack.engine.subsystem.api.storage.DataStore; @@ -37,7 +36,7 @@ import com.cloud.agent.api.to.S3TO; import com.cloud.configuration.Config; import com.cloud.storage.Storage.ImageFormat; -import com.cloud.utils.NumbersUtil; +import com.cloud.storage.secondary.SecondaryStorageVmManager; import com.cloud.utils.storage.S3.S3Utils; public class S3ImageStoreDriverImpl extends BaseImageStoreDriverImpl { @@ -93,10 +92,8 @@ public String createEntityExtractUrl(DataStore store, String key, ImageFormat fo long milliSeconds = expiration.getTime(); // Get extract url expiration interval set in global configuration (in seconds) - String urlExpirationInterval = _configDao.getValue(Config.ExtractURLExpirationInterval.toString()); - // Expired after configured interval (in milliseconds), default 14400 seconds - milliSeconds += 1000 * NumbersUtil.parseInt(urlExpirationInterval, 14400); + milliSeconds += 1000 * SecondaryStorageVmManager.ExtractURLExpirationInterval.value(); expiration.setTime(milliSeconds); URL s3url = S3Utils.generatePresignedUrl(s3, s3.getBucketName(), key, expiration); diff --git a/plugins/storage/image/swift/src/main/java/org/apache/cloudstack/storage/datastore/driver/SwiftImageStoreDriverImpl.java b/plugins/storage/image/swift/src/main/java/org/apache/cloudstack/storage/datastore/driver/SwiftImageStoreDriverImpl.java index 61ff57fd0587..7c687c1260c7 100644 --- a/plugins/storage/image/swift/src/main/java/org/apache/cloudstack/storage/datastore/driver/SwiftImageStoreDriverImpl.java +++ b/plugins/storage/image/swift/src/main/java/org/apache/cloudstack/storage/datastore/driver/SwiftImageStoreDriverImpl.java @@ -44,8 +44,8 @@ import com.cloud.agent.api.to.DataObjectType; import com.cloud.agent.api.to.DataStoreTO; import com.cloud.agent.api.to.SwiftTO; -import com.cloud.configuration.Config; import com.cloud.storage.Storage.ImageFormat; +import com.cloud.storage.secondary.SecondaryStorageVmManager; import com.cloud.utils.SwiftUtil; import com.cloud.utils.exception.CloudRuntimeException; @@ -83,7 +83,7 @@ public String createEntityExtractUrl(DataStore store, String installPath, ImageF String containerName = SwiftUtil.getContainerName(dataObject.getType().toString(), dataObject.getId()); String objectName = installPath.split("\\/")[1]; // Get extract url expiration interval set in global configuration (in seconds) - int urlExpirationInterval = Integer.parseInt(_configDao.getValue(Config.ExtractURLExpirationInterval.toString())); + int urlExpirationInterval = SecondaryStorageVmManager.ExtractURLExpirationInterval.value(); URL swiftUrl = SwiftUtil.generateTempUrl(swiftTO, containerName, objectName, tempKey, urlExpirationInterval); if (swiftUrl != null) { diff --git a/plugins/storage/volume/linstor/src/main/java/org/apache/cloudstack/storage/datastore/driver/LinstorPrimaryDataStoreDriverImpl.java b/plugins/storage/volume/linstor/src/main/java/org/apache/cloudstack/storage/datastore/driver/LinstorPrimaryDataStoreDriverImpl.java index dfe39a1e2200..8ea55f2def03 100644 --- a/plugins/storage/volume/linstor/src/main/java/org/apache/cloudstack/storage/datastore/driver/LinstorPrimaryDataStoreDriverImpl.java +++ b/plugins/storage/volume/linstor/src/main/java/org/apache/cloudstack/storage/datastore/driver/LinstorPrimaryDataStoreDriverImpl.java @@ -44,6 +44,7 @@ import java.util.Map; import java.util.Optional; import java.util.stream.Collectors; +import com.cloud.agent.AgentManager; import com.cloud.agent.api.Answer; import com.cloud.agent.api.storage.ResizeVolumeAnswer; @@ -55,7 +56,6 @@ import com.cloud.agent.api.to.StorageFilerTO; import com.cloud.api.storage.LinstorBackupSnapshotCommand; import com.cloud.api.storage.LinstorRevertBackupSnapshotCommand; -import com.cloud.configuration.Config; import com.cloud.host.Host; import com.cloud.host.HostVO; import com.cloud.host.Status; @@ -83,7 +83,6 @@ import com.cloud.storage.dao.VolumeDao; import com.cloud.storage.dao.VolumeDetailsDao; import com.cloud.storage.snapshot.SnapshotManager; -import com.cloud.utils.NumbersUtil; import com.cloud.utils.Pair; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.vm.VirtualMachineManager; @@ -984,8 +983,7 @@ private Answer copyTemplate(DataObject srcData, DataObject dstData) { Answer answer; if (newCreated) { - int nMaxExecutionMinutes = NumbersUtil.parseInt( - _configDao.getValue(Config.SecStorageCmdExecutionTimeMax.key()), 30); + int nMaxExecutionMinutes = AgentManager.SecStorageCmdExecutionTimeMax.value(); CopyCommand cmd = new CopyCommand( srcData.getTO(), dstData.getTO(), diff --git a/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/driver/ScaleIOPrimaryDataStoreDriver.java b/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/driver/ScaleIOPrimaryDataStoreDriver.java index 0b2571224046..0e5ffcfab1ee 100644 --- a/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/driver/ScaleIOPrimaryDataStoreDriver.java +++ b/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/driver/ScaleIOPrimaryDataStoreDriver.java @@ -67,6 +67,7 @@ import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; +import com.cloud.agent.AgentManager; import com.cloud.agent.api.Answer; import com.cloud.agent.api.GetVolumeStatAnswer; @@ -79,12 +80,11 @@ import com.cloud.agent.api.to.DiskTO; import com.cloud.agent.api.to.StorageFilerTO; import com.cloud.alert.AlertManager; -import com.cloud.configuration.Config; import com.cloud.exception.OperationTimedoutException; import com.cloud.host.Host; import com.cloud.host.HostVO; import com.cloud.host.dao.HostDao; -import com.cloud.server.ManagementServerImpl; +import com.cloud.server.ManagementServer; import com.cloud.storage.DataStoreRole; import com.cloud.storage.ResizeVolumePayload; import com.cloud.storage.SnapshotVO; @@ -103,7 +103,6 @@ import com.cloud.storage.dao.VMTemplatePoolDao; import com.cloud.storage.dao.VolumeDao; import com.cloud.storage.dao.VolumeDetailsDao; -import com.cloud.utils.NumbersUtil; import com.cloud.utils.Pair; import com.cloud.utils.component.ComponentContext; import com.cloud.utils.exception.CloudRuntimeException; @@ -443,7 +442,7 @@ public void takeSnapshot(SnapshotInfo snapshotInfo, AsyncCompletionCallback params = new HashMap<>(); - params.put(Config.RouterAggregationCommandEachTimeout.toString(), _configDao.getValue(Config.RouterAggregationCommandEachTimeout.toString())); - params.put(Config.MigrateWait.toString(), _configDao.getValue(Config.MigrateWait.toString())); + params.put(ManagementServer.RouterAggregationCommandEachTimeout.key(), String.valueOf(ManagementServer.RouterAggregationCommandEachTimeout.value())); + params.put(AgentManager.MigrateWait.toString(), String.valueOf(AgentManager.MigrateWait.value())); _agentManager.propagateChangeToAgents(params); } else if (settingNameUpdated.equals(IndirectAgentLBServiceImpl.IndirectAgentLBCheckInterval.key())) { ConfigKey.Scope scope = settingUpdated.second(); @@ -980,7 +979,7 @@ public String updateConfiguration(final long userId, final String name, final St } catch (final Throwable e) { throw new CloudRuntimeException("Failed to update storage.network.device2 in host_details due to exception ", e); } - } else if (Config.SecStorageSecureCopyCert.key().equalsIgnoreCase(name)) { + } else if (SecondaryStorageVmManager.SecStorageSecureCopyCert.key().equalsIgnoreCase(name)) { //FIXME - Ideally there should be a listener model to listen to global config changes and be able to take action gracefully. //Expire the download urls final String sqlTemplate = "update template_store_ref set download_url_created=?"; @@ -1550,7 +1549,7 @@ protected String validateValueRange(String name, String value, Class type, Co } if (type.equals(String.class)) { - if (SecStorageAllowedInternalDownloadSites.key().equalsIgnoreCase(name) && StringUtils.isNotEmpty(value)) { + if (SecondaryStorageVmManager.SecStorageAllowedInternalDownloadSites.key().equalsIgnoreCase(name) && StringUtils.isNotEmpty(value)) { final String[] cidrs = value.split(","); for (final String cidr : cidrs) { if (!NetUtils.isValidIp4(cidr) && !NetUtils.isValidIp6(cidr) && !NetUtils.getCleanIp4Cidr(cidr).equals(cidr)) { diff --git a/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java b/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java index 2bc7a57f86ff..68bfbe3d952a 100644 --- a/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java +++ b/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java @@ -108,6 +108,8 @@ import com.cloud.resource.ResourceStateAdapter; import com.cloud.resource.ServerResource; import com.cloud.resource.UnableDeleteHostException; +import com.cloud.network.router.VirtualNetworkApplianceManager; +import com.cloud.server.ManagementServer; import com.cloud.service.ServiceOfferingVO; import com.cloud.service.dao.ServiceOfferingDao; import com.cloud.storage.Storage; @@ -1163,9 +1165,10 @@ public boolean configure(String name, Map params) throws Configu loadScanner.initScan(STARTUP_DELAY_IN_MILLISECONDS, capacityScanInterval); resourceManager.registerResourceStateAdapter(this.getClass().getSimpleName(), this); - staticPublicIp = configurationDao.getValue("consoleproxy.static.publicIp"); + staticPublicIp = ConsoleProxyStaticPublicIp.value(); if (staticPublicIp != null) { - staticPort = NumbersUtil.parseInt(configurationDao.getValue("consoleproxy.static.port"), 8443); + Integer configuredStaticPort = ConsoleProxyStaticPort.value(); + staticPort = configuredStaticPort != null ? configuredStaticPort : 8443; } if (logger.isInfoEnabled()) { @@ -1210,17 +1213,13 @@ public boolean finalizeVirtualMachineProfile(VirtualMachineProfile profile, Depl buf.append(" session_reconnection_window=").append(sessionReconnectionWindow); } - String msPublicKey = configurationDao.getValue("ssh.publickey"); + String msPublicKey = ManagementServer.SshPublicKey.value(); buf.append(" authorized_key=").append(VirtualMachineGuru.getEncodedMsPublicKey(msPublicKey)); - boolean externalDhcp = false; - String externalDhcpStr = configurationDao.getValue("direct.attach.network.externalIpAllocator.enabled"); - if (externalDhcpStr != null && externalDhcpStr.equalsIgnoreCase("true")) { - externalDhcp = true; - } + boolean externalDhcp = VirtualNetworkApplianceManager.DirectAttachNetworkEnabled.value(); - if (Boolean.valueOf(configurationDao.getValue("system.vm.random.password"))) { - buf.append(" vmpassword=").append(configurationDao.getValue("system.vm.password")); + if (SecondaryStorageVmManager.SystemVMRandomPassword.value()) { + buf.append(" vmpassword=").append(ManagementServer.SystemVMPassword.value()); } if (StringUtils.isNotEmpty(NTPServerConfig.value())) { @@ -1670,8 +1669,8 @@ private ServiceOfferingVO getServiceOfferingByUuidOrId(String cpvmSrvcOffIdStr, } private void createServiceOfferingForConsoleProxy() throws ConfigurationException { - int ramSize = NumbersUtil.parseInt(configurationDao.getValue("console.ram.size"), DEFAULT_PROXY_VM_RAMSIZE); - int cpuFreq = NumbersUtil.parseInt(configurationDao.getValue("console.cpu.mhz"), DEFAULT_PROXY_VM_CPUMHZ); + int ramSize = ConsoleProxyVmRamSize.value(); + int cpuFreq = ConsoleProxyVmCpuMhz.value(); List offerings = serviceOfferingDao.createSystemServiceOfferings("System Offering For Console Proxy", ServiceOffering.consoleProxyDefaultOffUniqueName, 1, ramSize, cpuFreq, 0, 0, false, null, Storage.ProvisioningType.THIN, true, null, true, VirtualMachine.Type.ConsoleProxy, true); diff --git a/server/src/main/java/com/cloud/hypervisor/kvm/discoverer/LibvirtServerDiscoverer.java b/server/src/main/java/com/cloud/hypervisor/kvm/discoverer/LibvirtServerDiscoverer.java index b9fa3f0ebae7..e7dd3dea60e5 100644 --- a/server/src/main/java/com/cloud/hypervisor/kvm/discoverer/LibvirtServerDiscoverer.java +++ b/server/src/main/java/com/cloud/hypervisor/kvm/discoverer/LibvirtServerDiscoverer.java @@ -62,6 +62,7 @@ import com.cloud.resource.ResourceStateAdapter; import com.cloud.resource.ServerResource; import com.cloud.resource.UnableDeleteHostException; +import com.cloud.server.ManagementServer; import com.cloud.utils.StringUtils; import com.cloud.utils.UuidUtils; import com.cloud.utils.exception.CloudRuntimeException; @@ -380,17 +381,17 @@ private HostVO waitForHostConnect(long dcId, long podId, long clusterId, String public boolean configure(String name, Map params) throws ConfigurationException { // _setupAgentPath = Script.findScript(getPatchPath(), // "setup_agent.sh"); - _kvmPrivateNic = _configDao.getValue(Config.KvmPrivateNetwork.key()); + _kvmPrivateNic = ManagementServer.KvmPrivateNetwork.value(); if (_kvmPrivateNic == null) { _kvmPrivateNic = "cloudbr0"; } - _kvmPublicNic = _configDao.getValue(Config.KvmPublicNetwork.key()); + _kvmPublicNic = ManagementServer.KvmPublicNetwork.value(); if (_kvmPublicNic == null) { _kvmPublicNic = _kvmPrivateNic; } - _kvmGuestNic = _configDao.getValue(Config.KvmGuestNetwork.key()); + _kvmGuestNic = ManagementServer.KvmGuestNetwork.value(); if (_kvmGuestNic == null) { _kvmGuestNic = _kvmPrivateNic; } diff --git a/server/src/main/java/com/cloud/network/ExternalIpAddressAllocator.java b/server/src/main/java/com/cloud/network/ExternalIpAddressAllocator.java index fc28c08e75ae..b08d6b5ce4d1 100644 --- a/server/src/main/java/com/cloud/network/ExternalIpAddressAllocator.java +++ b/server/src/main/java/com/cloud/network/ExternalIpAddressAllocator.java @@ -29,17 +29,13 @@ import javax.inject.Inject; import javax.naming.ConfigurationException; - -import org.apache.cloudstack.framework.config.dao.ConfigurationDao; - import com.cloud.dc.dao.VlanDao; import com.cloud.network.dao.IPAddressDao; +import com.cloud.network.router.VirtualNetworkApplianceManager; import com.cloud.utils.component.AdapterBase; import com.cloud.utils.exception.CloudRuntimeException; public class ExternalIpAddressAllocator extends AdapterBase implements IpAddrAllocator { - @Inject - ConfigurationDao _configDao = null; @Inject IPAddressDao _ipAddressDao = null; @Inject @@ -131,8 +127,8 @@ public boolean externalIpAddressAllocatorEnabled() { @Override public boolean configure(String name, Map params) throws ConfigurationException { - _isExternalIpAllocatorEnabled = Boolean.parseBoolean(_configDao.getValue("direct.attach.network.externalIpAllocator.enabled")); - _externalIpAllocatorUrl = _configDao.getValue("direct.attach.network.externalIpAllocator.url"); + _isExternalIpAllocatorEnabled = VirtualNetworkApplianceManager.DirectAttachNetworkEnabled.value(); + _externalIpAllocatorUrl = VirtualNetworkApplianceManager.DirectAttachNetworkExternalAPIURL.value(); _name = name; return true; diff --git a/server/src/main/java/com/cloud/network/router/CommandSetupHelper.java b/server/src/main/java/com/cloud/network/router/CommandSetupHelper.java index 5a532b3b2db5..e458f8e62d75 100644 --- a/server/src/main/java/com/cloud/network/router/CommandSetupHelper.java +++ b/server/src/main/java/com/cloud/network/router/CommandSetupHelper.java @@ -806,7 +806,7 @@ public void createVmDataCommandForVMs(final DomainRouterVO router, final Command public void createDhcpEntryCommandsForVMs(final DomainRouterVO router, final Commands cmds, final long guestNetworkId) { final List vms = _userVmDao.listByNetworkIdAndStates(guestNetworkId, VirtualMachine.State.Running, VirtualMachine.State.Migrating, VirtualMachine.State.Stopping); final DataCenterVO dc = _dcDao.findById(router.getDataCenterId()); - String dnsBasicZoneUpdates = _configDao.getValue(Config.DnsBasicZoneUpdates.key()); + String dnsBasicZoneUpdates = VirtualNetworkApplianceManager.DnsBasicZoneUpdates.value(); for (final UserVmVO vm : vms) { if (dc.getNetworkType() == NetworkType.Basic && router.getPodIdToDeployIn().longValue() != vm.getPodIdToDeployIn().longValue() && dnsBasicZoneUpdates.equalsIgnoreCase("pod")) { diff --git a/server/src/main/java/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/main/java/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java index e17118c833e2..389a1fcb0b20 100644 --- a/server/src/main/java/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java +++ b/server/src/main/java/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java @@ -221,6 +221,7 @@ import com.cloud.offerings.dao.NetworkOfferingDao; import com.cloud.serializer.GsonHelper; import com.cloud.server.ManagementServer; +import com.cloud.storage.secondary.SecondaryStorageVmManager; import com.cloud.service.ServiceOfferingVO; import com.cloud.service.dao.ServiceOfferingDao; import com.cloud.storage.Storage.ProvisioningType; @@ -545,10 +546,10 @@ public boolean configure(final String name, final Map params) th final Map configs = _configDao.getConfiguration("AgentManager", params); - int routerRamSize = NumbersUtil.parseInt(configs.get("router.ram.size"), DEFAULT_ROUTER_VM_RAMSIZE); + int routerRamSize = RouterRamSize.value(); int routerCpuMHz = NumbersUtil.parseInt(configs.get("router.cpu.mhz"), DEFAULT_ROUTER_CPU_MHZ); - _routerExtraPublicNics = NumbersUtil.parseInt(_configDao.getValue(Config.RouterExtraPublicNics.key()), 2); + _routerExtraPublicNics = RouterExtraPublicNics.value(); String value = configs.get("router.stats.interval"); _routerStatsInterval = NumbersUtil.parseInt(value, 300); @@ -576,12 +577,9 @@ public boolean configure(final String name, final Map params) th NetworkHelperImpl.setVMInstanceName(instance); - final String rpValue = configs.get("network.disable.rpfilter"); - if (rpValue != null && rpValue.equalsIgnoreCase("true")) { - _disableRpFilter = true; - } + _disableRpFilter = NetworkRouterRpFilter.value(); - _dnsBasicZoneUpdates = String.valueOf(_configDao.getValue(Config.DnsBasicZoneUpdates.key())); + _dnsBasicZoneUpdates = DnsBasicZoneUpdates.value(); logger.info("Router configurations: " + "ramsize=" + routerRamSize); @@ -1920,10 +1918,10 @@ public boolean finalizeVirtualMachineProfile(final VirtualMachineProfile profile buf.append(" template=domP"); buf.append(" name=").append(profile.getHostName()); - if (Boolean.parseBoolean(_configDao.getValue("system.vm.random.password"))) { - buf.append(" vmpassword=").append(_configDao.getValue("system.vm.password")); + if (SecondaryStorageVmManager.SystemVMRandomPassword.value()) { + buf.append(" vmpassword=").append(ManagementServer.SystemVMPassword.value()); } - String msPublicKey = _configDao.getValue("ssh.publickey"); + String msPublicKey = ManagementServer.SshPublicKey.value(); buf.append(" authorized_key=").append(VirtualMachineGuru.getEncodedMsPublicKey(msPublicKey)); NicProfile controlNic = null; @@ -2011,8 +2009,7 @@ public boolean finalizeVirtualMachineProfile(final VirtualMachineProfile profile throw new CloudRuntimeException("Didn't start a control port"); } - final String rpValue = _configDao.getValue(Config.NetworkRouterRpFilter.key()); - _disableRpFilter = rpValue != null && rpValue.equalsIgnoreCase("true"); + _disableRpFilter = NetworkRouterRpFilter.value(); String rpFilter = " "; String type; @@ -2192,7 +2189,7 @@ protected StringBuilder createGuestBootLoadArgs(final NicProfile guestNic, final buf.append(" guestbrd=").append(brd); buf.append(" guestcidrsize=").append(NetUtils.getCidrSize(guestNic.getIPv4Netmask())); - final int advertInt = NumbersUtil.parseInt(_configDao.getValue(Config.RedundantRouterVrrpInterval.key()), 1); + final int advertInt = RedundantRouterVrrpInterval.value(); buf.append(" advert_int=").append(advertInt); } @@ -2235,7 +2232,7 @@ protected StringBuilder createRedundantRouterArgs(final NicProfile nic, final Do if (isRedundant) { buf.append(" redundant_router=1"); - final int advertInt = NumbersUtil.parseInt(_configDao.getValue(Config.RedundantRouterVrrpInterval.key()), 1); + final int advertInt = RedundantRouterVrrpInterval.value(); buf.append(" advert_int=").append(advertInt); final Long vpcId = router.getVpcId(); diff --git a/server/src/main/java/com/cloud/resource/DiscovererBase.java b/server/src/main/java/com/cloud/resource/DiscovererBase.java index 43f31c8745de..2046daa59f1a 100644 --- a/server/src/main/java/com/cloud/resource/DiscovererBase.java +++ b/server/src/main/java/com/cloud/resource/DiscovererBase.java @@ -26,14 +26,16 @@ import javax.naming.ConfigurationException; import org.apache.cloudstack.framework.config.dao.ConfigurationDao; +import com.cloud.agent.AgentManager; -import com.cloud.configuration.Config; import com.cloud.dc.ClusterVO; import com.cloud.dc.dao.ClusterDao; import com.cloud.dc.dao.DataCenterDao; import com.cloud.host.HostVO; import com.cloud.host.dao.HostDao; import com.cloud.network.NetworkModel; +import com.cloud.server.ManagementServer; +import com.cloud.storage.secondary.SecondaryStorageVmManager; import com.cloud.utils.component.AdapterBase; import com.cloud.utils.net.UrlUtil; @@ -133,12 +135,12 @@ protected HashMap buildConfigParams(HostVO host) { params.put("ipaddress", host.getPrivateIpAddress()); params.put("secondary.storage.vm", "false"); - params.put("max.template.iso.size", _configDao.getValue(Config.MaxTemplateAndIsoSize.toString())); - params.put("migratewait", _configDao.getValue(Config.MigrateWait.toString())); - params.put(Config.XenServerMaxNics.toString().toLowerCase(), _configDao.getValue(Config.XenServerMaxNics.toString())); - params.put(Config.XenServerHeartBeatInterval.toString().toLowerCase(), _configDao.getValue(Config.XenServerHeartBeatInterval.toString())); - params.put(Config.XenServerHeartBeatTimeout.toString().toLowerCase(), _configDao.getValue(Config.XenServerHeartBeatTimeout.toString())); - params.put("router.aggregation.command.each.timeout", _configDao.getValue(Config.RouterAggregationCommandEachTimeout.toString())); + params.put("max.template.iso.size", String.valueOf(SecondaryStorageVmManager.MaxTemplateAndIsoSize.value())); + params.put("migratewait", String.valueOf(AgentManager.MigrateWait.value())); + params.put(AgentManager.XenServerMaxNics.toString().toLowerCase(), String.valueOf(AgentManager.XenServerMaxNics.value())); + params.put(ManagementServer.XenServerHeartBeatInterval.key().toLowerCase(), String.valueOf(ManagementServer.XenServerHeartBeatInterval.value())); + params.put(ManagementServer.XenServerHeartBeatTimeout.key().toLowerCase(), String.valueOf(ManagementServer.XenServerHeartBeatTimeout.value())); + params.put("router.aggregation.command.each.timeout", String.valueOf(ManagementServer.RouterAggregationCommandEachTimeout.value())); return params; diff --git a/server/src/main/java/com/cloud/server/ConfigurationServerImpl.java b/server/src/main/java/com/cloud/server/ConfigurationServerImpl.java index efa4cf8c6135..053d2a7fdc6f 100644 --- a/server/src/main/java/com/cloud/server/ConfigurationServerImpl.java +++ b/server/src/main/java/com/cloud/server/ConfigurationServerImpl.java @@ -93,6 +93,7 @@ import com.cloud.storage.DiskOfferingVO; import com.cloud.storage.Storage.ProvisioningType; import com.cloud.storage.dao.DiskOfferingDao; +import com.cloud.storage.secondary.SecondaryStorageVmManager; import com.cloud.template.TemplateManager; import com.cloud.test.IPRangeConfig; import com.cloud.user.Account; @@ -218,10 +219,24 @@ public void persistDefaultValues() throws InternalErrorException { } } - _configDao.update(Config.UseSecondaryStorageVm.key(), Config.UseSecondaryStorageVm.getCategory(), "true"); + ConfigurationVO useSecondaryStorageVmConfig = _configDao.findByName(SecondaryStorageVmManager.UseSecondaryStorageVm.key()); + if (useSecondaryStorageVmConfig == null) { + ConfigurationVO configVO = new ConfigurationVO(SecondaryStorageVmManager.class.getSimpleName(), SecondaryStorageVmManager.UseSecondaryStorageVm); + configVO.setValue("true"); + _configDao.persist(configVO); + } else { + _configDao.update(SecondaryStorageVmManager.UseSecondaryStorageVm.key(), SecondaryStorageVmManager.UseSecondaryStorageVm.category(), "true"); + } logger.debug("ConfigurationServer made secondary storage vm required."); - _configDao.update(Config.SecStorageEncryptCopy.key(), Config.SecStorageEncryptCopy.getCategory(), "false"); + ConfigurationVO secStorageEncryptCopyConfig = _configDao.findByName(SecondaryStorageVmManager.SecStorageEncryptCopy.key()); + if (secStorageEncryptCopyConfig == null) { + ConfigurationVO configVO = new ConfigurationVO(SecondaryStorageVmManager.class.getSimpleName(), SecondaryStorageVmManager.SecStorageEncryptCopy); + configVO.setValue("false"); + _configDao.persist(configVO); + } else { + _configDao.update(SecondaryStorageVmManager.SecStorageEncryptCopy.key(), SecondaryStorageVmManager.SecStorageEncryptCopy.category(), "false"); + } logger.debug("ConfigurationServer made secondary storage copy encrypt set to false."); _configDao.update("user.password.encoders.exclude", "MD5,LDAP,PLAINTEXT"); @@ -243,7 +258,14 @@ public void persistDefaultValues() throws InternalErrorException { // Save the mount parent to the configuration table String mountParent = getMountParent(); if (mountParent != null) { - _configDao.update(Config.MountParent.key(), Config.MountParent.getCategory(), mountParent); + ConfigurationVO mountParentConfig = _configDao.findByName(SecondaryStorageVmManager.MountParent.key()); + if (mountParentConfig == null) { + ConfigurationVO configVO = new ConfigurationVO(SecondaryStorageVmManager.class.getSimpleName(), SecondaryStorageVmManager.MountParent); + configVO.setValue(mountParent); + _configDao.persist(configVO); + } else { + _configDao.update(SecondaryStorageVmManager.MountParent.key(), SecondaryStorageVmManager.MountParent.category(), mountParent); + } logger.debug("ConfigurationServer saved \"" + mountParent + "\" as mount.parent."); } else { logger.debug("ConfigurationServer could not detect mount.parent."); @@ -252,9 +274,9 @@ public void persistDefaultValues() throws InternalErrorException { String hostIpAdr = NetUtils.getDefaultHostIp(); boolean needUpdateHostIp = true; if (hostIpAdr != null) { - Boolean devel = Boolean.valueOf(_configDao.getValue("developer")); + Boolean devel = ManagementServer.DeveloperMode.value(); if (devel) { - String value = _configDao.getValue(ApiServiceConfiguration.ManagementServerAddresses.key()); + String value = ApiServiceConfiguration.ManagementServerAddresses.value(); if (value != null && !value.equals("localhost")) { needUpdateHostIp = false; } @@ -555,11 +577,11 @@ protected void updateSystemvmPassword() { return; } - if (!Boolean.valueOf(_configDao.getValue("system.vm.random.password"))) { + if (!SecondaryStorageVmManager.SystemVMRandomPassword.value()) { return; } - String already = _configDao.getValue("system.vm.password"); + String already = ManagementServer.SystemVMPassword.value(); if (already == null) { TransactionLegacy txn = TransactionLegacy.currentTxn(); try { @@ -583,12 +605,12 @@ public void updateKeyPairs() { // Grab the SSH key pair and insert it into the database, if it is not present String username = System.getProperty("user.name"); - Boolean devel = Boolean.valueOf(_configDao.getValue("developer")); + Boolean devel = ManagementServer.DeveloperMode.value(); if (!username.equalsIgnoreCase("cloud") && !devel) { logger.warn("Systemvm keypairs could not be set. Management server should be run as cloud user, or in development mode."); return; } - String already = _configDao.getValue("ssh.privatekey"); + String already = ManagementServer.SshPrivateKey.value(); String homeDir = System.getProperty("user.home"); if (homeDir == null) { throw new CloudRuntimeException("Cannot get home directory for account: " + username); @@ -733,13 +755,13 @@ private void writeKeyToDisk(String key, String keyPath) { private void updateKeyPairsOnDisk(String homeDir) { File keyDir = new File(homeDir + "/.ssh"); - Boolean devel = Boolean.valueOf(_configDao.getValue("developer")); + Boolean devel = ManagementServer.DeveloperMode.value(); if (!keyDir.isDirectory()) { logger.warn("Failed to create " + homeDir + "/.ssh for storing the SSH keypars"); keyDir.mkdirs(); } - String pubKey = _configDao.getValue("ssh.publickey"); - String prvKey = _configDao.getValue("ssh.privatekey"); + String pubKey = ManagementServer.SshPublicKey.value(); + String prvKey = ManagementServer.SshPrivateKey.value(); // Using non-default file names (id_rsa.cloud and id_rsa.cloud.pub) in developer mode. This is to prevent SSH keys overwritten for user running management server if (devel) { @@ -799,7 +821,7 @@ protected boolean isOnWindows() { @DB protected void generateSecStorageVmCopyPassword() { - String already = _configDao.getValue("secstorage.copy.password"); + String already = SecondaryStorageVmManager.SecStorageCopyPassword.value(); if (already == null) { diff --git a/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java b/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java index 9eb20a7d6750..2955260cc74c 100644 --- a/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java +++ b/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java @@ -83,7 +83,6 @@ import org.apache.cloudstack.framework.async.AsyncCallFuture; import org.apache.cloudstack.framework.config.ConfigKey; import org.apache.cloudstack.framework.config.Configurable; -import org.apache.cloudstack.framework.config.dao.ConfigurationDao; import org.apache.cloudstack.framework.jobs.AsyncJob; import org.apache.cloudstack.framework.jobs.AsyncJobExecutionContext; import org.apache.cloudstack.framework.jobs.AsyncJobManager; @@ -136,7 +135,6 @@ import com.cloud.agent.api.to.DataTO; import com.cloud.agent.api.to.DiskTO; import com.cloud.api.ApiDBUtils; -import com.cloud.configuration.Config; import com.cloud.configuration.ConfigurationManager; import com.cloud.configuration.Resource.ResourceType; import com.cloud.dc.ClusterDetailsDao; @@ -190,6 +188,7 @@ import com.cloud.storage.dao.VMTemplateDao; import com.cloud.storage.dao.VolumeDao; import com.cloud.storage.dao.VolumeDetailsDao; +import com.cloud.storage.secondary.SecondaryStorageVmManager; import com.cloud.storage.snapshot.SnapshotApiService; import com.cloud.storage.snapshot.SnapshotManager; import com.cloud.template.TemplateManager; @@ -325,8 +324,6 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic @Inject private VMSnapshotDao _vmSnapshotDao; @Inject - private ConfigurationDao _configDao; - @Inject private DataStoreManager dataStoreMgr; @Inject private VolumeService volService; @@ -534,7 +531,7 @@ public GetUploadParamsResponse doInTransaction(TransactionStatus status) throws GetUploadParamsResponse response = new GetUploadParamsResponse(); - String ssvmUrlDomain = _configDao.getValue(Config.SecStorageSecureCopyCert.key()); + String ssvmUrlDomain = SecondaryStorageVmManager.SecStorageSecureCopyCert.value(); String protocol = UseHttpsToUpload.value() ? "https" : "http"; String url = ImageStoreUtil.generatePostUploadUrl(ssvmUrlDomain, ep.getPublicAddr(), vol.getUuid(), protocol); diff --git a/server/src/main/java/com/cloud/storage/download/DownloadMonitorImpl.java b/server/src/main/java/com/cloud/storage/download/DownloadMonitorImpl.java index 3344fe0f235f..ecc7f8d8be68 100644 --- a/server/src/main/java/com/cloud/storage/download/DownloadMonitorImpl.java +++ b/server/src/main/java/com/cloud/storage/download/DownloadMonitorImpl.java @@ -49,10 +49,10 @@ import com.cloud.agent.AgentManager; import com.cloud.agent.api.storage.DownloadAnswer; -import com.cloud.configuration.Config; import com.cloud.storage.DataStoreRole; import com.cloud.storage.RegisterVolumePayload; import com.cloud.storage.Storage.ImageFormat; +import com.cloud.storage.secondary.SecondaryStorageVmManager; import com.cloud.storage.VolumeApiService; import com.cloud.storage.VMTemplateStorageResourceAssoc.Status; import com.cloud.storage.template.TemplateConstants; @@ -86,7 +86,7 @@ public class DownloadMonitorImpl extends ManagerBase implements DownloadMonitor @Override public boolean configure(String name, Map params) { final Map configs = _configDao.getConfiguration("management-server", params); - _proxy = configs.get(Config.SecStorageProxy.key()); + _proxy = configs.get(AgentManager.SecStorageProxy.key()); _copyAuthPasswd = configs.get("secstorage.copy.password"); @@ -329,7 +329,7 @@ public void downloadSnapshotToStorage(DataObject snapshot, AsyncCompletionCallba private Long getMaxTemplateSizeInBytes() { try { - return Long.parseLong(_configDao.getValue("max.template.iso.size")) * 1024L * 1024L * 1024L; + return SecondaryStorageVmManager.MaxTemplateAndIsoSize.value() * 1024L * 1024L * 1024L; } catch (NumberFormatException e) { return null; } diff --git a/server/src/main/java/com/cloud/storage/snapshot/SnapshotManagerImpl.java b/server/src/main/java/com/cloud/storage/snapshot/SnapshotManagerImpl.java index acf55494ae74..c090cfbe7f21 100755 --- a/server/src/main/java/com/cloud/storage/snapshot/SnapshotManagerImpl.java +++ b/server/src/main/java/com/cloud/storage/snapshot/SnapshotManagerImpl.java @@ -96,7 +96,6 @@ import com.cloud.api.commands.ListRecurringSnapshotScheduleCmd; import com.cloud.api.query.MutualExclusiveIdsManagerBase; import com.cloud.configuration.ManagementServiceConfiguration; -import com.cloud.configuration.Config; import com.cloud.configuration.Resource.ResourceType; import com.cloud.dc.ClusterVO; import com.cloud.dc.DataCenter; @@ -151,6 +150,7 @@ import com.cloud.storage.dao.SnapshotZoneDao; import com.cloud.storage.dao.VMTemplateDao; import com.cloud.storage.dao.VolumeDao; +import com.cloud.storage.secondary.SecondaryStorageVmManager; import com.cloud.storage.template.TemplateConstants; import com.cloud.tags.ResourceTagVO; import com.cloud.tags.dao.ResourceTagDao; @@ -544,7 +544,7 @@ public String extractSnapshot(ExtractSnapshotCmd cmd) { Long zoneId = cmd.getZoneId(); if (!_accountMgr.isRootAdmin(caller.getId()) && ApiDBUtils.isExtractionDisabled()) { - logger.error("Extraction is disabled through [{}].", Config.DisableExtraction); + logger.error("Extraction is disabled through [{}].", SecondaryStorageVmManager.DisableExtraction); throw new PermissionDeniedException("Extraction could not be completed."); } diff --git a/server/src/main/java/com/cloud/template/TemplateAdapterBase.java b/server/src/main/java/com/cloud/template/TemplateAdapterBase.java index 1aa3bedbdf0a..a98378d0d9f2 100644 --- a/server/src/main/java/com/cloud/template/TemplateAdapterBase.java +++ b/server/src/main/java/com/cloud/template/TemplateAdapterBase.java @@ -83,6 +83,7 @@ import com.cloud.storage.dao.GuestOSHypervisorDao; import com.cloud.storage.dao.VMTemplateDao; import com.cloud.storage.dao.VMTemplateZoneDao; +import com.cloud.storage.secondary.SecondaryStorageVmManager; import com.cloud.storage.upload.params.IsoUploadParams; import com.cloud.storage.upload.params.TemplateUploadParams; import com.cloud.storage.upload.params.UploadParams; @@ -238,7 +239,7 @@ protected void postUploadAllocation(List imageStores, VMTemplateVO te template.getUniqueName(), template.getFormat().toString(), templateOnStore.getDataStore().getUri(), templateOnStore.getDataStore().getRole().toString(), zoneId_is); //using the existing max template size configuration - payload.setMaxUploadSize(_configDao.getValue(Config.MaxTemplateAndIsoSize.key())); + payload.setMaxUploadSize(String.valueOf(SecondaryStorageVmManager.MaxTemplateAndIsoSize.value())); Long accountId = template.getAccountId(); Account account = _accountDao.findById(accountId); diff --git a/server/src/main/java/com/cloud/template/TemplateManagerImpl.java b/server/src/main/java/com/cloud/template/TemplateManagerImpl.java index 570172e93c19..d217c3842700 100755 --- a/server/src/main/java/com/cloud/template/TemplateManagerImpl.java +++ b/server/src/main/java/com/cloud/template/TemplateManagerImpl.java @@ -127,7 +127,6 @@ import com.cloud.api.ApiDBUtils; import com.cloud.api.query.dao.UserVmJoinDao; import com.cloud.api.query.vo.UserVmJoinVO; -import com.cloud.configuration.Config; import com.cloud.configuration.Resource.ResourceType; import com.cloud.cpu.CPU; import com.cloud.dc.DataCenter; @@ -190,6 +189,7 @@ import com.cloud.storage.dao.VMTemplatePoolDao; import com.cloud.storage.dao.VMTemplateZoneDao; import com.cloud.storage.dao.VolumeDao; +import com.cloud.storage.secondary.SecondaryStorageVmManager; import com.cloud.storage.snapshot.SnapshotManager; import com.cloud.template.TemplateAdapter.TemplateAdapterType; import com.cloud.template.VirtualMachineTemplate.BootloaderType; @@ -464,7 +464,7 @@ private GetUploadParamsResponse registerPostUploadInternal(TemplateAdapter adapt */ TemplateOrVolumePostUploadCommand firstCommand = payload.get(0); - String ssvmUrlDomain = _configDao.getValue(Config.SecStorageSecureCopyCert.key()); + String ssvmUrlDomain = SecondaryStorageVmManager.SecStorageSecureCopyCert.value(); String protocol = VolumeApiService.UseHttpsToUpload.valueIn(firstCommand.getZoneId()) ? "https" : "http"; String url = ImageStoreUtil.generatePostUploadUrl(ssvmUrlDomain, firstCommand.getRemoteEndPoint(), firstCommand.getEntityUUID(), protocol); diff --git a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java index bd9c3b9fcb82..45b79b8e9d98 100644 --- a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java +++ b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java @@ -9881,7 +9881,7 @@ private void destroyVolumeInContext(UserVmVO vm, boolean expunge, VolumeVO volum } private String getInternalName(long accountId, long vmId) { - String instanceSuffix = _configDao.getValue(Config.InstanceName.key()); + String instanceSuffix = AgentManager.InstanceName.value(); if (instanceSuffix == null) { instanceSuffix = "DEFAULT"; } diff --git a/server/src/test/java/com/cloud/configuration/ConfigurationManagerImplTest.java b/server/src/test/java/com/cloud/configuration/ConfigurationManagerImplTest.java index 360e9ef10771..05485e8db6ef 100644 --- a/server/src/test/java/com/cloud/configuration/ConfigurationManagerImplTest.java +++ b/server/src/test/java/com/cloud/configuration/ConfigurationManagerImplTest.java @@ -863,7 +863,7 @@ public void validateValueRangeTestReturnsNotNullWhenConfigKeyHasRangeAndValueIsI @Test public void validateValueRangeTestValidatesValueWhenConfigHasRange() { - Config config = Config.SecStorageEncryptCopy; + Config config = Config.DirectNetworkNoDefaultRoute; String name = config.name(); String value = "value"; String expectedResult = "expectedResult"; @@ -877,14 +877,16 @@ public void validateValueRangeTestValidatesValueWhenConfigHasRange() { @Test public void validateValueRangeTestValidatesIntValueWhenConfigHasNumericRange() { - Config config = Config.RouterExtraPublicNics; - String name = config.name(); + Config config = Mockito.mock(Config.class); + String range = "0-5"; + Mockito.doReturn(range).when(config).getRange(); + String name = "some.numeric.range.config"; String value = "1"; String expectedResult = "expectedResult"; - Mockito.doReturn(expectedResult).when(configurationManagerImplSpy).validateIfIntValueIsInRange(name, value, config.getRange()); + Mockito.doReturn(expectedResult).when(configurationManagerImplSpy).validateIfIntValueIsInRange(name, value, range); - String result = configurationManagerImplSpy.validateValueRange(name, value, config.getType(), config); + String result = configurationManagerImplSpy.validateValueRange(name, value, Integer.class, config); Assert.assertEquals(expectedResult, result); } diff --git a/server/src/test/java/com/cloud/resource/DiscovererBaseTest.java b/server/src/test/java/com/cloud/resource/DiscovererBaseTest.java new file mode 100644 index 000000000000..d5433f998fc5 --- /dev/null +++ b/server/src/test/java/com/cloud/resource/DiscovererBaseTest.java @@ -0,0 +1,78 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +package com.cloud.resource; + +import static org.junit.Assert.assertEquals; + +import java.lang.reflect.Field; +import java.util.HashMap; +import java.util.Map; + +import org.apache.cloudstack.framework.config.ConfigKey; +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mockito; +import org.springframework.test.util.ReflectionTestUtils; + +import com.cloud.agent.AgentManager; +import com.cloud.host.HostVO; +import com.cloud.server.ManagementServer; +import com.cloud.storage.secondary.SecondaryStorageVmManager; + +public class DiscovererBaseTest { + + private DiscovererBase discoverer; + private HostVO host; + + @Before + public void setUp() { + discoverer = Mockito.mock(DiscovererBase.class, Mockito.CALLS_REAL_METHODS); + host = Mockito.mock(HostVO.class); + Mockito.when(host.getDetails()).thenReturn(new HashMap<>()); + Mockito.when(host.getGuid()).thenReturn("host-guid"); + Mockito.when(host.getDataCenterId()).thenReturn(1L); + Mockito.when(host.getPodId()).thenReturn(null); + Mockito.when(host.getClusterId()).thenReturn(null); + Mockito.when(host.getPrivateIpAddress()).thenReturn("10.0.0.5"); + } + + private void overrideDefaultConfigValue(ConfigKey configKey, String value) throws NoSuchFieldException, IllegalAccessException { + Field f = ConfigKey.class.getDeclaredField("_defaultValue"); + f.setAccessible(true); + f.set(configKey, value); + } + + @SuppressWarnings("unchecked") + @Test + public void buildConfigParamsPassesThroughTheConfiguredConfigKeyValues() throws Exception { + overrideDefaultConfigValue(AgentManager.MigrateWait, "1000"); + overrideDefaultConfigValue(AgentManager.XenServerMaxNics, "8"); + overrideDefaultConfigValue(ManagementServer.XenServerHeartBeatInterval, "45"); + overrideDefaultConfigValue(ManagementServer.XenServerHeartBeatTimeout, "90"); + overrideDefaultConfigValue(ManagementServer.RouterAggregationCommandEachTimeout, "300"); + overrideDefaultConfigValue(SecondaryStorageVmManager.MaxTemplateAndIsoSize, "4096"); + + Map params = (Map) ReflectionTestUtils.invokeMethod(discoverer, "buildConfigParams", host); + + assertEquals("1000", params.get("migratewait")); + assertEquals("8", params.get(AgentManager.XenServerMaxNics.toString().toLowerCase())); + assertEquals("45", params.get(ManagementServer.XenServerHeartBeatInterval.key().toLowerCase())); + assertEquals("90", params.get(ManagementServer.XenServerHeartBeatTimeout.key().toLowerCase())); + assertEquals("300", params.get("router.aggregation.command.each.timeout")); + assertEquals("4096", params.get("max.template.iso.size")); + } +} diff --git a/server/src/test/java/com/cloud/server/ConfigurationServerImplTest.java b/server/src/test/java/com/cloud/server/ConfigurationServerImplTest.java index fd1cb6a6313e..23c55cb21263 100644 --- a/server/src/test/java/com/cloud/server/ConfigurationServerImplTest.java +++ b/server/src/test/java/com/cloud/server/ConfigurationServerImplTest.java @@ -31,6 +31,8 @@ import com.cloud.utils.db.TransactionLegacy; import org.apache.cloudstack.framework.config.ConfigDepot; import org.apache.cloudstack.framework.config.ConfigDepotAdmin; +import org.apache.cloudstack.framework.config.ConfigKey; +import org.apache.cloudstack.framework.config.impl.ConfigDepotImpl; import org.apache.cloudstack.framework.config.dao.ConfigurationDao; import org.junit.Assert; import org.junit.Test; @@ -110,16 +112,22 @@ public void testUpdateSystemvmPassword() { //setup String realusername = System.getProperty("user.name"); System.setProperty("user.name", "cloud"); - Mockito.when(_configDao.getValue("system.vm.random.password")).thenReturn(String.valueOf(true)); + ConfigDepotImpl configDepot = Mockito.mock(ConfigDepotImpl.class); + Mockito.when(configDepot.getConfigStringValue("system.vm.random.password", ConfigKey.Scope.Global, null)).thenReturn(String.valueOf(true)); + ConfigKey.init(configDepot); TransactionLegacy.open("cloud"); Mockito.when(_mgrService.generateRandomPassword()).thenReturn("randomPassword"); - //call the method to test - configurationServer.updateSystemvmPassword(); + try { + //call the method to test + configurationServer.updateSystemvmPassword(); - //verify that generateRandomPassword() is called - Mockito.verify(_mgrService, Mockito.times(1)).generateRandomPassword(); - //teardown - System.setProperty("user.name", realusername); + //verify that generateRandomPassword() is called + Mockito.verify(_mgrService, Mockito.times(1)).generateRandomPassword(); + } finally { + //teardown + ConfigKey.init(null); + System.setProperty("user.name", realusername); + } } } diff --git a/services/secondary-storage/controller/src/main/java/org/apache/cloudstack/secondarystorage/PremiumSecondaryStorageManagerImpl.java b/services/secondary-storage/controller/src/main/java/org/apache/cloudstack/secondarystorage/PremiumSecondaryStorageManagerImpl.java index 8c2a6bbd9a39..eacd842adabe 100644 --- a/services/secondary-storage/controller/src/main/java/org/apache/cloudstack/secondarystorage/PremiumSecondaryStorageManagerImpl.java +++ b/services/secondary-storage/controller/src/main/java/org/apache/cloudstack/secondarystorage/PremiumSecondaryStorageManagerImpl.java @@ -24,10 +24,9 @@ import javax.inject.Inject; import javax.naming.ConfigurationException; - +import com.cloud.agent.AgentManager; import com.cloud.agent.api.Command; -import com.cloud.configuration.Config; import com.cloud.consoleproxy.ConsoleProxyManager; import com.cloud.host.Host; import com.cloud.host.HostVO; @@ -39,7 +38,6 @@ import com.cloud.storage.StorageManager; import com.cloud.storage.secondary.SecondaryStorageVmManager; import com.cloud.utils.DateUtil; -import com.cloud.utils.NumbersUtil; import com.cloud.utils.Pair; import com.cloud.utils.db.Filter; import com.cloud.utils.db.JoinBuilder.JoinType; @@ -79,10 +77,10 @@ public class PremiumSecondaryStorageManagerImpl extends SecondaryStorageManagerI public boolean configure(String name, Map params) throws ConfigurationException { super.configure(name, params); - _capacityPerSSVM = NumbersUtil.parseInt(_configDao.getValue(Config.SecStorageSessionMax.key()), DEFAULT_SS_VM_CAPACITY); - _standbyCapacity = NumbersUtil.parseInt(_configDao.getValue(Config.SecStorageCapacityStandby.key()), DEFAULT_STANDBY_CAPACITY); + _capacityPerSSVM = AgentManager.SecStorageSessionMax.value(); + _standbyCapacity = AgentManager.SecStorageCapacityStandby.value(); - int nMaxExecutionMinutes = NumbersUtil.parseInt(_configDao.getValue(Config.SecStorageCmdExecutionTimeMax.key()), 30); + int nMaxExecutionMinutes = AgentManager.SecStorageCmdExecutionTimeMax.value(); _maxExecutionTimeMs = nMaxExecutionMinutes * 60 * 1000; migrateCapPerSSVM = StorageManager.SecStorageMaxMigrateSessions.value(); @@ -239,10 +237,6 @@ private List findAllActiveCopyCommands(long dcId, Date cutTime } private boolean reserveStandbyCapacity() { - String value = _configDao.getValue(Config.SystemVMAutoReserveCapacity.key()); - if (value != null && value.equalsIgnoreCase("true")) { - return true; - } - return false; + return SystemVMAutoReserveCapacity.value(); } } diff --git a/services/secondary-storage/controller/src/main/java/org/apache/cloudstack/secondarystorage/SecondaryStorageManagerImpl.java b/services/secondary-storage/controller/src/main/java/org/apache/cloudstack/secondarystorage/SecondaryStorageManagerImpl.java index c29086b8b9db..61f1ab4fe735 100644 --- a/services/secondary-storage/controller/src/main/java/org/apache/cloudstack/secondarystorage/SecondaryStorageManagerImpl.java +++ b/services/secondary-storage/controller/src/main/java/org/apache/cloudstack/secondarystorage/SecondaryStorageManagerImpl.java @@ -116,6 +116,8 @@ import com.cloud.resource.ResourceStateAdapter; import com.cloud.resource.ServerResource; import com.cloud.resource.UnableDeleteHostException; +import com.cloud.network.router.VirtualNetworkApplianceManager; +import com.cloud.server.ManagementServer; import com.cloud.service.ServiceOfferingVO; import com.cloud.service.dao.ServiceOfferingDao; import com.cloud.storage.ImageStoreDetailsUtil; @@ -276,6 +278,10 @@ public class SecondaryStorageManagerImpl extends ManagerBase implements Secondar static final ConfigKey MaxNumberOfSsvmsForMigration = new ConfigKey("Advanced", Integer.class, "max.ssvm.count", "5", "Number of additional SSVMs to handle migration of data objects concurrently", true, ConfigKey.Scope.Global); + // Registered/owned by AgentManager; declared here too so this module can read it without a reverse dependency on engine/orchestration. + static final ConfigKey Workers = new ConfigKey<>("Advanced", Integer.class, "workers", "5", + "Number of worker threads handling remote agent connections.", false); + public SecondaryStorageManagerImpl() { } @@ -378,7 +384,7 @@ public boolean generateVMSetupCommand(Long ssAHostId) { List allowedCidrs = getAllowedInternalSiteCidrs(); setupCmd.setAllowedInternalSites(allowedCidrs.toArray(new String[allowedCidrs.size()])); } - String copyPasswd = _configDao.getValue("secstorage.copy.password"); + String copyPasswd = SecondaryStorageVmManager.SecStorageCopyPassword.value(); setupCmd.setCopyPassword(copyPasswd); setupCmd.setCopyUserName(TemplateConstants.DEFAULT_HTTP_AUTH_USER); @@ -918,16 +924,16 @@ public boolean configure(String name, Map params) throws Configu Map configs = _configDao.getConfiguration("management-server", params); _secStorageVmMtuSize = NumbersUtil.parseInt(configs.get("secstorage.vm.mtu.size"), DEFAULT_SS_VM_MTUSIZE); - boolean _useServiceVM = BooleanUtils.toBoolean(_configDao.getValue("secondary.storage.vm")); - _useSSlCopy = BooleanUtils.toBoolean(_configDao.getValue("secstorage.encrypt.copy")); + boolean _useServiceVM = UseSecondaryStorageVm.value(); + _useSSlCopy = SecondaryStorageVmManager.SecStorageEncryptCopy.value(); - String ssvmUrlDomain = _configDao.getValue("secstorage.ssl.cert.domain"); + String ssvmUrlDomain = SecondaryStorageVmManager.SecStorageSecureCopyCert.value(); if(_useSSlCopy && StringUtils.isEmpty(ssvmUrlDomain)){ logger.warn("Empty secondary storage url domain, explicitly disabling SSL"); _useSSlCopy = false; } - _allowedInternalSites = _configDao.getValue("secstorage.allowed.internal.sites"); + _allowedInternalSites = SecondaryStorageVmManager.SecStorageAllowedInternalDownloadSites.value(); _instance = configs.get("instance.name"); if (_instance == null) { _instance = "DEFAULT"; @@ -943,7 +949,7 @@ public boolean configure(String name, Map params) throws Configu _itMgr.registerGuru(VirtualMachine.Type.SecondaryStorageVm, this); - String configKey = Config.SecondaryStorageServiceOffering.key(); + String configKey = SecondaryStorageServiceOffering.key(); String ssvmSrvcOffIdStr = configs.get(configKey); if (ssvmSrvcOffIdStr != null) { _serviceOffering = _offeringDao.findByUuid(ssvmSrvcOffIdStr); @@ -962,8 +968,8 @@ public boolean configure(String name, Map params) throws Configu } if (_serviceOffering == null || !_serviceOffering.isSystemUse()) { - int ramSize = NumbersUtil.parseInt(_configDao.getValue("ssvm.ram.size"), DEFAULT_SS_VM_RAMSIZE); - int cpuFreq = NumbersUtil.parseInt(_configDao.getValue("ssvm.cpu.mhz"), DEFAULT_SS_VM_CPUMHZ); + int ramSize = SecStorageVmRamSize.value(); + int cpuFreq = SecStorageVmCpuMhz.value(); List offerings = _offeringDao.createSystemServiceOfferings("System Offering For Secondary Storage VM", ServiceOffering.ssvmDefaultOffUniqueName, 1, ramSize, cpuFreq, null, null, false, null, Storage.ProvisioningType.THIN, true, null, true, VirtualMachine.Type.SecondaryStorageVm, true); @@ -980,7 +986,7 @@ public boolean configure(String name, Map params) throws Configu _loadScanner.initScan(STARTUP_DELAY_IN_MILLISECONDS, SecondaryStorageCapacityScanInterval.value()); } - _httpProxy = configs.get(Config.SecStorageProxy.key()); + _httpProxy = configs.get(AgentManager.SecStorageProxy.key()); if (_httpProxy != null) { boolean valid = true; String errMsg = null; @@ -1155,8 +1161,8 @@ public boolean finalizeVirtualMachineProfile(VirtualMachineProfile profile, Depl buf.append(" guid=").append(vmName); - buf.append(" workers=").append(_configDao.getValue("workers")); - String msPublicKey = _configDao.getValue("ssh.publickey"); + buf.append(" workers=").append(Workers.value()); + String msPublicKey = ManagementServer.SshPublicKey.value(); buf.append(" authorized_key=").append(VirtualMachineGuru.getEncodedMsPublicKey(msPublicKey)); if (_configDao.isPremium()) { @@ -1170,14 +1176,10 @@ public boolean finalizeVirtualMachineProfile(VirtualMachineProfile profile, Depl buf.append(" role=").append(vm.getRole().toString()); buf.append(" mtu=").append(_secStorageVmMtuSize); - boolean externalDhcp = false; - String externalDhcpStr = _configDao.getValue("direct.attach.network.externalIpAllocator.enabled"); - if (externalDhcpStr != null && externalDhcpStr.equalsIgnoreCase("true")) { - externalDhcp = true; - } + boolean externalDhcp = VirtualNetworkApplianceManager.DirectAttachNetworkEnabled.value(); - if (Boolean.valueOf(_configDao.getValue("system.vm.random.password"))) { - buf.append(" vmpassword=").append(_configDao.getValue("system.vm.password")); + if (SecondaryStorageVmManager.SystemVMRandomPassword.value()) { + buf.append(" vmpassword=").append(ManagementServer.SystemVMPassword.value()); } if (StringUtils.isNotEmpty(NTPServerConfig.value())) { diff --git a/services/secondary-storage/server/src/main/java/org/apache/cloudstack/storage/resource/SecondaryStorageDiscoverer.java b/services/secondary-storage/server/src/main/java/org/apache/cloudstack/storage/resource/SecondaryStorageDiscoverer.java index 5b328c33c865..0ed1e8b20b00 100644 --- a/services/secondary-storage/server/src/main/java/org/apache/cloudstack/storage/resource/SecondaryStorageDiscoverer.java +++ b/services/secondary-storage/server/src/main/java/org/apache/cloudstack/storage/resource/SecondaryStorageDiscoverer.java @@ -29,7 +29,6 @@ import javax.inject.Inject; import javax.naming.ConfigurationException; - import com.cloud.agent.AgentManager; import com.cloud.host.HostVO; import com.cloud.host.Status.Event; @@ -40,6 +39,7 @@ import com.cloud.storage.VMTemplateVO; import com.cloud.storage.VMTemplateZoneVO; import com.cloud.storage.dao.VMTemplateDao; +import com.cloud.storage.secondary.SecondaryStorageVmManager; import com.cloud.storage.dao.VMTemplateZoneDao; import com.cloud.storage.resource.DummySecondaryStorageResource; import com.cloud.utils.component.ComponentContext; @@ -174,7 +174,7 @@ protected Map> createNfsSecondaryS } params.put("guid", uri.toString()); params.put("secondary.storage.vm", "false"); - params.put("max.template.iso.size", _configDao.getValue("max.template.iso.size")); + params.put("max.template.iso.size", String.valueOf(SecondaryStorageVmManager.MaxTemplateAndIsoSize.value())); try { storage.configure("Storage", params);