You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by da...@apache.org on 2026/10/22 09:39:28 UTC

(cloudstack) branch ghi10752-config-core-5 created (now 49c350ed6d3)

This is an automated email from the ASF dual-hosted git repository.

DaanHoogland pushed a change to branch ghi10752-config-core-5
in repository https://gitbox.apache.org/repos/asf/cloudstack.git


      at 49c350ed6d3 use ConfigKeys for assorted management server, VMware, XenServer and baremetal settings

This branch includes the following new commits:

     new 49c350ed6d3 use ConfigKeys for assorted management server, VMware, XenServer and baremetal settings

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



(cloudstack) 01/01: use ConfigKeys for assorted management server, VMware, XenServer and baremetal settings

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

DaanHoogland pushed a commit to branch ghi10752-config-core-5
in repository https://gitbox.apache.org/repos/asf/cloudstack.git

commit 49c350ed6d31da6a782d327950446d818ce2c618
Author: Daan Hoogland <da...@apache.org>
AuthorDate: Thu Oct 22 11:35:48 2026 +0200

    use ConfigKeys for assorted management server, VMware, XenServer and baremetal settings
    
    Part of the split of #13884 (phase out the Config enum, #10752).
    
    Co-Authored-By: Claude Opus 5.5 <no...@anthropic.com>
---
 .../java/com/cloud/host/dao/HostTagsDaoImpl.java   | 11 ++++---
 .../cloud/storage/dao/StoragePoolTagsDaoImpl.java  | 16 ++++------
 .../storage/datastore/db/ObjectStoreDaoImpl.java   | 14 ++++-----
 .../storage/dao/StoragePoolTagsDaoImplTest.java    | 18 +++++++----
 .../cloudstack/ca/provider/RootCAProvider.java     |  4 +--
 .../baremetal/manager/BareMetalDiscoverer.java     |  8 ++---
 .../networkservice/BareMetalResourceBase.java      | 10 +++----
 .../BaremetalKickStartServiceImpl.java             |  4 +--
 .../hyperv/discoverer/HypervServerDiscoverer.java  |  5 ++--
 .../hypervisor/vmware/VmwareServerDiscoverer.java  | 11 +++----
 .../vmware/manager/VmwareManagerImpl.java          | 35 +++++++---------------
 .../network/element/CiscoNexusVSMElement.java      |  4 +--
 .../xenserver/discoverer/XcpServerDiscoverer.java  | 18 +++++------
 .../network/lb/ElasticLoadBalancerManagerImpl.java |  9 +++---
 .../lb/InternalLoadBalancerVMManagerImpl.java      |  7 ++---
 .../datastore/driver/S3ImageStoreDriverImpl.java   |  6 ++--
 server/src/main/java/com/cloud/api/ApiDBUtils.java |  3 +-
 .../cloud/api/query/dao/AccountJoinDaoImpl.java    |  7 ++---
 .../api/query/dao/AffinityGroupJoinDaoImpl.java    |  7 ++---
 .../api/query/dao/DiskOfferingJoinDaoImpl.java     |  7 ++---
 .../com/cloud/api/query/dao/DomainJoinDaoImpl.java |  7 ++---
 .../api/query/dao/DomainRouterJoinDaoImpl.java     |  7 ++---
 .../com/cloud/api/query/dao/HostJoinDaoImpl.java   |  7 ++---
 .../cloud/api/query/dao/ImageStoreJoinDaoImpl.java |  7 ++---
 .../cloud/api/query/dao/ProjectJoinDaoImpl.java    |  8 ++---
 .../api/query/dao/ResourceTagJoinDaoImpl.java      |  7 ++---
 .../api/query/dao/SecurityGroupJoinDaoImpl.java    |  7 ++---
 .../api/query/dao/ServiceOfferingJoinDaoImpl.java  |  7 ++---
 .../cloud/api/query/dao/SnapshotJoinDaoImpl.java   |  7 ++---
 .../api/query/dao/StoragePoolJoinDaoImpl.java      |  7 ++---
 .../com/cloud/api/query/dao/UserVmJoinDaoImpl.java |  7 ++---
 .../com/cloud/api/query/dao/VolumeJoinDaoImpl.java |  7 ++---
 .../configuration/ConfigurationManagerImpl.java    | 10 +++----
 .../consoleproxy/ConsoleProxyManagerImpl.java      |  3 +-
 .../kvm/discoverer/LibvirtServerDiscoverer.java    |  5 ++--
 .../com/cloud/network/guru/ControlNetworkGuru.java |  6 ++--
 .../cloud/network/router/CommandSetupHelper.java   |  7 ++---
 .../router/VirtualNetworkApplianceManagerImpl.java |  7 ++---
 .../com/cloud/resource/ResourceManagerImpl.java    |  6 ++--
 .../com/cloud/server/ConfigurationServerImpl.java  | 13 ++++----
 .../com/cloud/server/ManagementServerImpl.java     |  7 ++---
 .../com/cloud/template/TemplateAdapterBase.java    |  4 +--
 .../java/com/cloud/user/AccountManagerImpl.java    |  4 +--
 .../main/java/com/cloud/vm/UserVmManagerImpl.java  |  7 ++---
 .../gslb/GlobalLoadBalancingRulesServiceImpl.java  |  6 ++--
 .../configuration/ConfigurationManagerTest.java    |  3 +-
 .../SecondaryStorageManagerImpl.java               |  3 +-
 47 files changed, 152 insertions(+), 228 deletions(-)

diff --git a/engine/schema/src/main/java/com/cloud/host/dao/HostTagsDaoImpl.java b/engine/schema/src/main/java/com/cloud/host/dao/HostTagsDaoImpl.java
index 0e554987a06..3c9a2e874b0 100644
--- a/engine/schema/src/main/java/com/cloud/host/dao/HostTagsDaoImpl.java
+++ b/engine/schema/src/main/java/com/cloud/host/dao/HostTagsDaoImpl.java
@@ -22,7 +22,6 @@ import java.util.List;
 import org.apache.cloudstack.api.response.HostTagResponse;
 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.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Component;
@@ -46,8 +45,10 @@ public class HostTagsDaoImpl extends GenericDaoBase<HostTagVO, Long> implements
     private final SearchBuilder<HostTagVO> ImplicitTagsSearch;
     private final GenericSearchBuilder<HostTagVO, String> tagSearch;
 
-    @Inject
-    private ConfigurationDao _configDao;
+    // Registered/owned by ManagementServer; declared here too so this lower-layer module can read it without depending on the server module.
+    private static final ConfigKey<Integer> DetailBatchQuerySize = new ConfigKey<>("Advanced", Integer.class, "detail.batch.query.size", "2000",
+            "Default entity detail batch query size for listing", true);
+
     @Inject
     private HostDao hostDao;
 
@@ -191,9 +192,7 @@ public class HostTagsDaoImpl extends GenericDaoBase<HostTagVO, Long> implements
 
     @Override
     public List<HostTagVO> searchByIds(Long... tagIds) {
-        String batchCfg = _configDao.getValue("detail.batch.query.size");
-
-        final int detailsBatchSize = batchCfg != null ? Integer.parseInt(batchCfg) : 2000;
+        final int detailsBatchSize = DetailBatchQuerySize.value();
 
         // query details by batches
         List<HostTagVO> tagList = new ArrayList<>();
diff --git a/engine/schema/src/main/java/com/cloud/storage/dao/StoragePoolTagsDaoImpl.java b/engine/schema/src/main/java/com/cloud/storage/dao/StoragePoolTagsDaoImpl.java
index c4d7ed88607..bc0309365e9 100755
--- a/engine/schema/src/main/java/com/cloud/storage/dao/StoragePoolTagsDaoImpl.java
+++ b/engine/schema/src/main/java/com/cloud/storage/dao/StoragePoolTagsDaoImpl.java
@@ -20,10 +20,8 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
 
-import javax.inject.Inject;
-
 import org.apache.cloudstack.api.response.StorageTagResponse;
-import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
+import org.apache.cloudstack.framework.config.ConfigKey;
 
 import com.cloud.storage.StoragePoolTagVO;
 import com.cloud.utils.db.GenericDaoBase;
@@ -36,14 +34,13 @@ import com.cloud.utils.db.TransactionStatus;
 
 public class StoragePoolTagsDaoImpl extends GenericDaoBase<StoragePoolTagVO, Long> implements StoragePoolTagsDao {
 
-    @Inject
-    private ConfigurationDao _configDao;
+    // Registered/owned by ManagementServer; declared here too so this lower-layer module can read it without depending on the server module.
+    private static final ConfigKey<Integer> DetailBatchQuerySize = new ConfigKey<>("Advanced", Integer.class, "detail.batch.query.size", "2000",
+            "Default entity detail batch query size for listing", true);
 
     protected final SearchBuilder<StoragePoolTagVO> StoragePoolSearch;
     private final SearchBuilder<StoragePoolTagVO> StoragePoolIdsSearch;
 
-    private static final int DEFAULT_BATCH_QUERY_SIZE = 2000;
-
     public StoragePoolTagsDaoImpl() {
         StoragePoolSearch = createSearchBuilder();
         StoragePoolSearch.and("poolId", StoragePoolSearch.entity().getPoolId(), SearchCriteria.Op.EQ);
@@ -151,12 +148,11 @@ public class StoragePoolTagsDaoImpl extends GenericDaoBase<StoragePoolTagVO, Lon
     }
 
     /**
-     * Retrieve {@code detail.batch.query.size} configuration value. If not available, return default value {@link StoragePoolTagsDaoImpl#DEFAULT_BATCH_QUERY_SIZE}
+     * Retrieve {@code detail.batch.query.size} configuration value.
      * @return detail.batch.query.size configuration value
      */
     protected int getDetailsBatchSize() {
-        String batchCfg = _configDao.getValue("detail.batch.query.size");
-        return batchCfg != null ? Integer.parseInt(batchCfg) : DEFAULT_BATCH_QUERY_SIZE;
+        return DetailBatchQuerySize.value();
     }
 
     @Override
diff --git a/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/ObjectStoreDaoImpl.java b/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/ObjectStoreDaoImpl.java
index 891ac0996ac..de90c735d9e 100644
--- a/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/ObjectStoreDaoImpl.java
+++ b/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/ObjectStoreDaoImpl.java
@@ -26,10 +26,9 @@ import com.cloud.utils.db.TransactionCallback;
 import com.cloud.utils.db.TransactionStatus;
 
 import org.apache.cloudstack.api.response.ObjectStoreResponse;
-import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
+import org.apache.cloudstack.framework.config.ConfigKey;
 import org.springframework.stereotype.Component;
 
-import javax.inject.Inject;
 import javax.naming.ConfigurationException;
 import java.util.ArrayList;
 import java.util.List;
@@ -37,10 +36,11 @@ import java.util.Map;
 
 @Component
 public class ObjectStoreDaoImpl extends GenericDaoBase<ObjectStoreVO, Long> implements ObjectStoreDao {
+    // Registered/owned by ManagementServer; declared here too so this lower-layer module can read it without depending on the server module.
+    private static final ConfigKey<Integer> DetailBatchQuerySize = new ConfigKey<>("Advanced", Integer.class, "detail.batch.query.size", "2000",
+            "Default entity detail batch query size for listing", true);
     private SearchBuilder<ObjectStoreVO> nameSearch;
     private SearchBuilder<ObjectStoreVO> providerSearch;
-    @Inject
-    private ConfigurationDao _configDao;
     private final SearchBuilder<ObjectStoreVO> osSearch;
 
     private SearchBuilder<ObjectStoreVO> urlSearch;
@@ -100,11 +100,7 @@ public class ObjectStoreDaoImpl extends GenericDaoBase<ObjectStoreVO, Long> impl
     @Override
     public List<ObjectStoreVO> searchByIds(Long[] osIds) {
         // set detail batch query size
-        int DETAILS_BATCH_SIZE = 2000;
-        String batchCfg = _configDao.getValue("detail.batch.query.size");
-        if (batchCfg != null) {
-            DETAILS_BATCH_SIZE = Integer.parseInt(batchCfg);
-        }
+        int DETAILS_BATCH_SIZE = DetailBatchQuerySize.value();
         // query details by batches
         List<ObjectStoreVO> osList = new ArrayList<>();
         // query details by batches
diff --git a/engine/schema/src/test/java/com/cloud/storage/dao/StoragePoolTagsDaoImplTest.java b/engine/schema/src/test/java/com/cloud/storage/dao/StoragePoolTagsDaoImplTest.java
index 85fe0e09542..3b77e610300 100755
--- a/engine/schema/src/test/java/com/cloud/storage/dao/StoragePoolTagsDaoImplTest.java
+++ b/engine/schema/src/test/java/com/cloud/storage/dao/StoragePoolTagsDaoImplTest.java
@@ -16,7 +16,9 @@
 // under the License.
 package com.cloud.storage.dao;
 
-import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
+import org.apache.cloudstack.framework.config.ConfigKey;
+import org.apache.cloudstack.framework.config.impl.ConfigDepotImpl;
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -47,7 +49,7 @@ import junit.framework.TestCase;
 public class StoragePoolTagsDaoImplTest extends TestCase {
 
     @Mock
-    ConfigurationDao _configDao;
+    ConfigDepotImpl configDepot;
     @Mock
     SearchBuilder<StoragePoolTagVO> StoragePoolIdsSearch;
 
@@ -70,11 +72,17 @@ public class StoragePoolTagsDaoImplTest extends TestCase {
 
     @Before
     public void setup() {
-        when(_configDao.getValue(batchSizeConfigurationKey)).thenReturn(batchSizeValue);
+        ConfigKey.init(configDepot);
+        when(configDepot.getConfigStringValue(batchSizeConfigurationKey, ConfigKey.Scope.Global, null)).thenReturn(batchSizeValue);
         doReturn(storagePoolTagList).when(_storagePoolTagsDaoImpl).searchIncludingRemoved(
                 ArgumentMatchers.any(SearchCriteria.class), ArgumentMatchers.isNull(Filter.class), ArgumentMatchers.isNull(Boolean.class), ArgumentMatchers.eq(false));
     }
 
+    @After
+    public void tearDown() {
+        ConfigKey.init(null);
+    }
+
     @Test
     public void testGetDetailsBatchSizeNotNull() {
         assertEquals(Integer.parseInt(batchSizeValue), _storagePoolTagsDaoImpl.getDetailsBatchSize());
@@ -82,7 +90,7 @@ public class StoragePoolTagsDaoImplTest extends TestCase {
 
     @Test
     public void testGetDetailsBatchSizeNull() {
-        when(_configDao.getValue(batchSizeConfigurationKey)).thenReturn(null);
+        when(configDepot.getConfigStringValue(batchSizeConfigurationKey, ConfigKey.Scope.Global, null)).thenReturn(null);
         assertEquals(Integer.parseInt(batchSizeDefaultValue), _storagePoolTagsDaoImpl.getDetailsBatchSize());
     }
 
@@ -108,7 +116,7 @@ public class StoragePoolTagsDaoImplTest extends TestCase {
 
     @Test
     public void testSearchByIdsStorageTagsIdsGreaterOrEqualThanBatchSize() {
-        when(_configDao.getValue(batchSizeConfigurationKey)).thenReturn(batchSizeLow);
+        when(configDepot.getConfigStringValue(batchSizeConfigurationKey, ConfigKey.Scope.Global, null)).thenReturn(batchSizeLow);
         doNothing().when(_storagePoolTagsDaoImpl).searchForStoragePoolIdsInternal(ArgumentMatchers.anyInt(), ArgumentMatchers.anyInt(), ArgumentMatchers.any(Long[].class), ArgumentMatchers.anyList());
         _storagePoolTagsDaoImpl.searchByIds(storageTagsIds);
 
diff --git a/plugins/ca/root-ca/src/main/java/org/apache/cloudstack/ca/provider/RootCAProvider.java b/plugins/ca/root-ca/src/main/java/org/apache/cloudstack/ca/provider/RootCAProvider.java
index afb4f561160..798d6ea8c15 100644
--- a/plugins/ca/root-ca/src/main/java/org/apache/cloudstack/ca/provider/RootCAProvider.java
+++ b/plugins/ca/root-ca/src/main/java/org/apache/cloudstack/ca/provider/RootCAProvider.java
@@ -78,7 +78,7 @@ import org.bouncycastle.util.io.pem.PemObject;
 import org.bouncycastle.util.io.pem.PemReader;
 
 import com.cloud.certificate.dao.CrlDao;
-import com.cloud.configuration.Config;
+import com.cloud.server.ManagementServer;
 import com.cloud.utils.component.AdapterBase;
 import com.cloud.utils.db.GlobalLock;
 import com.cloud.utils.exception.CloudRuntimeException;
@@ -439,7 +439,7 @@ public final class RootCAProvider extends AdapterBase implements CAProvider, Con
     }
 
     protected void addConfiguredManagementIp(List<String> ipList) {
-        String msNetworkCidr = configDao.getValue(Config.ManagementNetwork.key());
+        String msNetworkCidr = ManagementServer.ManagementNetwork.value();
         try {
             logger.debug(String.format("Trying to find management IP in CIDR range [%s].", msNetworkCidr));
             Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
diff --git a/plugins/hypervisors/baremetal/src/main/java/com/cloud/baremetal/manager/BareMetalDiscoverer.java b/plugins/hypervisors/baremetal/src/main/java/com/cloud/baremetal/manager/BareMetalDiscoverer.java
index f12d701d2e2..55ad3568f5f 100644
--- a/plugins/hypervisors/baremetal/src/main/java/com/cloud/baremetal/manager/BareMetalDiscoverer.java
+++ b/plugins/hypervisors/baremetal/src/main/java/com/cloud/baremetal/manager/BareMetalDiscoverer.java
@@ -37,7 +37,6 @@ import org.apache.cloudstack.api.ApiConstants;
 import com.cloud.agent.api.StartupCommand;
 import com.cloud.agent.api.StartupRoutingCommand;
 import com.cloud.baremetal.networkservice.BareMetalResourceBase;
-import com.cloud.configuration.Config;
 import com.cloud.dc.ClusterVO;
 import com.cloud.dc.DataCenterVO;
 import com.cloud.exception.DiscoveryException;
@@ -51,6 +50,7 @@ import com.cloud.resource.DiscovererBase;
 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.exception.CloudRuntimeException;
 import com.cloud.utils.script.Script;
@@ -160,12 +160,12 @@ public class BareMetalDiscoverer extends DiscovererBase implements Discoverer, R
             params.put("vmDao", _vmDao);
             params.put("configDao", _configDao);
 
-            String resourceClassName = _configDao.getValue(Config.ExternalBaremetalResourceClassName.key());
+            String resourceClassName = BaremetalManager.ExternalBaremetalResourceClassName.value();
             BareMetalResourceBase resource = null;
             if (resourceClassName != null) {
                 Class<?> clazz = Class.forName(resourceClassName);
                 resource = (BareMetalResourceBase) clazz.newInstance();
-                String externalUrl = _configDao.getValue(Config.ExternalBaremetalSystemUrl.key());
+                String externalUrl = ManagementServer.ExternalBaremetalSystemUrl.value();
                 if (externalUrl == null) {
                     throw new IllegalArgumentException(String.format("You must specify ExternalBaremetalSystemUrl in global config page as ExternalBaremetalResourceClassName is not null"));
                 }
@@ -193,7 +193,7 @@ public class BareMetalDiscoverer extends DiscovererBase implements Discoverer, R
             if (vmIp != null) {
                 details.put(ApiConstants.IP_ADDRESS, vmIp);
             }
-            String isEchoScAgent = _configDao.getValue(Config.EnableBaremetalSecurityGroupAgentEcho.key());
+            String isEchoScAgent = String.valueOf(BaremetalManager.EnableBaremetalSecurityGroupAgentEcho.value());
             details.put(BaremetalManager.EchoSecurityGroupAgent, isEchoScAgent);
 
             resources.put(resource, details);
diff --git a/plugins/hypervisors/baremetal/src/main/java/com/cloud/baremetal/networkservice/BareMetalResourceBase.java b/plugins/hypervisors/baremetal/src/main/java/com/cloud/baremetal/networkservice/BareMetalResourceBase.java
index 007640e8aad..f4df8cabefc 100644
--- a/plugins/hypervisors/baremetal/src/main/java/com/cloud/baremetal/networkservice/BareMetalResourceBase.java
+++ b/plugins/hypervisors/baremetal/src/main/java/com/cloud/baremetal/networkservice/BareMetalResourceBase.java
@@ -64,10 +64,10 @@ import com.cloud.agent.api.baremetal.IpmISetBootDevCommand.BootDev;
 import com.cloud.agent.api.baremetal.IpmiBootorResetCommand;
 import com.cloud.agent.api.to.VirtualMachineTO;
 import com.cloud.baremetal.manager.BaremetalManager;
-import com.cloud.configuration.Config;
 import com.cloud.host.Host.Type;
 import com.cloud.hypervisor.Hypervisor;
 import com.cloud.resource.ServerResource;
+import com.cloud.server.ManagementServer;
 import com.cloud.utils.component.ManagerBase;
 import com.cloud.utils.db.QueryBuilder;
 import com.cloud.utils.db.SearchCriteria;
@@ -172,20 +172,20 @@ public class BareMetalResourceBase extends ManagerBase implements ServerResource
 
         String ipmiIface = "default";
         try {
-            ipmiIface = configDao.getValue(Config.BaremetalIpmiLanInterface.key());
+            ipmiIface = BaremetalManager.BaremetalIpmiLanInterface.value();
         } catch (Exception e) {
             logger.debug(e.getMessage(), e);
         }
 
         try {
-            ipmiRetryTimes = Integer.parseInt(configDao.getValue(Config.BaremetalIpmiRetryTimes.key()));
+            ipmiRetryTimes = BaremetalManager.BaremetalIpmiRetryTimes.value();
         } catch (Exception e) {
             logger.debug(e.getMessage(), e);
         }
 
         try {
-            provisionDoneNotificationOn = Boolean.valueOf(configDao.getValue(Config.BaremetalProvisionDoneNotificationEnabled.key()));
-            isProvisionDoneNotificationTimeout = Integer.parseInt(configDao.getValue(Config.BaremetalProvisionDoneNotificationTimeout.key()));
+            provisionDoneNotificationOn = ManagementServer.BaremetalProvisionDoneNotificationEnabled.value();
+            isProvisionDoneNotificationTimeout = BaremetalManager.BaremetalProvisionDoneNotificationTimeout.value();
         } catch (Exception e) {
             logger.debug(e.getMessage(), e);
         }
diff --git a/plugins/hypervisors/baremetal/src/main/java/com/cloud/baremetal/networkservice/BaremetalKickStartServiceImpl.java b/plugins/hypervisors/baremetal/src/main/java/com/cloud/baremetal/networkservice/BaremetalKickStartServiceImpl.java
index 6e1f422526d..3c170ac77a4 100644
--- a/plugins/hypervisors/baremetal/src/main/java/com/cloud/baremetal/networkservice/BaremetalKickStartServiceImpl.java
+++ b/plugins/hypervisors/baremetal/src/main/java/com/cloud/baremetal/networkservice/BaremetalKickStartServiceImpl.java
@@ -39,8 +39,8 @@ import com.cloud.agent.api.baremetal.IpmISetBootDevCommand;
 import com.cloud.agent.api.baremetal.IpmISetBootDevCommand.BootDev;
 import com.cloud.baremetal.database.BaremetalPxeDao;
 import com.cloud.baremetal.database.BaremetalPxeVO;
+import com.cloud.baremetal.manager.BaremetalManager;
 import com.cloud.baremetal.networkservice.BaremetalPxeManager.BaremetalPxeType;
-import com.cloud.configuration.Config;
 import com.cloud.dc.DataCenter;
 import com.cloud.deploy.DeployDestination;
 import com.cloud.exception.AgentUnavailableException;
@@ -219,7 +219,7 @@ public class BaremetalKickStartServiceImpl extends BareMetalPxeServiceBase imple
             throw new CloudRuntimeException(String.format("Cannot find Management NIC on virtual router[id:%s]", vr.getId()));
         }
 
-        String internalServerIp = _configDao.getValue(Config.BaremetalInternalStorageServer.key());
+        String internalServerIp = BaremetalManager.BaremetalInternalStorageServer.value();
         if (internalServerIp == null) {
             throw new CloudRuntimeException(String.format("please specify 'baremetal.internal.storage.server.ip', which is the http server/nfs server storing kickstart files and ISO files, in global setting"));
         }
diff --git a/plugins/hypervisors/hyperv/src/main/java/com/cloud/hypervisor/hyperv/discoverer/HypervServerDiscoverer.java b/plugins/hypervisors/hyperv/src/main/java/com/cloud/hypervisor/hyperv/discoverer/HypervServerDiscoverer.java
index a5fe1442e56..d4db87a9097 100644
--- a/plugins/hypervisors/hyperv/src/main/java/com/cloud/hypervisor/hyperv/discoverer/HypervServerDiscoverer.java
+++ b/plugins/hypervisors/hyperv/src/main/java/com/cloud/hypervisor/hyperv/discoverer/HypervServerDiscoverer.java
@@ -28,7 +28,6 @@ import java.util.Random;
 import javax.inject.Inject;
 import javax.naming.ConfigurationException;
 
-
 import com.cloud.agent.AgentManager;
 import com.cloud.agent.Listener;
 import com.cloud.agent.api.AgentControlAnswer;
@@ -41,7 +40,6 @@ import com.cloud.agent.api.SetupCommand;
 import com.cloud.agent.api.StartupCommand;
 import com.cloud.agent.api.StartupRoutingCommand;
 import com.cloud.alert.AlertManager;
-import com.cloud.configuration.Config;
 import com.cloud.dc.ClusterVO;
 import com.cloud.dc.DataCenterVO;
 import com.cloud.dc.HostPodVO;
@@ -62,6 +60,7 @@ import com.cloud.resource.DiscovererBase;
 import com.cloud.resource.ResourceStateAdapter;
 import com.cloud.resource.ServerResource;
 import com.cloud.resource.UnableDeleteHostException;
+import com.cloud.server.ManagementServer;
 import com.cloud.storage.StorageLayer;
 import com.cloud.utils.UuidUtils;
 
@@ -285,7 +284,7 @@ public class HypervServerDiscoverer extends DiscovererBase implements Discoverer
 
             params.putAll(details);
 
-            params.put("router.aggregation.command.each.timeout", _configDao.getValue(Config.RouterAggregationCommandEachTimeout.toString()));
+            params.put("router.aggregation.command.each.timeout", String.valueOf(ManagementServer.RouterAggregationCommandEachTimeout.value()));
 
             HypervDirectConnectResource resource = new HypervDirectConnectResource();
             resource.configure(agentIp, params);
diff --git a/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/VmwareServerDiscoverer.java b/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/VmwareServerDiscoverer.java
index 9391e095625..d00aa85a45f 100644
--- a/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/VmwareServerDiscoverer.java
+++ b/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/VmwareServerDiscoverer.java
@@ -32,7 +32,6 @@ import org.apache.cloudstack.api.ApiConstants;
 import com.cloud.agent.api.StartupCommand;
 import com.cloud.agent.api.StartupRoutingCommand;
 import com.cloud.alert.AlertManager;
-import com.cloud.configuration.Config;
 import com.cloud.dc.ClusterDetailsDao;
 import com.cloud.dc.ClusterVO;
 import com.cloud.dc.DataCenter.NetworkType;
@@ -66,6 +65,7 @@ import com.cloud.resource.DiscovererBase;
 import com.cloud.resource.ResourceStateAdapter;
 import com.cloud.resource.ServerResource;
 import com.cloud.resource.UnableDeleteHostException;
+import com.cloud.server.ManagementServer;
 import com.cloud.storage.Storage.ImageFormat;
 import com.cloud.storage.Storage.TemplateType;
 import com.cloud.storage.VMTemplateVO;
@@ -381,7 +381,7 @@ public class VmwareServerDiscoverer extends DiscovererBase implements Discoverer
                 params.put("guestTrafficInfo", guestTrafficLabelObj);
                 params.put("publicTrafficInfo", publicTrafficLabelObj);
 
-                params.put("router.aggregation.command.each.timeout", _configDao.getValue(Config.RouterAggregationCommandEachTimeout.toString()));
+                params.put("router.aggregation.command.each.timeout", String.valueOf(ManagementServer.RouterAggregationCommandEachTimeout.value()));
 
                 VmwareResource resource = new VmwareResource();
                 try {
@@ -692,12 +692,9 @@ public class VmwareServerDiscoverer extends DiscovererBase implements Discoverer
     }
 
     private void _readGlobalConfigParameters() {
-        String value;
         if (_configDao != null) {
-            value = _configDao.getValue(Config.VmwareUseDVSwitch.key());
-            useDVS = Boolean.parseBoolean(value);
-            value = _configDao.getValue(Config.VmwareUseNexusVSwitch.key());
-            nexusDVS = Boolean.parseBoolean(value);
+            useDVS = ManagementServer.VmwareUseDVSwitch.value();
+            nexusDVS = ManagementServer.VmwareUseNexusVSwitch.value();
         }
     }
 
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 8be9e686364..0355d8095af 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
@@ -82,7 +82,6 @@ import com.cloud.agent.api.to.StorageFilerTO;
 import com.cloud.api.query.dao.TemplateJoinDao;
 import com.cloud.cluster.ClusterManager;
 import com.cloud.cluster.dao.ManagementServerHostPeerDao;
-import com.cloud.configuration.Config;
 import com.cloud.dc.ClusterDetailsDao;
 import com.cloud.dc.ClusterVO;
 import com.cloud.dc.ClusterVSMMapVO;
@@ -143,6 +142,7 @@ import com.cloud.org.Cluster;
 import com.cloud.org.Cluster.ClusterType;
 import com.cloud.secstorage.CommandExecLogDao;
 import com.cloud.server.ConfigurationServer;
+import com.cloud.server.ManagementServer;
 import com.cloud.storage.ImageStoreDetailsUtil;
 import com.cloud.storage.JavaStorageLayer;
 import com.cloud.storage.StorageLayer;
@@ -168,6 +168,7 @@ import com.cloud.utils.exception.CloudRuntimeException;
 import com.cloud.utils.script.Script;
 import com.cloud.utils.ssh.SshHelper;
 import com.cloud.vm.DomainRouterVO;
+import com.cloud.vm.UserVmManager;
 import com.cloud.vm.dao.UserVmCloneSettingDao;
 import com.cloud.vm.dao.VMInstanceDao;
 import com.vmware.pbm.PbmProfile;
@@ -341,49 +342,35 @@ public class VmwareManagerImpl extends ManagerBase implements VmwareManager, Vmw
 
         _fullCloneFlag = StorageManager.VmwareCreateCloneFull.value();
 
-        value = _configDao.getValue(Config.SetVmInternalNameUsingDisplayName.key());
-        if (value == null) {
-            _instanceNameFlag = false;
-        } else {
-            _instanceNameFlag = Boolean.parseBoolean(value);
-        }
+        _instanceNameFlag = UserVmManager.SetVmInternalNameUsingDisplayName.value();
 
-        _serviceConsoleName = _configDao.getValue(Config.VmwareServiceConsole.key());
-        if (_serviceConsoleName == null) {
-            _serviceConsoleName = "Service Console";
-        }
+        _serviceConsoleName = VmwareServiceConsole.value();
 
-        _managementPortGroupName = _configDao.getValue(Config.VmwareManagementPortGroup.key());
-        if (_managementPortGroupName == null) {
-            _managementPortGroupName = "Management Network";
-        }
+        _managementPortGroupName = VmwareManagementPortGroup.value();
 
-        _defaultSystemVmNicAdapterType = _configDao.getValue(Config.VmwareSystemVmNicDeviceType.key());
+        _defaultSystemVmNicAdapterType = ManagementServer.VmwareSystemVmNicDeviceType.value();
         if (_defaultSystemVmNicAdapterType == null) {
             _defaultSystemVmNicAdapterType = VirtualEthernetCardType.E1000.toString();
         }
 
-        _additionalPortRangeStart = NumbersUtil.parseInt(_configDao.getValue(Config.VmwareAdditionalVncPortRangeStart.key()), 59000);
+        _additionalPortRangeStart = VmwareAdditionalVncPortRangeStart.value();
         if (_additionalPortRangeStart > 65535) {
             logger.warn("Invalid port range start port (" + _additionalPortRangeStart + ") for additional VNC port allocation, reset it to default start port 59000");
             _additionalPortRangeStart = 59000;
         }
 
-        _additionalPortRangeSize = NumbersUtil.parseInt(_configDao.getValue(Config.VmwareAdditionalVncPortRangeSize.key()), 1000);
+        _additionalPortRangeSize = VmwareAdditionalVncPortRangeSize.value();
         if (_additionalPortRangeSize < 0 || _additionalPortRangeStart + _additionalPortRangeSize > 65535) {
             logger.warn("Invalid port range size (" + _additionalPortRangeSize + " for range starts at " + _additionalPortRangeStart);
             _additionalPortRangeSize = Math.min(1000, 65535 - _additionalPortRangeStart);
         }
 
-        _vCenterSessionTimeout = NumbersUtil.parseInt(_configDao.getValue(Config.VmwareVcenterSessionTimeout.key()), 1200) * 1000;
+        _vCenterSessionTimeout = (int) (VmwareVcenterSessionTimeout.value() * 1000);
         logger.info("VmwareManagerImpl config - vmware.vcenter.session.timeout: " + _vCenterSessionTimeout);
 
-        _recycleHungWorker = _configDao.getValue(Config.VmwareRecycleHungWorker.key());
-        if (_recycleHungWorker == null || _recycleHungWorker.isEmpty()) {
-            _recycleHungWorker = "false";
-        }
+        _recycleHungWorker = String.valueOf(VmwareRecycleHungWorker.value());
 
-        _rootDiskController = _configDao.getValue(Config.VmwareRootDiskControllerType.key());
+        _rootDiskController = ManagementServer.VmwareRootDiskControllerType.value();
         if (_rootDiskController == null || _rootDiskController.isEmpty()) {
             _rootDiskController = DiskControllerType.ide.toString();
         }
diff --git a/plugins/hypervisors/vmware/src/main/java/com/cloud/network/element/CiscoNexusVSMElement.java b/plugins/hypervisors/vmware/src/main/java/com/cloud/network/element/CiscoNexusVSMElement.java
index 193270cc156..d5b1878c57d 100644
--- a/plugins/hypervisors/vmware/src/main/java/com/cloud/network/element/CiscoNexusVSMElement.java
+++ b/plugins/hypervisors/vmware/src/main/java/com/cloud/network/element/CiscoNexusVSMElement.java
@@ -29,7 +29,6 @@ import com.cloud.api.commands.DisableCiscoNexusVSMCmd;
 import com.cloud.api.commands.EnableCiscoNexusVSMCmd;
 import com.cloud.api.commands.ListCiscoNexusVSMsCmd;
 import com.cloud.api.response.CiscoNexusVSMResponse;
-import com.cloud.configuration.Config;
 import com.cloud.dc.ClusterVO;
 import com.cloud.dc.ClusterVSMMapVO;
 import com.cloud.dc.dao.ClusterDao;
@@ -52,6 +51,7 @@ import com.cloud.network.PhysicalNetworkServiceProvider;
 import com.cloud.network.dao.CiscoNexusVSMDeviceDao;
 import com.cloud.offering.NetworkOffering;
 import com.cloud.org.Cluster;
+import com.cloud.server.ManagementServer;
 import com.cloud.server.ManagementService;
 import com.cloud.utils.Pair;
 import com.cloud.utils.cisco.n1kv.vsm.NetconfHelper;
@@ -303,7 +303,7 @@ public class CiscoNexusVSMElement extends CiscoNexusVSMDeviceManagerImpl impleme
 
         } else {
             String msg;
-            msg = "The global parameter " + Config.VmwareUseNexusVSwitch.toString() + " is set to \"true\". Following mandatory parameters are not specified. ";
+            msg = "The global parameter " + ManagementServer.VmwareUseNexusVSwitch.key() + " is set to \"true\". Following mandatory parameters are not specified. ";
             if (vsmIp == null) {
                 msg += "vsmipaddress: Management IP address of Cisco Nexus 1000v dvSwitch. ";
             }
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 9381d9f88a1..9d0b819995d 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
@@ -49,7 +49,6 @@ import com.cloud.agent.api.SetupCommand;
 import com.cloud.agent.api.StartupCommand;
 import com.cloud.agent.api.StartupRoutingCommand;
 import com.cloud.alert.AlertManager;
-import com.cloud.configuration.Config;
 import com.cloud.dc.ClusterVO;
 import com.cloud.dc.DataCenterVO;
 import com.cloud.dc.HostPodVO;
@@ -84,6 +83,7 @@ import com.cloud.resource.DiscovererBase;
 import com.cloud.resource.ResourceStateAdapter;
 import com.cloud.resource.ServerResource;
 import com.cloud.resource.UnableDeleteHostException;
+import com.cloud.server.ManagementServer;
 import com.cloud.storage.Storage.ImageFormat;
 import com.cloud.storage.Storage.TemplateType;
 import com.cloud.storage.VMTemplateVO;
@@ -351,15 +351,15 @@ public class XcpServerDiscoverer extends DiscovererBase implements Discoverer, L
                 boolean securityGroupEnabled = zone.isSecurityGroupEnabled() || _networkMgr.isSecurityGroupSupportedForZone(zone.getId());
                 params.put("securitygroupenabled", Boolean.toString(securityGroupEnabled));
 
-                params.put("router.aggregation.command.each.timeout", _configDao.getValue(Config.RouterAggregationCommandEachTimeout.toString()));
+                params.put("router.aggregation.command.each.timeout", String.valueOf(ManagementServer.RouterAggregationCommandEachTimeout.value()));
                 params.put("wait", Integer.toString(_wait));
                 details.put("wait", Integer.toString(_wait));
-                params.put("migratewait", _configDao.getValue(Config.MigrateWait.toString()));
-                params.put(Config.XenServerMaxNics.toString().toLowerCase(), _configDao.getValue(Config.XenServerMaxNics.toString()));
-                params.put(Config.XenServerHeartBeatTimeout.toString().toLowerCase(), _configDao.getValue(Config.XenServerHeartBeatTimeout.toString()));
-                params.put(Config.XenServerHeartBeatInterval.toString().toLowerCase(), _configDao.getValue(Config.XenServerHeartBeatInterval.toString()));
-                params.put(Config.InstanceName.toString().toLowerCase(), _instance);
-                details.put(Config.InstanceName.toString().toLowerCase(), _instance);
+                params.put("migratewait", String.valueOf(AgentManager.MigrateWait.value()));
+                params.put(AgentManager.XenServerMaxNics.toString().toLowerCase(), String.valueOf(AgentManager.XenServerMaxNics.value()));
+                params.put(ManagementServer.XenServerHeartBeatTimeout.key().toLowerCase(), String.valueOf(ManagementServer.XenServerHeartBeatTimeout.value()));
+                params.put(ManagementServer.XenServerHeartBeatInterval.key().toLowerCase(), String.valueOf(ManagementServer.XenServerHeartBeatInterval.value()));
+                params.put(AgentManager.InstanceName.toString().toLowerCase(), _instance);
+                details.put(AgentManager.InstanceName.toString().toLowerCase(), _instance);
                 try {
                     resource.configure("XenServer", params);
                 } catch (ConfigurationException e) {
@@ -473,7 +473,7 @@ public class XcpServerDiscoverer extends DiscovererBase implements Discoverer, L
     }
 
     protected void serverConfig() {
-        String value = _params.get(Config.XenServerSetupMultipath.key());
+        String value = _params.get(ManagementServer.XenServerSetupMultipath.key());
         _setupMultipath = Boolean.parseBoolean(value);
     }
 
diff --git a/plugins/network-elements/elastic-loadbalancer/src/main/java/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java b/plugins/network-elements/elastic-loadbalancer/src/main/java/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java
index 37d04d2270d..7577a07eb0c 100644
--- a/plugins/network-elements/elastic-loadbalancer/src/main/java/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java
+++ b/plugins/network-elements/elastic-loadbalancer/src/main/java/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java
@@ -50,7 +50,6 @@ import com.cloud.agent.api.routing.LoadBalancerConfigCommand;
 import com.cloud.agent.api.routing.NetworkElementCommand;
 import com.cloud.agent.api.to.LoadBalancerTO;
 import com.cloud.agent.manager.Commands;
-import com.cloud.configuration.Config;
 import com.cloud.dc.DataCenter;
 import com.cloud.dc.DataCenter.NetworkType;
 import com.cloud.dc.DataCenterVO;
@@ -295,11 +294,11 @@ public class ElasticLoadBalancerManagerImpl extends ManagerBase implements Elast
         if (_instance == null) {
             _instance = "VM";
         }
-        _mgmtCidr = _configDao.getValue(Config.ManagementNetwork.key());
+        _mgmtCidr = ManagementServer.ManagementNetwork.value();
 
-        _elasticLbVmRamSize = NumbersUtil.parseInt(configs.get(Config.ElasticLoadBalancerVmMemory.key()), DEFAULT_ELB_VM_RAMSIZE);
-        _elasticLbvmCpuMHz = NumbersUtil.parseInt(configs.get(Config.ElasticLoadBalancerVmCpuMhz.key()), DEFAULT_ELB_VM_CPU_MHZ);
-        _elasticLbvmNumCpu = NumbersUtil.parseInt(configs.get(Config.ElasticLoadBalancerVmNumVcpu.key()), 1);
+        _elasticLbVmRamSize = NumbersUtil.parseInt(configs.get(ElasticLoadBalancerVmMemory.key()), DEFAULT_ELB_VM_RAMSIZE);
+        _elasticLbvmCpuMHz = NumbersUtil.parseInt(configs.get(ElasticLoadBalancerVmCpuMhz.key()), DEFAULT_ELB_VM_CPU_MHZ);
+        _elasticLbvmNumCpu = NumbersUtil.parseInt(configs.get(ElasticLoadBalancerVmNumVcpu.key()), 1);
         List<ServiceOfferingVO> offerings = _serviceOfferingDao.createSystemServiceOfferings("System Offering For Elastic LB VM",
                 ServiceOffering.elbVmDefaultOffUniqueName, _elasticLbvmNumCpu, _elasticLbVmRamSize, _elasticLbvmCpuMHz, 0, 0, true, null,
                 Storage.ProvisioningType.THIN, true, null, true, VirtualMachine.Type.ElasticLoadBalancerVm, true);
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 0efe46432d9..162a8c35858 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
@@ -55,7 +55,6 @@ import com.cloud.agent.api.routing.LoadBalancerConfigCommand;
 import com.cloud.agent.api.routing.NetworkElementCommand;
 import com.cloud.agent.api.to.LoadBalancerTO;
 import com.cloud.agent.manager.Commands;
-import com.cloud.configuration.Config;
 import com.cloud.configuration.ConfigurationManagerImpl;
 import com.cloud.dc.DataCenter;
 import com.cloud.dc.DataCenterVO;
@@ -399,16 +398,16 @@ public class InternalLoadBalancerVMManagerImpl extends ManagerBase implements In
         }
 
         _mgmtHost = configs.get("host");
-        _mgmtCidr = _configDao.getValue(Config.ManagementNetwork.key());
+        _mgmtCidr = ManagementServer.ManagementNetwork.value();
 
-        final String offUUID = configs.get(Config.InternalLbVmServiceOfferingId.key());
+        final String offUUID = configs.get(ManagementServer.InternalLbVmServiceOfferingId.key());
         if (offUUID != null && !offUUID.isEmpty()) {
             //get the id by offering UUID
             final ServiceOfferingVO off = _serviceOfferingDao.findByUuid(offUUID);
             if (off != null) {
                 _internalLbVmOfferingId = off.getId();
             } else {
-                logger.warn("Invalid offering UUID is passed in " + Config.InternalLbVmServiceOfferingId.key() + "; the default offering will be used instead");
+                logger.warn("Invalid offering UUID is passed in " + ManagementServer.InternalLbVmServiceOfferingId.key() + "; the default offering will be used instead");
             }
         }
 
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 e24eb8a31fc..8553ba5faa5 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
@@ -34,7 +34,7 @@ import org.apache.cloudstack.storage.image.store.ImageStoreImpl;
 
 import com.cloud.agent.api.to.DataStoreTO;
 import com.cloud.agent.api.to.S3TO;
-import com.cloud.configuration.Config;
+import com.cloud.server.ManagementServer;
 import com.cloud.storage.Storage.ImageFormat;
 import com.cloud.storage.secondary.SecondaryStorageVmManager;
 import com.cloud.utils.storage.S3.S3Utils;
@@ -63,7 +63,7 @@ public class S3ImageStoreDriverImpl extends BaseImageStoreDriverImpl {
                         details.get(ApiConstants.S3_MAX_ERROR_RETRY) == null ? null : Integer.valueOf(details.get(ApiConstants.S3_MAX_ERROR_RETRY)),
                         details.get(ApiConstants.S3_SOCKET_TIMEOUT) == null ? null : Integer.valueOf(details.get(ApiConstants.S3_SOCKET_TIMEOUT)),
                         imgStore.getCreated(),
-                        _configDao.getValue(Config.S3EnableRRS.toString()) == null ? false : Boolean.parseBoolean(_configDao.getValue(Config.S3EnableRRS.toString())),
+                        ManagementServer.S3EnableRRS.value(),
                         getMaxSingleUploadSizeInBytes(),
                         details.get(ApiConstants.S3_CONNECTION_TTL) == null ? null : Integer.valueOf(details.get(ApiConstants.S3_CONNECTION_TTL)),
                         details.get(ApiConstants.S3_USE_TCP_KEEPALIVE) == null ? null : Boolean.parseBoolean(details.get(ApiConstants.S3_USE_TCP_KEEPALIVE)));
@@ -71,7 +71,7 @@ public class S3ImageStoreDriverImpl extends BaseImageStoreDriverImpl {
 
     private long getMaxSingleUploadSizeInBytes() {
         try {
-            return Long.parseLong(_configDao.getValue(Config.S3MaxSingleUploadSize.toString())) * 1024L * 1024L * 1024L;
+            return ManagementServer.S3MaxSingleUploadSize.value() * 1024L * 1024L * 1024L;
         } catch (NumberFormatException e) {
             // use default 1TB
             return 1024L * 1024L * 1024L * 1024L;
diff --git a/server/src/main/java/com/cloud/api/ApiDBUtils.java b/server/src/main/java/com/cloud/api/ApiDBUtils.java
index 4ee96a2cdb5..74aac293b68 100644
--- a/server/src/main/java/com/cloud/api/ApiDBUtils.java
+++ b/server/src/main/java/com/cloud/api/ApiDBUtils.java
@@ -156,7 +156,6 @@ import com.cloud.capacity.CapacityManager;
 import com.cloud.capacity.CapacityVO;
 import com.cloud.capacity.dao.CapacityDao;
 import com.cloud.capacity.dao.CapacityDaoImpl.SummedCapacity;
-import com.cloud.configuration.Config;
 import com.cloud.configuration.ConfigurationManager;
 import com.cloud.configuration.ConfigurationService;
 import com.cloud.configuration.Resource;
@@ -2299,7 +2298,7 @@ public class ApiDBUtils {
     }
 
     public static String getDnsNameConfiguredForGslb() {
-        String providerDnsName = s_configDao.getValue(Config.CloudDnsName.key());
+        String providerDnsName = ManagementServer.CloudDnsName.value();
         return providerDnsName;
     }
 
diff --git a/server/src/main/java/com/cloud/api/query/dao/AccountJoinDaoImpl.java b/server/src/main/java/com/cloud/api/query/dao/AccountJoinDaoImpl.java
index de66b80ca55..7a1298b6a83 100644
--- a/server/src/main/java/com/cloud/api/query/dao/AccountJoinDaoImpl.java
+++ b/server/src/main/java/com/cloud/api/query/dao/AccountJoinDaoImpl.java
@@ -38,6 +38,7 @@ import com.cloud.api.query.vo.AccountJoinVO;
 import com.cloud.api.query.vo.UserAccountJoinVO;
 import com.cloud.configuration.Resource;
 import com.cloud.configuration.Resource.ResourceType;
+import com.cloud.server.ManagementServer;
 import com.cloud.user.Account;
 import com.cloud.user.AccountManager;
 import com.cloud.utils.db.GenericDaoBase;
@@ -293,11 +294,7 @@ public class AccountJoinDaoImpl extends GenericDaoBase<AccountJoinVO, Long> impl
     @Override
     public List<AccountJoinVO> searchByIds(Long... accountIds) {
         // set detail batch query size
-        int DETAILS_BATCH_SIZE = 2000;
-        String batchCfg = configDao.getValue("detail.batch.query.size");
-        if (batchCfg != null) {
-            DETAILS_BATCH_SIZE = Integer.parseInt(batchCfg);
-        }
+        int DETAILS_BATCH_SIZE = ManagementServer.DetailBatchQuerySize.value();
 
         List<AccountJoinVO> uvList = new ArrayList<>();
         // query details by batches
diff --git a/server/src/main/java/com/cloud/api/query/dao/AffinityGroupJoinDaoImpl.java b/server/src/main/java/com/cloud/api/query/dao/AffinityGroupJoinDaoImpl.java
index a5fd2bf11f1..62dcb299a12 100644
--- a/server/src/main/java/com/cloud/api/query/dao/AffinityGroupJoinDaoImpl.java
+++ b/server/src/main/java/com/cloud/api/query/dao/AffinityGroupJoinDaoImpl.java
@@ -29,6 +29,7 @@ import org.apache.cloudstack.dedicated.DedicatedResourceResponse;
 
 import com.cloud.api.ApiResponseHelper;
 import com.cloud.api.query.vo.AffinityGroupJoinVO;
+import com.cloud.server.ManagementServer;
 import com.cloud.utils.db.GenericDaoBase;
 import com.cloud.utils.db.SearchBuilder;
 import com.cloud.utils.db.SearchCriteria;
@@ -156,11 +157,7 @@ public class AffinityGroupJoinDaoImpl extends GenericDaoBase<AffinityGroupJoinVO
     @Override
     public List<AffinityGroupJoinVO> searchByIds(Long... agIds) {
         // set detail batch query size
-        int DETAILS_BATCH_SIZE = 2000;
-        String batchCfg = _configDao.getValue("detail.batch.query.size");
-        if (batchCfg != null) {
-            DETAILS_BATCH_SIZE = Integer.parseInt(batchCfg);
-        }
+        int DETAILS_BATCH_SIZE = ManagementServer.DetailBatchQuerySize.value();
         // query details by batches
         List<AffinityGroupJoinVO> uvList = new ArrayList<AffinityGroupJoinVO>();
         // query details by batches
diff --git a/server/src/main/java/com/cloud/api/query/dao/DiskOfferingJoinDaoImpl.java b/server/src/main/java/com/cloud/api/query/dao/DiskOfferingJoinDaoImpl.java
index e53f94fa0c3..afea70b3660 100644
--- a/server/src/main/java/com/cloud/api/query/dao/DiskOfferingJoinDaoImpl.java
+++ b/server/src/main/java/com/cloud/api/query/dao/DiskOfferingJoinDaoImpl.java
@@ -36,6 +36,7 @@ import com.cloud.dc.VsphereStoragePolicyVO;
 import com.cloud.dc.dao.VsphereStoragePolicyDao;
 import com.cloud.offering.DiskOffering;
 import com.cloud.offering.ServiceOffering;
+import com.cloud.server.ManagementServer;
 import com.cloud.server.ResourceTag;
 import com.cloud.user.AccountManager;
 import com.cloud.utils.db.Filter;
@@ -167,11 +168,7 @@ public class DiskOfferingJoinDaoImpl extends GenericDaoBase<DiskOfferingJoinVO,
         Filter searchFilter = new Filter(DiskOfferingJoinVO.class, "sortKey", SortKeyAscending.value());
         searchFilter.addOrderBy(DiskOfferingJoinVO.class, "id", true);
         // set detail batch query size
-        int DETAILS_BATCH_SIZE = 2000;
-        String batchCfg = configDao.getValue("detail.batch.query.size");
-        if (batchCfg != null) {
-            DETAILS_BATCH_SIZE = Integer.parseInt(batchCfg);
-        }
+        int DETAILS_BATCH_SIZE = ManagementServer.DetailBatchQuerySize.value();
 
         List<DiskOfferingJoinVO> uvList = new ArrayList<>();
         // query details by batches
diff --git a/server/src/main/java/com/cloud/api/query/dao/DomainJoinDaoImpl.java b/server/src/main/java/com/cloud/api/query/dao/DomainJoinDaoImpl.java
index b6a3370e6bc..d0f0ecf23d0 100644
--- a/server/src/main/java/com/cloud/api/query/dao/DomainJoinDaoImpl.java
+++ b/server/src/main/java/com/cloud/api/query/dao/DomainJoinDaoImpl.java
@@ -38,6 +38,7 @@ import com.cloud.api.query.vo.DomainJoinVO;
 import com.cloud.configuration.Resource;
 import com.cloud.configuration.Resource.ResourceType;
 import com.cloud.domain.Domain;
+import com.cloud.server.ManagementServer;
 import com.cloud.user.AccountManager;
 import com.cloud.utils.db.GenericDaoBase;
 import com.cloud.utils.db.SearchBuilder;
@@ -265,11 +266,7 @@ public class DomainJoinDaoImpl extends GenericDaoBase<DomainJoinVO, Long> implem
     @Override
     public List<DomainJoinVO> searchByIds(Long... domainIds) {
         // set detail batch query size
-        int DETAILS_BATCH_SIZE = 2000;
-        String batchCfg = configDao.getValue("detail.batch.query.size");
-        if (batchCfg != null) {
-            DETAILS_BATCH_SIZE = Integer.parseInt(batchCfg);
-        }
+        int DETAILS_BATCH_SIZE = ManagementServer.DetailBatchQuerySize.value();
 
         List<DomainJoinVO> uvList = new ArrayList<>();
         // query details by batches
diff --git a/server/src/main/java/com/cloud/api/query/dao/DomainRouterJoinDaoImpl.java b/server/src/main/java/com/cloud/api/query/dao/DomainRouterJoinDaoImpl.java
index 9bc409d455e..2c3b51d491f 100644
--- a/server/src/main/java/com/cloud/api/query/dao/DomainRouterJoinDaoImpl.java
+++ b/server/src/main/java/com/cloud/api/query/dao/DomainRouterJoinDaoImpl.java
@@ -41,6 +41,7 @@ import com.cloud.host.ControlState;
 import com.cloud.network.Networks.TrafficType;
 import com.cloud.network.router.VirtualRouter;
 import com.cloud.network.router.VirtualRouter.Role;
+import com.cloud.server.ManagementServer;
 import com.cloud.storage.VMTemplateVO;
 import com.cloud.user.Account;
 import com.cloud.user.AccountManager;
@@ -300,11 +301,7 @@ public class DomainRouterJoinDaoImpl extends GenericDaoBase<DomainRouterJoinVO,
     @Override
     public List<DomainRouterJoinVO> searchByIds(Long... vrIds) {
         // set detail batch query size
-        int DETAILS_BATCH_SIZE = 2000;
-        String batchCfg = _configDao.getValue("detail.batch.query.size");
-        if (batchCfg != null) {
-            DETAILS_BATCH_SIZE = Integer.parseInt(batchCfg);
-        }
+        int DETAILS_BATCH_SIZE = ManagementServer.DetailBatchQuerySize.value();
         // query details by batches
         List<DomainRouterJoinVO> uvList = new ArrayList<DomainRouterJoinVO>();
         // query details by batches
diff --git a/server/src/main/java/com/cloud/api/query/dao/HostJoinDaoImpl.java b/server/src/main/java/com/cloud/api/query/dao/HostJoinDaoImpl.java
index 2e4025ca001..e94e5fbd822 100644
--- a/server/src/main/java/com/cloud/api/query/dao/HostJoinDaoImpl.java
+++ b/server/src/main/java/com/cloud/api/query/dao/HostJoinDaoImpl.java
@@ -56,6 +56,7 @@ import com.cloud.host.HostStats;
 import com.cloud.host.dao.HostDetailsDao;
 import com.cloud.hypervisor.Hypervisor;
 import com.cloud.resource.ResourceState;
+import com.cloud.server.ManagementServer;
 import com.cloud.storage.StorageStats;
 import com.cloud.user.AccountManager;
 import com.cloud.utils.db.Filter;
@@ -393,11 +394,7 @@ public class HostJoinDaoImpl extends GenericDaoBase<HostJoinVO, Long> implements
     @Override
     public List<HostJoinVO> searchByIds(Long... hostIds) {
         // set detail batch query size
-        int DETAILS_BATCH_SIZE = 2000;
-        String batchCfg = _configDao.getValue("detail.batch.query.size");
-        if (batchCfg != null) {
-            DETAILS_BATCH_SIZE = Integer.parseInt(batchCfg);
-        }
+        int DETAILS_BATCH_SIZE = ManagementServer.DetailBatchQuerySize.value();
         // query details by batches
         List<HostJoinVO> uvList = new ArrayList<HostJoinVO>();
         // query details by batches
diff --git a/server/src/main/java/com/cloud/api/query/dao/ImageStoreJoinDaoImpl.java b/server/src/main/java/com/cloud/api/query/dao/ImageStoreJoinDaoImpl.java
index 9a0c271fdb4..a8df16e77df 100644
--- a/server/src/main/java/com/cloud/api/query/dao/ImageStoreJoinDaoImpl.java
+++ b/server/src/main/java/com/cloud/api/query/dao/ImageStoreJoinDaoImpl.java
@@ -22,6 +22,7 @@ import java.util.List;
 import javax.inject.Inject;
 
 import com.cloud.api.ApiDBUtils;
+import com.cloud.server.ManagementServer;
 import com.cloud.storage.StorageStats;
 import com.cloud.user.AccountManager;
 import org.apache.cloudstack.annotation.AnnotationService;
@@ -116,11 +117,7 @@ public class ImageStoreJoinDaoImpl extends GenericDaoBase<ImageStoreJoinVO, Long
     @Override
     public List<ImageStoreJoinVO> searchByIds(Long... spIds) {
         // set detail batch query size
-        int DETAILS_BATCH_SIZE = 2000;
-        String batchCfg = _configDao.getValue("detail.batch.query.size");
-        if (batchCfg != null) {
-            DETAILS_BATCH_SIZE = Integer.parseInt(batchCfg);
-        }
+        int DETAILS_BATCH_SIZE = ManagementServer.DetailBatchQuerySize.value();
         // query details by batches
         List<ImageStoreJoinVO> uvList = new ArrayList<ImageStoreJoinVO>();
         // query details by batches
diff --git a/server/src/main/java/com/cloud/api/query/dao/ProjectJoinDaoImpl.java b/server/src/main/java/com/cloud/api/query/dao/ProjectJoinDaoImpl.java
index d1aebb59108..e57b756202f 100644
--- a/server/src/main/java/com/cloud/api/query/dao/ProjectJoinDaoImpl.java
+++ b/server/src/main/java/com/cloud/api/query/dao/ProjectJoinDaoImpl.java
@@ -23,7 +23,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
 
-
 import javax.inject.Inject;
 
 import org.springframework.stereotype.Component;
@@ -40,6 +39,7 @@ import com.cloud.projects.Project;
 import com.cloud.projects.ProjectAccount;
 import com.cloud.projects.ProjectAccountVO;
 import com.cloud.projects.dao.ProjectAccountDao;
+import com.cloud.server.ManagementServer;
 import com.cloud.server.ResourceTag.ResourceObjectType;
 import com.cloud.user.Account;
 import com.cloud.user.User;
@@ -138,11 +138,7 @@ public class ProjectJoinDaoImpl extends GenericDaoBase<ProjectJoinVO, Long> impl
     @Override
     public List<ProjectJoinVO> searchByIds(Long... prjIds) {
         // set detail batch query size
-        int DETAILS_BATCH_SIZE = 2000;
-        String batchCfg = _configDao.getValue("detail.batch.query.size");
-        if (batchCfg != null) {
-            DETAILS_BATCH_SIZE = Integer.parseInt(batchCfg);
-        }
+        int DETAILS_BATCH_SIZE = ManagementServer.DetailBatchQuerySize.value();
         // query details by batches
         List<ProjectJoinVO> uvList = new ArrayList<ProjectJoinVO>();
         // query details by batches
diff --git a/server/src/main/java/com/cloud/api/query/dao/ResourceTagJoinDaoImpl.java b/server/src/main/java/com/cloud/api/query/dao/ResourceTagJoinDaoImpl.java
index be3d59f8645..03b02cc7262 100644
--- a/server/src/main/java/com/cloud/api/query/dao/ResourceTagJoinDaoImpl.java
+++ b/server/src/main/java/com/cloud/api/query/dao/ResourceTagJoinDaoImpl.java
@@ -28,6 +28,7 @@ import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
 
 import com.cloud.api.ApiResponseHelper;
 import com.cloud.api.query.vo.ResourceTagJoinVO;
+import com.cloud.server.ManagementServer;
 import com.cloud.server.ResourceTag;
 import com.cloud.server.ResourceTag.ResourceObjectType;
 import com.cloud.utils.db.GenericDaoBase;
@@ -97,11 +98,7 @@ public class ResourceTagJoinDaoImpl extends GenericDaoBase<ResourceTagJoinVO, Lo
     @Override
     public List<ResourceTagJoinVO> searchByIds(Long... tagIds) {
         // set detail batch query size
-        int DETAILS_BATCH_SIZE = 2000;
-        String batchCfg = _configDao.getValue("detail.batch.query.size");
-        if (batchCfg != null) {
-            DETAILS_BATCH_SIZE = Integer.parseInt(batchCfg);
-        }
+        int DETAILS_BATCH_SIZE = ManagementServer.DetailBatchQuerySize.value();
         // query details by batches
         List<ResourceTagJoinVO> uvList = new ArrayList<ResourceTagJoinVO>();
         // query details by batches
diff --git a/server/src/main/java/com/cloud/api/query/dao/SecurityGroupJoinDaoImpl.java b/server/src/main/java/com/cloud/api/query/dao/SecurityGroupJoinDaoImpl.java
index 72a7e8a3d39..1d56733f5f8 100644
--- a/server/src/main/java/com/cloud/api/query/dao/SecurityGroupJoinDaoImpl.java
+++ b/server/src/main/java/com/cloud/api/query/dao/SecurityGroupJoinDaoImpl.java
@@ -37,6 +37,7 @@ import com.cloud.network.security.SecurityGroup;
 import com.cloud.network.security.SecurityGroupVMMapVO;
 import com.cloud.network.security.SecurityRule.SecurityRuleType;
 import com.cloud.network.security.dao.SecurityGroupVMMapDao;
+import com.cloud.server.ManagementServer;
 import com.cloud.server.ResourceTag;
 import com.cloud.user.Account;
 import com.cloud.utils.db.GenericDaoBase;
@@ -226,11 +227,7 @@ public class SecurityGroupJoinDaoImpl extends GenericDaoBase<SecurityGroupJoinVO
     @Override
     public List<SecurityGroupJoinVO> searchByIds(Long... sgIds) {
         // set detail batch query size
-        int DETAILS_BATCH_SIZE = 2000;
-        String batchCfg = _configDao.getValue("detail.batch.query.size");
-        if (batchCfg != null) {
-            DETAILS_BATCH_SIZE = Integer.parseInt(batchCfg);
-        }
+        int DETAILS_BATCH_SIZE = ManagementServer.DetailBatchQuerySize.value();
         // query details by batches
         List<SecurityGroupJoinVO> uvList = new ArrayList<SecurityGroupJoinVO>();
         // query details by batches
diff --git a/server/src/main/java/com/cloud/api/query/dao/ServiceOfferingJoinDaoImpl.java b/server/src/main/java/com/cloud/api/query/dao/ServiceOfferingJoinDaoImpl.java
index 579425a68c1..75c6f479071 100644
--- a/server/src/main/java/com/cloud/api/query/dao/ServiceOfferingJoinDaoImpl.java
+++ b/server/src/main/java/com/cloud/api/query/dao/ServiceOfferingJoinDaoImpl.java
@@ -42,6 +42,7 @@ import com.cloud.api.query.vo.ServiceOfferingJoinVO;
 import com.cloud.dc.VsphereStoragePolicyVO;
 import com.cloud.dc.dao.VsphereStoragePolicyDao;
 import com.cloud.offering.ServiceOffering;
+import com.cloud.server.ManagementServer;
 import com.cloud.server.ResourceTag.ResourceObjectType;
 import com.cloud.storage.DiskOfferingVO;
 import com.cloud.user.AccountManager;
@@ -256,11 +257,7 @@ public class ServiceOfferingJoinDaoImpl extends GenericDaoBase<ServiceOfferingJo
         searchFilter.addOrderBy(ServiceOfferingJoinVO.class, "id", true);
 
         // set detail batch query size
-        int DETAILS_BATCH_SIZE = 2000;
-        String batchCfg = configDao.getValue("detail.batch.query.size");
-        if (batchCfg != null) {
-            DETAILS_BATCH_SIZE = Integer.parseInt(batchCfg);
-        }
+        int DETAILS_BATCH_SIZE = ManagementServer.DetailBatchQuerySize.value();
 
         List<ServiceOfferingJoinVO> uvList = new ArrayList<>();
         // query details by batches
diff --git a/server/src/main/java/com/cloud/api/query/dao/SnapshotJoinDaoImpl.java b/server/src/main/java/com/cloud/api/query/dao/SnapshotJoinDaoImpl.java
index 0b0d9b269f3..85195a49add 100644
--- a/server/src/main/java/com/cloud/api/query/dao/SnapshotJoinDaoImpl.java
+++ b/server/src/main/java/com/cloud/api/query/dao/SnapshotJoinDaoImpl.java
@@ -29,6 +29,7 @@ import javax.inject.Inject;
 import com.cloud.api.ApiDBUtils;
 import com.cloud.api.ApiResponseHelper;
 import com.cloud.api.query.vo.SnapshotJoinVO;
+import com.cloud.server.ManagementServer;
 import com.cloud.storage.GuestOS;
 import com.cloud.storage.Snapshot;
 import com.cloud.storage.VMTemplateStorageResourceAssoc;
@@ -226,11 +227,7 @@ public class SnapshotJoinDaoImpl extends GenericDaoBaseWithTagInformation<Snapsh
     @Override
     public List<SnapshotJoinVO> searchBySnapshotStorePair(String... pairs) {
         // set detail batch query size
-        int DETAILS_BATCH_SIZE = 2000;
-        String batchCfg = configDao.getValue("detail.batch.query.size");
-        if (batchCfg != null) {
-            DETAILS_BATCH_SIZE = Integer.parseInt(batchCfg);
-        }
+        int DETAILS_BATCH_SIZE = ManagementServer.DetailBatchQuerySize.value();
         // query details by batches
         Filter searchFilter = new Filter(SnapshotJoinVO.class, "snapshotStorePair", QueryService.SortKeyAscending.value(), null, null);
         List<SnapshotJoinVO> uvList = new ArrayList<>();
diff --git a/server/src/main/java/com/cloud/api/query/dao/StoragePoolJoinDaoImpl.java b/server/src/main/java/com/cloud/api/query/dao/StoragePoolJoinDaoImpl.java
index 946e3df4e90..c866fe7298a 100644
--- a/server/src/main/java/com/cloud/api/query/dao/StoragePoolJoinDaoImpl.java
+++ b/server/src/main/java/com/cloud/api/query/dao/StoragePoolJoinDaoImpl.java
@@ -22,6 +22,7 @@ import java.util.List;
 import java.util.Map;
 
 import javax.inject.Inject;
+import com.cloud.server.ManagementServer;
 
 import com.cloud.storage.clvm.ClvmPoolManager;
 import org.apache.cloudstack.annotation.AnnotationService;
@@ -339,11 +340,7 @@ public class StoragePoolJoinDaoImpl extends GenericDaoBase<StoragePoolJoinVO, Lo
     @Override
     public List<StoragePoolJoinVO> searchByIds(Long... spIds) {
         // set detail batch query size
-        int DETAILS_BATCH_SIZE = 2000;
-        String batchCfg = _configDao.getValue("detail.batch.query.size");
-        if (batchCfg != null) {
-            DETAILS_BATCH_SIZE = Integer.parseInt(batchCfg);
-        }
+        int DETAILS_BATCH_SIZE = ManagementServer.DetailBatchQuerySize.value();
         // query details by batches
         List<StoragePoolJoinVO> uvList = new ArrayList<StoragePoolJoinVO>();
         // query details by batches
diff --git a/server/src/main/java/com/cloud/api/query/dao/UserVmJoinDaoImpl.java b/server/src/main/java/com/cloud/api/query/dao/UserVmJoinDaoImpl.java
index ebc2326a72d..7f9a9d2311f 100644
--- a/server/src/main/java/com/cloud/api/query/dao/UserVmJoinDaoImpl.java
+++ b/server/src/main/java/com/cloud/api/query/dao/UserVmJoinDaoImpl.java
@@ -72,6 +72,7 @@ import com.cloud.host.dao.HostDetailsDao;
 import com.cloud.network.IpAddress;
 import com.cloud.network.vpc.VpcVO;
 import com.cloud.network.vpc.dao.VpcDao;
+import com.cloud.server.ManagementServer;
 import com.cloud.service.ServiceOfferingDetailsVO;
 import com.cloud.service.dao.ServiceOfferingDao;
 import com.cloud.storage.DiskOfferingVO;
@@ -779,11 +780,7 @@ public class UserVmJoinDaoImpl extends GenericDaoBaseWithTagInformation<UserVmJo
     @Override
     public List<UserVmJoinVO> searchByIds(Long... vmIds) {
         // set detail batch query size
-        int DETAILS_BATCH_SIZE = 2000;
-        String batchCfg = _configDao.getValue("detail.batch.query.size");
-        if (batchCfg != null) {
-            DETAILS_BATCH_SIZE = Integer.parseInt(batchCfg);
-        }
+        int DETAILS_BATCH_SIZE = ManagementServer.DetailBatchQuerySize.value();
         // query details by batches
         List<UserVmJoinVO> uvList = new ArrayList<UserVmJoinVO>();
         // query details by batches
diff --git a/server/src/main/java/com/cloud/api/query/dao/VolumeJoinDaoImpl.java b/server/src/main/java/com/cloud/api/query/dao/VolumeJoinDaoImpl.java
index e82ec525f01..40074a489df 100644
--- a/server/src/main/java/com/cloud/api/query/dao/VolumeJoinDaoImpl.java
+++ b/server/src/main/java/com/cloud/api/query/dao/VolumeJoinDaoImpl.java
@@ -21,6 +21,7 @@ import java.util.Collections;
 import java.util.List;
 
 import javax.inject.Inject;
+import com.cloud.server.ManagementServer;
 
 import com.cloud.storage.clvm.ClvmPoolManager;
 import org.apache.cloudstack.annotation.AnnotationService;
@@ -361,11 +362,7 @@ public class VolumeJoinDaoImpl extends GenericDaoBaseWithTagInformation<VolumeJo
     @Override
     public List<VolumeJoinVO> searchByIds(Long... volIds) {
         // set detail batch query size
-        int DETAILS_BATCH_SIZE = 2000;
-        String batchCfg = _configDao.getValue("detail.batch.query.size");
-        if (batchCfg != null) {
-            DETAILS_BATCH_SIZE = Integer.parseInt(batchCfg);
-        }
+        int DETAILS_BATCH_SIZE = ManagementServer.DetailBatchQuerySize.value();
         // query details by batches
         List<VolumeJoinVO> uvList = new ArrayList<VolumeJoinVO>();
         // query details by batches
diff --git a/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java b/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java
index 4a5bc4494b8..6227f15bac5 100644
--- a/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java
+++ b/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java
@@ -750,7 +750,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
 
         // As it is so common for people to forget about configuring
         // management.network.cidr,
-        final String mgtCidr = _configDao.getValue(Config.ManagementNetwork.key());
+        final String mgtCidr = ManagementServer.ManagementNetwork.value();
         if (mgtCidr == null || mgtCidr.trim().isEmpty()) {
             final String[] localCidrs = NetUtils.getLocalCidrs();
             if (localCidrs != null && localCidrs.length > 0) {
@@ -758,7 +758,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
 
         _alertMgr.sendAlert(AlertManager.AlertType.ALERT_TYPE_MANAGEMENT_NODE, 0, 0L, "Management network CIDR is not configured originally. Set it default to "
                         + localCidrs[0], "");
-                _configDao.update(Config.ManagementNetwork.key(), Config.ManagementNetwork.getCategory(), localCidrs[0]);
+                _configDao.update(ManagementServer.ManagementNetwork.key(), ManagementServer.ManagementNetwork.category(), localCidrs[0]);
             } else {
                 logger.warn("Management network CIDR is not properly configured and we are not able to find a default setting");
                 _alertMgr.sendAlert(AlertManager.AlertType.ALERT_TYPE_MANAGEMENT_NODE, 0, 0L,
@@ -1015,8 +1015,8 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
      * Updates the 'hypervisor.list' value to match the new custom hypervisor name set as newValue if the previous value was set
      */
     private void updateCustomDisplayNameOnHypervisorsList(String previousValue, String newValue) {
-        String hypervisorListConfigName = Config.HypervisorList.key();
-        String hypervisors = _configDao.getValue(hypervisorListConfigName);
+        String hypervisorListConfigName = ManagementServer.HypervisorList.key();
+        String hypervisors = ManagementServer.HypervisorList.value();
         if (Arrays.asList(hypervisors.split(",")).contains(previousValue)) {
             hypervisors = hypervisors.replace(previousValue, newValue);
             logger.info("Updating the hypervisor list configuration '{}' to match the new custom hypervisor display name",
@@ -2700,7 +2700,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
                 _zoneDao.addPrivateIpAddress(zone.getId(), pod.getId(), startIpFinal, endIpFinal, false, null);
             }
 
-            final String[] linkLocalIpRanges = NetUtils.getLinkLocalIPRange(_configDao.getValue(Config.ControlCidr.key()));
+            final String[] linkLocalIpRanges = NetUtils.getLinkLocalIPRange(ManagementServer.ControlCidr.value());
             if (linkLocalIpRanges.length > 1) {
                 _zoneDao.addLinkLocalIpAddress(zone.getId(), pod.getId(), linkLocalIpRanges[0], linkLocalIpRanges[1]);
             }
diff --git a/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java b/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java
index 68bfbe3d952..0d46c2d031b 100644
--- a/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java
+++ b/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java
@@ -62,7 +62,6 @@ import com.cloud.agent.api.check.CheckSshCommand;
 import com.cloud.agent.api.proxy.ConsoleProxyLoadAnswer;
 import com.cloud.agent.manager.Commands;
 import com.cloud.cluster.ClusterManager;
-import com.cloud.configuration.Config;
 import com.cloud.configuration.ConfigurationManagerImpl;
 import com.cloud.configuration.ZoneConfig;
 import com.cloud.dc.DataCenter;
@@ -1241,7 +1240,7 @@ public class ConsoleProxyManagerImpl extends ManagerBase implements ConsoleProxy
             }
 
             if (nic.getTrafficType() == TrafficType.Management) {
-                String mgmt_cidr = configurationDao.getValue(Config.ManagementNetwork.key());
+                String mgmt_cidr = ManagementServer.ManagementNetwork.value();
                 if (NetUtils.isValidCidrList(mgmt_cidr)) {
                     logger.debug("Management server cidr list is " + mgmt_cidr);
                     buf.append(" mgmtcidr=").append(mgmt_cidr);
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 e7dd3dea60e..52fb2f53b78 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
@@ -43,7 +43,6 @@ import com.cloud.agent.api.Command;
 import com.cloud.agent.api.ShutdownCommand;
 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.exception.AgentUnavailableException;
 import com.cloud.exception.DiscoveredWithErrorException;
@@ -229,7 +228,7 @@ public abstract class LibvirtServerDiscoverer extends DiscovererBase implements
 
             sshConnection.connect(null, 60000, 60000);
 
-            final String privateKey = _configDao.getValue("ssh.privatekey");
+            final String privateKey = ManagementServer.SshPrivateKey.value();
             if (!SSHCmdHelper.acquireAuthorizedConnectionWithPublicKey(sshConnection, username, privateKey)) {
                 if (org.apache.commons.lang3.StringUtils.isEmpty(password)) {
                     logger.error("Failed to authenticate with SSH key");
@@ -312,7 +311,7 @@ public abstract class LibvirtServerDiscoverer extends DiscovererBase implements
             KvmDummyResourceBase kvmResource = new KvmDummyResourceBase();
             Map<String, Object> params = new HashMap<String, Object>();
 
-            params.put("router.aggregation.command.each.timeout", _configDao.getValue(Config.RouterAggregationCommandEachTimeout.toString()));
+            params.put("router.aggregation.command.each.timeout", String.valueOf(ManagementServer.RouterAggregationCommandEachTimeout.value()));
 
             params.put("zone", Long.toString(dcId));
             params.put("pod", Long.toString(podId));
diff --git a/server/src/main/java/com/cloud/network/guru/ControlNetworkGuru.java b/server/src/main/java/com/cloud/network/guru/ControlNetworkGuru.java
index 9cec05446ac..21b67a47fdf 100644
--- a/server/src/main/java/com/cloud/network/guru/ControlNetworkGuru.java
+++ b/server/src/main/java/com/cloud/network/guru/ControlNetworkGuru.java
@@ -24,7 +24,6 @@ import javax.naming.ConfigurationException;
 import com.cloud.network.router.VirtualNetworkApplianceManager;
 import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
 
-import com.cloud.configuration.Config;
 import com.cloud.dc.DataCenter;
 import com.cloud.dc.DataCenter.NetworkType;
 import com.cloud.dc.DataCenterVO;
@@ -43,6 +42,7 @@ import com.cloud.network.Networks.Mode;
 import com.cloud.network.Networks.TrafficType;
 import com.cloud.network.dao.NetworkVO;
 import com.cloud.offering.NetworkOffering;
+import com.cloud.server.ManagementServer;
 import com.cloud.user.Account;
 import com.cloud.utils.exception.CloudRuntimeException;
 import com.cloud.utils.net.NetUtils;
@@ -225,12 +225,12 @@ public class ControlNetworkGuru extends PodBasedNetworkGuru implements NetworkGu
 
         Map<String, String> dbParams = _configDao.getConfiguration(params);
 
-        _cidr = dbParams.get(Config.ControlCidr.toString());
+        _cidr = dbParams.get(ManagementServer.ControlCidr.key());
         if (_cidr == null) {
             _cidr = NetUtils.getLinkLocalCIDR();
         }
 
-        _gateway = dbParams.get(Config.ControlGateway.toString());
+        _gateway = dbParams.get(ManagementServer.ControlGateway.key());
         if (_gateway == null) {
             _gateway = NetUtils.getLinkLocalGateway();
         }
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 ab88152c8f8..9b2b461cca3 100644
--- a/server/src/main/java/com/cloud/network/router/CommandSetupHelper.java
+++ b/server/src/main/java/com/cloud/network/router/CommandSetupHelper.java
@@ -75,7 +75,6 @@ import com.cloud.agent.api.to.NicTO;
 import com.cloud.agent.api.to.PortForwardingRuleTO;
 import com.cloud.agent.api.to.StaticNatRuleTO;
 import com.cloud.agent.manager.Commands;
-import com.cloud.configuration.Config;
 import com.cloud.configuration.ConfigurationManager;
 import com.cloud.dc.ASNumberVO;
 import com.cloud.dc.DataCenter;
@@ -136,6 +135,7 @@ import com.cloud.offering.NetworkOffering;
 import com.cloud.offerings.NetworkOfferingVO;
 import com.cloud.offerings.dao.NetworkOfferingDao;
 import com.cloud.offerings.dao.NetworkOfferingDetailsDao;
+import com.cloud.server.ManagementServer;
 import com.cloud.service.dao.ServiceOfferingDao;
 import com.cloud.user.Account;
 import com.cloud.uservm.UserVm;
@@ -1065,10 +1065,7 @@ public class CommandSetupHelper {
                 setIpAddressNetworkParams(ip, network, router);
                 if (router.getHypervisorType() == Hypervisor.HypervisorType.VMware) {
                     Map<String, String> details = new HashMap<>();
-                    String defaultSystemVmNicAdapterType = _configDao.getValue(Config.VmwareSystemVmNicDeviceType.key());
-                    if (defaultSystemVmNicAdapterType == null) {
-                        defaultSystemVmNicAdapterType = Config.VmwareSystemVmNicDeviceType.getDefaultValue();
-                    }
+                    String defaultSystemVmNicAdapterType = ManagementServer.VmwareSystemVmNicDeviceType.value();
                     details.put(VmDetailConstants.NIC_ADAPTER, defaultSystemVmNicAdapterType);
                     ip.setDetails(details);
                 }
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 389a1fcb0b2..1ffb9d51b4f 100644
--- a/server/src/main/java/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
+++ b/server/src/main/java/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
@@ -122,7 +122,6 @@ import com.cloud.api.query.vo.UserVmJoinVO;
 import com.cloud.bgp.BGPService;
 import com.cloud.cluster.ManagementServerHostVO;
 import com.cloud.cluster.dao.ManagementServerHostDao;
-import com.cloud.configuration.Config;
 import com.cloud.configuration.ZoneConfig;
 import com.cloud.dc.DataCenter;
 import com.cloud.dc.DataCenter.NetworkType;
@@ -1975,7 +1974,7 @@ Configurable, StateListener<VirtualMachine.State, VirtualMachine.Event, VirtualM
                     // always add management explicit route, for basic
                     // networking setup, DomR may have two interfaces while both
                     // are on the same subnet
-                    String _mgmtCidr = _configDao.getValue(Config.ManagementNetwork.key());
+                    String _mgmtCidr = ManagementServer.ManagementNetwork.value();
                     if (NetUtils.isValidIp4Cidr(_mgmtCidr)) {
                         buf.append(" mgmtcidr=").append(_mgmtCidr);
                         buf.append(" localgw=").append(dest.getPod().getGateway());
@@ -2086,7 +2085,7 @@ Configurable, StateListener<VirtualMachine.State, VirtualMachine.Event, VirtualM
             buf.append(" exposedns=true");
         }
 
-        if (Boolean.parseBoolean(_configDao.getValue(Config.BaremetalProvisionDoneNotificationEnabled.key()))) {
+        if (ManagementServer.BaremetalProvisionDoneNotificationEnabled.value()) {
             final QueryBuilder<UserVO> acntq = QueryBuilder.create(UserVO.class);
             acntq.and(acntq.entity().getUsername(), SearchCriteria.Op.EQ, "baremetal-system-account");
             final UserVO user = acntq.find();
@@ -2102,7 +2101,7 @@ Configurable, StateListener<VirtualMachine.State, VirtualMachine.Event, VirtualM
                 buf.append(String.format(" baremetalnotificationsecuritykey=%s", latestKeypair.getSecretKey()));
                 buf.append(String.format(" baremetalnotificationapikey=%s", latestKeypair.getApiKey()));
                 buf.append(" host=").append(ApiServiceConfiguration.ManagementServerAddresses.value());
-                buf.append(" port=").append(_configDao.getValue(Config.BaremetalProvisionDoneNotificationPort.key()));
+                buf.append(" port=").append(ManagementServer.BaremetalProvisionDoneNotificationPort.value());
             }
         }
 
diff --git a/server/src/main/java/com/cloud/resource/ResourceManagerImpl.java b/server/src/main/java/com/cloud/resource/ResourceManagerImpl.java
index e241339bfd6..5a9d5694aa2 100755
--- a/server/src/main/java/com/cloud/resource/ResourceManagerImpl.java
+++ b/server/src/main/java/com/cloud/resource/ResourceManagerImpl.java
@@ -108,7 +108,6 @@ import com.cloud.capacity.CapacityState;
 import com.cloud.capacity.CapacityVO;
 import com.cloud.capacity.dao.CapacityDao;
 import com.cloud.cluster.ClusterManager;
-import com.cloud.configuration.Config;
 import com.cloud.cpu.CPU;
 import com.cloud.dc.ClusterDetailsDao;
 import com.cloud.dc.ClusterDetailsVO;
@@ -178,6 +177,7 @@ import com.cloud.org.Cluster;
 import com.cloud.org.Grouping;
 import com.cloud.org.Managed;
 import com.cloud.serializer.GsonHelper;
+import com.cloud.server.ManagementServer;
 import com.cloud.server.ManagementService;
 import com.cloud.service.ServiceOfferingDetailsVO;
 import com.cloud.service.ServiceOfferingVO;
@@ -1232,7 +1232,7 @@ public class ResourceManagerImpl extends ManagerBase implements ResourceManager,
                         // If this cluster is of type vmware, and if the nexus vswitch
                         // global parameter setting is turned
                         // on, remove the row in cluster_vsm_map for this cluster id.
-                        if (hypervisorType == HypervisorType.VMware && Boolean.parseBoolean(_configDao.getValue(Config.VmwareUseNexusVSwitch.toString()))) {
+                        if (hypervisorType == HypervisorType.VMware && ManagementServer.VmwareUseNexusVSwitch.value()) {
                             _clusterVSMMapDao.removeByClusterId(cmd.getId());
                         }
                         // remove from dedicated resources
@@ -3980,7 +3980,7 @@ public class ResourceManagerImpl extends ManagerBase implements ResourceManager,
         _hostDao.loadDetails(host);
         final String password = host.getDetail("password");
         final String username = host.getDetail("username");
-        final String privateKey = _configDao.getValue("ssh.privatekey");
+        final String privateKey = ManagementServer.SshPrivateKey.value();
         if ((password == null && privateKey == null) || username == null) {
             throw new CloudRuntimeException("SSH to agent is enabled, but username and password or private key are not found");
         }
diff --git a/server/src/main/java/com/cloud/server/ConfigurationServerImpl.java b/server/src/main/java/com/cloud/server/ConfigurationServerImpl.java
index 053d2a7fdc6..15862e30e37 100644
--- a/server/src/main/java/com/cloud/server/ConfigurationServerImpl.java
+++ b/server/src/main/java/com/cloud/server/ConfigurationServerImpl.java
@@ -393,12 +393,12 @@ public class ConfigurationServerImpl extends ManagerBase implements Configuratio
             @Override
             public void doInTransactionWithoutResult(TransactionStatus status) {
                 TransactionLegacy txn = TransactionLegacy.currentTxn();
-                String pvdriverversion = Config.XenServerPVdriverVersion.getDefaultValue();
+                String pvdriverversion = ManagementServer.XenServerPVdriverVersion.defaultValue();
                 PreparedStatement pstmt = null;
                 ResultSet rs1 = null;
                 ResultSet rs2 = null;
                 try {
-                    String oldValue = _configDao.getValue(Config.XenServerPVdriverVersion.key());
+                    String oldValue = ManagementServer.XenServerPVdriverVersion.value();
                     if (oldValue == null) {
                         String sql = "select resource from host where hypervisor_type='XenServer' and removed is null and status not in ('Error', 'Removed') group by resource";
                         pstmt = txn.prepareAutoCloseStatement(sql);
@@ -416,8 +416,8 @@ public class ConfigurationServerImpl extends ManagerBase implements Configuratio
                                 break;
                             }
                         }
-                        _configDao.getValueAndInitIfNotExist(Config.XenServerPVdriverVersion.key(), Config.XenServerPVdriverVersion.getCategory(), pvdriverversion,
-                                Config.XenServerPVdriverVersion.getDescription());
+                        _configDao.getValueAndInitIfNotExist(ManagementServer.XenServerPVdriverVersion.key(), ManagementServer.XenServerPVdriverVersion.category(), pvdriverversion,
+                                ManagementServer.XenServerPVdriverVersion.description());
                         sql = "select id from vm_template where hypervisor_type='XenServer'  and format!='ISO' and removed is null";
                         pstmt = txn.prepareAutoCloseStatement(sql);
                         rs2 = pstmt.executeQuery();
@@ -926,13 +926,12 @@ public class ConfigurationServerImpl extends ManagerBase implements Configuratio
                         _zoneDao.addPrivateIpAddress(zoneId, pod.getId(), startIp, endIpFinal, false, null);
                     }
 
-                    String ipNums = _configDao.getValue("linkLocalIp.nums");
-                    int nums = Integer.parseInt(ipNums);
+                    int nums = ManagementServer.LinkLocalIpNums.value();
                     if (nums > 16 || nums <= 0) {
                         throw new InvalidParameterValueException("The linkLocalIp.nums: " + nums + "is wrong, should be 1~16");
                     }
                     /* local link ip address starts from 169.254.0.2 - 169.254.(nums) */
-                    String[] linkLocalIpRanges = NetUtils.getLinkLocalIPRange(_configDao.getValue(Config.ControlCidr.key()));
+                    String[] linkLocalIpRanges = NetUtils.getLinkLocalIPRange(ManagementServer.ControlCidr.value());
                     _zoneDao.addLinkLocalIpAddress(zoneId, pod.getId(), linkLocalIpRanges[0], linkLocalIpRanges[1]);
                 }
             });
diff --git a/server/src/main/java/com/cloud/server/ManagementServerImpl.java b/server/src/main/java/com/cloud/server/ManagementServerImpl.java
index 01d0ae4e6ee..0e15f242253 100644
--- a/server/src/main/java/com/cloud/server/ManagementServerImpl.java
+++ b/server/src/main/java/com/cloud/server/ManagementServerImpl.java
@@ -702,7 +702,6 @@ import com.cloud.capacity.dao.CapacityDaoImpl.SummedCapacity;
 import com.cloud.cluster.ClusterManager;
 import com.cloud.cluster.ManagementServerHostVO;
 import com.cloud.cluster.dao.ManagementServerHostDao;
-import com.cloud.configuration.Config;
 import com.cloud.configuration.ConfigurationManagerImpl;
 import com.cloud.consoleproxy.ConsoleProxyManagementState;
 import com.cloud.consoleproxy.ConsoleProxyManager;
@@ -1162,8 +1161,8 @@ public class ManagementServerImpl extends MutualExclusiveIdsManagerBase implemen
         }
 
         //Alerts purge configurations
-        final int alertPurgeInterval = NumbersUtil.parseInt(_configDao.getValue(Config.AlertPurgeInterval.key()), 60 * 60 * 24); // 1 day.
-        _alertPurgeDelay = NumbersUtil.parseInt(_configDao.getValue(Config.AlertPurgeDelay.key()), 0);
+        final int alertPurgeInterval = AlertPurgeInterval.value();
+        _alertPurgeDelay = AlertPurgeDelay.value();
         if (_alertPurgeDelay != 0) {
             _alertExecutor.scheduleAtFixedRate(new AlertPurgeTask(), alertPurgeInterval, alertPurgeInterval, TimeUnit.SECONDS);
         }
@@ -5122,7 +5121,7 @@ public class ManagementServerImpl extends MutualExclusiveIdsManagerBase implemen
     @Override
     public List<String> getHypervisors(final Long zoneId) {
         final List<String> result = new ArrayList<>();
-        final String hypers = _configDao.getValue(Config.HypervisorList.key());
+        final String hypers = HypervisorList.value();
         final String[] hypervisors = hypers.split(",");
 
         if (zoneId != null) {
diff --git a/server/src/main/java/com/cloud/template/TemplateAdapterBase.java b/server/src/main/java/com/cloud/template/TemplateAdapterBase.java
index a98378d0d9f..6bdac912518 100644
--- a/server/src/main/java/com/cloud/template/TemplateAdapterBase.java
+++ b/server/src/main/java/com/cloud/template/TemplateAdapterBase.java
@@ -56,7 +56,6 @@ import org.apache.commons.lang3.BooleanUtils;
 import org.apache.commons.lang3.StringUtils;
 
 import com.cloud.api.ApiDBUtils;
-import com.cloud.configuration.Config;
 import com.cloud.configuration.Resource.ResourceType;
 import com.cloud.cpu.CPU;
 import com.cloud.dc.DataCenterVO;
@@ -74,6 +73,7 @@ import com.cloud.hypervisor.Hypervisor.HypervisorType;
 import com.cloud.org.Grouping;
 import com.cloud.projects.ProjectManager;
 import com.cloud.server.ConfigurationServer;
+import com.cloud.server.ManagementServer;
 import com.cloud.server.StatsCollector;
 import com.cloud.storage.GuestOS;
 import com.cloud.storage.Storage.ImageFormat;
@@ -388,7 +388,7 @@ public abstract class TemplateAdapterBase extends AdapterBase implements Templat
         if (hypervisorType.equals(Hypervisor.HypervisorType.XenServer)) {
             if (details == null || !details.containsKey("hypervisortoolsversion") || details.get("hypervisortoolsversion") == null ||
                 ((String)details.get("hypervisortoolsversion")).equalsIgnoreCase("none")) {
-                String hpvs = _configDao.getValue(Config.XenServerPVdriverVersion.key());
+                String hpvs = ManagementServer.XenServerPVdriverVersion.value();
                 if (hpvs != null) {
                     if (details == null) {
                         details = new HashMap<String, String>();
diff --git a/server/src/main/java/com/cloud/user/AccountManagerImpl.java b/server/src/main/java/com/cloud/user/AccountManagerImpl.java
index 9142af6bdb7..1e9aedae5de 100644
--- a/server/src/main/java/com/cloud/user/AccountManagerImpl.java
+++ b/server/src/main/java/com/cloud/user/AccountManagerImpl.java
@@ -132,7 +132,6 @@ import org.springframework.beans.factory.NoSuchBeanDefinitionException;
 import com.cloud.api.ApiDBUtils;
 import com.cloud.api.auth.SetupUserTwoFactorAuthenticationCmd;
 import com.cloud.api.query.vo.ControlledViewEntity;
-import com.cloud.configuration.Config;
 import com.cloud.configuration.ConfigurationManager;
 import com.cloud.configuration.Resource.ResourceOwnerType;
 import com.cloud.configuration.ResourceCountVO;
@@ -199,6 +198,7 @@ import com.cloud.projects.ProjectVO;
 import com.cloud.projects.dao.ProjectAccountDao;
 import com.cloud.projects.dao.ProjectDao;
 import com.cloud.region.ha.GlobalLoadBalancingRulesService;
+import com.cloud.server.ManagementServer;
 import com.cloud.storage.VMTemplateVO;
 import com.cloud.storage.VolumeApiService;
 import com.cloud.storage.VolumeVO;
@@ -3499,7 +3499,7 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M
         }
 
         if ((BaremetalUtils.BAREMETAL_SYSTEM_ACCOUNT_NAME.equals(user.getUsername()) || user.getId() == User.UID_SYSTEM)
-                && Boolean.parseBoolean(_configDao.getValue(Config.BaremetalProvisionDoneNotificationEnabled.key()))) {
+                && ManagementServer.BaremetalProvisionDoneNotificationEnabled.value()) {
             throw new PermissionDeniedException(String.format("User ID [%s] is a system account and the global setting " +
                     "baremetal.provision.done.notification is enabled. Therefore, it is not possible to delete API key pairs. If you wish to delete " +
                     "the baremetal user/account or their API Key, please disable the baremetal.provision.done.notification configuration.", user.getUuid()));
diff --git a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java
index f4efdba9e69..41833871a14 100644
--- a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java
+++ b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java
@@ -215,7 +215,6 @@ import com.cloud.api.query.dao.ServiceOfferingJoinDao;
 import com.cloud.api.query.vo.ServiceOfferingJoinVO;
 import com.cloud.capacity.Capacity;
 import com.cloud.capacity.CapacityManager;
-import com.cloud.configuration.Config;
 import com.cloud.configuration.ConfigurationManager;
 import com.cloud.configuration.ConfigurationManagerImpl;
 import com.cloud.configuration.Resource.ResourceType;
@@ -330,6 +329,7 @@ import com.cloud.resource.ResourceState;
 import com.cloud.resourcelimit.CheckedReservation;
 import com.cloud.serializer.GsonHelper;
 import com.cloud.resourcelimit.ReservationHelper;
+import com.cloud.server.ManagementServer;
 import com.cloud.server.ManagementService;
 import com.cloud.server.ResourceTag;
 import com.cloud.service.ServiceOfferingVO;
@@ -5288,8 +5288,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
 
             // Don't override if VM already has root/data disk controller detail
             if (vm.getDetail(VmDetailConstants.ROOT_DISK_CONTROLLER) == null) {
-                String vmwareRootDiskControllerTypeFromSetting = StringUtils.defaultIfEmpty(_configDao.getValue(Config.VmwareRootDiskControllerType.key()),
-                        Config.VmwareRootDiskControllerType.getDefaultValue());
+                String vmwareRootDiskControllerTypeFromSetting = ManagementServer.VmwareRootDiskControllerType.value();
                 vm.setDetail(VmDetailConstants.ROOT_DISK_CONTROLLER, vmwareRootDiskControllerTypeFromSetting);
             }
 
@@ -5646,7 +5645,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
             }
 
             if (nic.getTrafficType() == TrafficType.Management) {
-                String mgmt_cidr = _configDao.getValue(Config.ManagementNetwork.key());
+                String mgmt_cidr = ManagementServer.ManagementNetwork.value();
                 if (NetUtils.isValidIp4Cidr(mgmt_cidr)) {
                     buf.append(" mgmtcidr=").append(mgmt_cidr);
                 }
diff --git a/server/src/main/java/org/apache/cloudstack/region/gslb/GlobalLoadBalancingRulesServiceImpl.java b/server/src/main/java/org/apache/cloudstack/region/gslb/GlobalLoadBalancingRulesServiceImpl.java
index 926ac72e6b0..c4e09c74348 100644
--- a/server/src/main/java/org/apache/cloudstack/region/gslb/GlobalLoadBalancingRulesServiceImpl.java
+++ b/server/src/main/java/org/apache/cloudstack/region/gslb/GlobalLoadBalancingRulesServiceImpl.java
@@ -43,7 +43,6 @@ import org.apache.logging.log4j.LogManager;
 import com.cloud.agent.AgentManager;
 import com.cloud.agent.api.routing.GlobalLoadBalancerConfigCommand;
 import com.cloud.agent.api.routing.SiteLoadBalancerConfig;
-import com.cloud.configuration.Config;
 import com.cloud.event.ActionEvent;
 import com.cloud.event.EventTypes;
 import com.cloud.event.UsageEventUtils;
@@ -59,6 +58,7 @@ import com.cloud.network.rules.LoadBalancer;
 import com.cloud.network.rules.RulesManager;
 import com.cloud.region.ha.GlobalLoadBalancerRule;
 import com.cloud.region.ha.GlobalLoadBalancingRulesService;
+import com.cloud.server.ManagementServer;
 import com.cloud.user.Account;
 import com.cloud.user.AccountManager;
 import com.cloud.utils.Pair;
@@ -144,7 +144,7 @@ public class GlobalLoadBalancingRulesServiceImpl implements GlobalLoadBalancingR
             throw new InvalidParameterValueException("Invalid region ID: " + regionId);
         }
 
-        String providerDnsName = _globalConfigDao.getValue(Config.CloudDnsName.key());
+        String providerDnsName = ManagementServer.CloudDnsName.value();
         if (!region.checkIfServiceEnabled(Region.Service.Gslb) || (providerDnsName == null)) {
             throw new CloudRuntimeException("GSLB service is not enabled in region : " + region.getName());
         }
@@ -626,7 +626,7 @@ public class GlobalLoadBalancingRulesServiceImpl implements GlobalLoadBalancingR
         // each Gslb rule will have a FQDN, formed from the domain name associated with the gslb rule
         // and the deployment DNS name configured in global config parameter 'cloud.dns.name'
         String domainName = gslbRule.getGslbDomain();
-        String providerDnsName = _globalConfigDao.getValue(Config.CloudDnsName.key());
+        String providerDnsName = ManagementServer.CloudDnsName.value();
         String gslbFqdn = domainName + "." + providerDnsName;
 
         GlobalLoadBalancerConfigCommand gslbConfigCmd = new GlobalLoadBalancerConfigCommand(gslbFqdn, lbMethod, persistenceMethod, serviceType, gslbRuleId, revoke);
diff --git a/server/src/test/java/com/cloud/configuration/ConfigurationManagerTest.java b/server/src/test/java/com/cloud/configuration/ConfigurationManagerTest.java
index 8873d58de60..d36d36b0560 100644
--- a/server/src/test/java/com/cloud/configuration/ConfigurationManagerTest.java
+++ b/server/src/test/java/com/cloud/configuration/ConfigurationManagerTest.java
@@ -61,6 +61,7 @@ import com.cloud.network.dao.PhysicalNetworkDao;
 import com.cloud.network.dao.PhysicalNetworkVO;
 import com.cloud.offering.DiskOffering;
 import com.cloud.projects.ProjectManager;
+import com.cloud.server.ManagementServer;
 import com.cloud.storage.DiskOfferingVO;
 import com.cloud.storage.StoragePoolTagVO;
 import com.cloud.storage.VolumeVO;
@@ -1425,7 +1426,7 @@ public class ConfigurationManagerTest {
         Mockito.when(zone.getType()).thenReturn(DataCenter.Type.Edge);
         Mockito.when(zone.getId()).thenReturn(1L);
         Mockito.when(_zoneDao.findById(Mockito.anyLong())).thenReturn(zone);
-        Mockito.when(_configDao.getValue(Config.ControlCidr.key())).thenReturn(Config.ControlCidr.getDefaultValue());
+        Mockito.when(_configDao.getValue(ManagementServer.ControlCidr.key())).thenReturn(ManagementServer.ControlCidr.defaultValue());
         Mockito.when(_podDao.persist(Mockito.any(HostPodVO.class))).thenAnswer((Answer<HostPodVO>) invocation -> {
             HostPodVO pod = (HostPodVO)invocation.getArguments()[0];
             ReflectionTestUtils.setField(pod, "uuid", UUID.randomUUID().toString());
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 61f1ab4fe73..4dce075c89d 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
@@ -74,7 +74,6 @@ import com.cloud.agent.api.to.NfsTO;
 import com.cloud.agent.manager.Commands;
 import com.cloud.capacity.dao.CapacityDao;
 import com.cloud.cluster.ClusterManager;
-import com.cloud.configuration.Config;
 import com.cloud.configuration.ConfigurationManagerImpl;
 import com.cloud.configuration.ZoneConfig;
 import com.cloud.consoleproxy.ConsoleProxyManager;
@@ -1200,7 +1199,7 @@ public class SecondaryStorageManagerImpl extends ManagerBase implements Secondar
                 buf.append(" gateway=").append(nic.getIPv4Gateway());
             }
             if (nic.getTrafficType() == TrafficType.Management) {
-                String mgmt_cidr = _configDao.getValue(Config.ManagementNetwork.key());
+                String mgmt_cidr = ManagementServer.ManagementNetwork.value();
                 if (NetUtils.isValidCidrList(mgmt_cidr)) {
                     logger.debug("Management server cidr list is " + mgmt_cidr);
                     buf.append(" mgmtcidr=").append(mgmt_cidr);