diff --git a/engine/storage/snapshot/src/main/java/org/apache/cloudstack/storage/vmsnapshot/DefaultVMSnapshotStrategy.java b/engine/storage/snapshot/src/main/java/org/apache/cloudstack/storage/vmsnapshot/DefaultVMSnapshotStrategy.java index 665c3a4659ca..fee98ee8536c 100644 --- a/engine/storage/snapshot/src/main/java/org/apache/cloudstack/storage/vmsnapshot/DefaultVMSnapshotStrategy.java +++ b/engine/storage/snapshot/src/main/java/org/apache/cloudstack/storage/vmsnapshot/DefaultVMSnapshotStrategy.java @@ -38,7 +38,6 @@ import org.apache.cloudstack.engine.subsystem.api.storage.StrategyPriority; import org.apache.cloudstack.engine.subsystem.api.storage.VMSnapshotOptions; import org.apache.cloudstack.engine.subsystem.api.storage.VMSnapshotStrategy; -import org.apache.cloudstack.framework.config.dao.ConfigurationDao; import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao; import org.apache.cloudstack.storage.to.VolumeObjectTO; import org.apache.commons.collections4.CollectionUtils; @@ -71,7 +70,6 @@ import com.cloud.storage.dao.GuestOSHypervisorDao; import com.cloud.storage.dao.VolumeDao; import com.cloud.uservm.UserVm; -import com.cloud.utils.NumbersUtil; import com.cloud.utils.component.ManagerBase; import com.cloud.utils.db.DB; import com.cloud.utils.db.Transaction; @@ -83,6 +81,7 @@ import com.cloud.vm.VirtualMachine.State; import com.cloud.vm.dao.UserVmDao; import com.cloud.vm.snapshot.VMSnapshot; +import com.cloud.vm.snapshot.VMSnapshotManager; import com.cloud.vm.snapshot.VMSnapshotVO; import com.cloud.vm.snapshot.dao.VMSnapshotDao; @@ -99,8 +98,6 @@ public class DefaultVMSnapshotStrategy extends ManagerBase implements VMSnapshot VMSnapshotDao vmSnapshotDao; int _wait; @Inject - ConfigurationDao configurationDao; - @Inject AgentManager agentMgr; @Inject VolumeDao volumeDao; @@ -129,8 +126,7 @@ public class DefaultVMSnapshotStrategy extends ManagerBase implements VMSnapshot @Override public boolean configure(String name, Map params) throws ConfigurationException { - String value = configurationDao.getValue("vmsnapshot.create.wait"); - _wait = NumbersUtil.parseInt(value, 1800); + _wait = VMSnapshotManager.VMSnapshotCreateWait.value(); return true; } diff --git a/engine/storage/snapshot/src/main/java/org/apache/cloudstack/storage/vmsnapshot/ScaleIOVMSnapshotStrategy.java b/engine/storage/snapshot/src/main/java/org/apache/cloudstack/storage/vmsnapshot/ScaleIOVMSnapshotStrategy.java index a18d65748cf1..9c39c7de84c5 100644 --- a/engine/storage/snapshot/src/main/java/org/apache/cloudstack/storage/vmsnapshot/ScaleIOVMSnapshotStrategy.java +++ b/engine/storage/snapshot/src/main/java/org/apache/cloudstack/storage/vmsnapshot/ScaleIOVMSnapshotStrategy.java @@ -29,7 +29,6 @@ import com.cloud.storage.StoragePool; import org.apache.cloudstack.engine.subsystem.api.storage.StrategyPriority; import org.apache.cloudstack.engine.subsystem.api.storage.VMSnapshotStrategy; -import org.apache.cloudstack.framework.config.dao.ConfigurationDao; import org.apache.cloudstack.storage.datastore.api.SnapshotGroup; import org.apache.cloudstack.storage.datastore.client.ScaleIOGatewayClient; import org.apache.cloudstack.storage.datastore.client.ScaleIOGatewayClientConnectionPool; @@ -55,7 +54,6 @@ import com.cloud.storage.dao.DiskOfferingDao; import com.cloud.storage.dao.VolumeDao; import com.cloud.uservm.UserVm; -import com.cloud.utils.NumbersUtil; import com.cloud.utils.component.ManagerBase; import com.cloud.utils.db.DB; import com.cloud.utils.db.Transaction; @@ -66,6 +64,7 @@ import com.cloud.vm.UserVmVO; import com.cloud.vm.dao.UserVmDao; import com.cloud.vm.snapshot.VMSnapshot; +import com.cloud.vm.snapshot.VMSnapshotManager; import com.cloud.vm.snapshot.VMSnapshotDetailsVO; import com.cloud.vm.snapshot.VMSnapshotVO; import com.cloud.vm.snapshot.dao.VMSnapshotDao; @@ -82,8 +81,6 @@ public class ScaleIOVMSnapshotStrategy extends ManagerBase implements VMSnapshot protected VMSnapshotDetailsDao vmSnapshotDetailsDao; int _wait; @Inject - ConfigurationDao configurationDao; - @Inject VolumeDao volumeDao; @Inject DiskOfferingDao diskOfferingDao; @@ -96,8 +93,7 @@ public class ScaleIOVMSnapshotStrategy extends ManagerBase implements VMSnapshot @Override public boolean configure(String name, Map params) throws ConfigurationException { - String value = configurationDao.getValue("vmsnapshot.create.wait"); - _wait = NumbersUtil.parseInt(value, 1800); + _wait = VMSnapshotManager.VMSnapshotCreateWait.value(); return true; } diff --git a/engine/storage/src/main/java/org/apache/cloudstack/storage/helper/HypervisorHelperImpl.java b/engine/storage/src/main/java/org/apache/cloudstack/storage/helper/HypervisorHelperImpl.java index 10af5d55d619..f65a97988785 100644 --- a/engine/storage/src/main/java/org/apache/cloudstack/storage/helper/HypervisorHelperImpl.java +++ b/engine/storage/src/main/java/org/apache/cloudstack/storage/helper/HypervisorHelperImpl.java @@ -29,7 +29,6 @@ import org.apache.cloudstack.engine.subsystem.api.storage.EndPoint; import org.apache.cloudstack.engine.subsystem.api.storage.EndPointSelector; import org.apache.cloudstack.engine.subsystem.api.storage.Scope; -import org.apache.cloudstack.framework.config.dao.ConfigurationDao; import org.apache.cloudstack.storage.command.ForgetObjectCmd; import org.apache.cloudstack.storage.command.IntroduceObjectAnswer; import org.apache.cloudstack.storage.command.IntroduceObjectCmd; @@ -51,10 +50,10 @@ import com.cloud.storage.GuestOSVO; import com.cloud.storage.dao.GuestOSDao; import com.cloud.storage.dao.GuestOSHypervisorDao; -import com.cloud.utils.NumbersUtil; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.vm.VirtualMachine; import com.cloud.vm.snapshot.VMSnapshot; +import com.cloud.vm.snapshot.VMSnapshotManager; public class HypervisorHelperImpl implements HypervisorHelper { protected Logger logger = LogManager.getLogger(getClass()); @@ -67,8 +66,6 @@ public class HypervisorHelperImpl implements HypervisorHelper { @Inject GuestOSHypervisorDao guestOsHypervisorDao; @Inject - ConfigurationDao configurationDao; - @Inject AgentManager agentMgr; @Inject HostDao hostDao; @@ -117,8 +114,7 @@ public boolean forgetObject(DataTO object, Scope scope, Long storeId) { @Override public VMSnapshotTO quiesceVm(VirtualMachine virtualMachine) { - String value = configurationDao.getValue("vmsnapshot.create.wait"); - int wait = NumbersUtil.parseInt(value, 1800); + int wait = VMSnapshotManager.VMSnapshotCreateWait.value(); Long hostId = vmSnapshotHelper.pickRunningHost(virtualMachine.getId()); VMSnapshotTO vmSnapshotTO = new VMSnapshotTO(1L, UUID.randomUUID().toString(), VMSnapshot.Type.Disk, null, null, false, null, true); diff --git a/framework/quota/src/main/java/org/apache/cloudstack/quota/QuotaManagerImpl.java b/framework/quota/src/main/java/org/apache/cloudstack/quota/QuotaManagerImpl.java index 01bb9bc7e7a0..a84cca41509d 100644 --- a/framework/quota/src/main/java/org/apache/cloudstack/quota/QuotaManagerImpl.java +++ b/framework/quota/src/main/java/org/apache/cloudstack/quota/QuotaManagerImpl.java @@ -54,6 +54,7 @@ import org.apache.cloudstack.quota.vo.QuotaTariffUsageVO; import org.apache.cloudstack.quota.vo.QuotaTariffVO; import org.apache.cloudstack.quota.vo.QuotaUsageVO; +import org.apache.cloudstack.usage.UsageService; import org.apache.cloudstack.usage.UsageTypes; import org.apache.cloudstack.usage.UsageUnitTypes; import org.apache.cloudstack.utils.bytescale.ByteScaleUtils; @@ -124,7 +125,8 @@ public boolean configure(String name, Map params) throws Configu mergeConfigs(configs, params); } - String usageAggregationTimeZoneStr = ObjectUtils.defaultIfNull(configs.get("usage.aggregation.timezone"), "GMT"); + // also runs in the usage server, which has no ConfigDepot: read the value from the DB map + String usageAggregationTimeZoneStr = ObjectUtils.defaultIfNull(configs.get(UsageService.UsageAggregationTimezone.key()), "GMT"); usageAggregationTimeZone = TimeZone.getTimeZone(usageAggregationTimeZoneStr); return true; diff --git a/plugins/database/quota/src/main/java/org/apache/cloudstack/quota/QuotaServiceImpl.java b/plugins/database/quota/src/main/java/org/apache/cloudstack/quota/QuotaServiceImpl.java index a788f0c8b01e..7a0ff05138b1 100644 --- a/plugins/database/quota/src/main/java/org/apache/cloudstack/quota/QuotaServiceImpl.java +++ b/plugins/database/quota/src/main/java/org/apache/cloudstack/quota/QuotaServiceImpl.java @@ -59,11 +59,11 @@ import org.apache.cloudstack.quota.vo.QuotaAccountVO; import org.apache.cloudstack.quota.vo.QuotaBalanceVO; import org.apache.cloudstack.quota.vo.QuotaUsageJoinVO; +import org.apache.cloudstack.usage.UsageService; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.time.DateUtils; import org.springframework.stereotype.Component; -import com.cloud.configuration.Config; import com.cloud.domain.dao.DomainDao; import com.cloud.exception.InvalidParameterValueException; import com.cloud.user.Account; @@ -103,7 +103,7 @@ public QuotaServiceImpl() { public boolean configure(String name, Map params) throws ConfigurationException { super.configure(name, params); - String timeZoneStr = ObjectUtils.defaultIfNull(_configDao.getValue(Config.UsageAggregationTimezone.toString()), "GMT"); + String timeZoneStr = ObjectUtils.defaultIfNull(UsageService.UsageAggregationTimezone.value(), "GMT"); _usageTimezone = TimeZone.getTimeZone(timeZoneStr); return true; diff --git a/plugins/database/quota/src/test/java/org/apache/cloudstack/quota/QuotaServiceImplTest.java b/plugins/database/quota/src/test/java/org/apache/cloudstack/quota/QuotaServiceImplTest.java index c0ee6c5fc3fe..9126c36a203e 100644 --- a/plugins/database/quota/src/test/java/org/apache/cloudstack/quota/QuotaServiceImplTest.java +++ b/plugins/database/quota/src/test/java/org/apache/cloudstack/quota/QuotaServiceImplTest.java @@ -16,7 +16,6 @@ // under the License. package org.apache.cloudstack.quota; -import com.cloud.configuration.Config; import com.cloud.domain.dao.DomainDao; import com.cloud.exception.InvalidParameterValueException; import com.cloud.user.AccountVO; @@ -109,7 +108,6 @@ public void setup() throws IllegalAccessException, NoSuchFieldException, Configu QuotaResponseBuilderField.setAccessible(true); QuotaResponseBuilderField.set(quotaServiceImplSpy, respBldr); - Mockito.when(configDao.getValue(Mockito.eq(Config.UsageAggregationTimezone.toString()))).thenReturn("IST"); quotaServiceImplSpy.configure("randomName", null); } diff --git a/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java b/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java index c68dc390df2a..2d8bddb0c54a 100644 --- a/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java +++ b/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java @@ -294,6 +294,7 @@ import com.cloud.storage.dao.StoragePoolTagsDao; import com.cloud.storage.dao.VMTemplateZoneDao; import com.cloud.storage.dao.VolumeDao; +import com.cloud.storage.snapshot.SnapshotManager; import com.cloud.test.IPRangeConfig; import com.cloud.user.Account; import com.cloud.user.AccountDetailVO; @@ -606,7 +607,7 @@ protected void populateConfigValuesForValidationSet() { configValuesForValidation.add("host.stats.interval"); configValuesForValidation.add("network.gc.interval"); configValuesForValidation.add("ping.interval"); - configValuesForValidation.add("snapshot.poll.interval"); + configValuesForValidation.add(SnapshotManager.SnapshotPollInterval.key()); configValuesForValidation.add("storage.stats.interval"); configValuesForValidation.add("storage.cleanup.interval"); configValuesForValidation.add("wait"); diff --git a/server/src/main/java/com/cloud/ha/HighAvailabilityManagerExtImpl.java b/server/src/main/java/com/cloud/ha/HighAvailabilityManagerExtImpl.java index 6765992ec276..56bcdd338706 100644 --- a/server/src/main/java/com/cloud/ha/HighAvailabilityManagerExtImpl.java +++ b/server/src/main/java/com/cloud/ha/HighAvailabilityManagerExtImpl.java @@ -23,8 +23,8 @@ import javax.inject.Inject; import javax.naming.ConfigurationException; -import org.apache.cloudstack.framework.config.dao.ConfigurationDao; import org.apache.cloudstack.managed.context.ManagedContextRunnable; +import org.apache.cloudstack.usage.UsageService; import com.cloud.alert.AlertManager; import com.cloud.usage.dao.UsageJobDao; @@ -35,9 +35,6 @@ public class HighAvailabilityManagerExtImpl extends HighAvailabilityManagerImpl @Inject UsageJobDao _usageJobDao; - @Inject - ConfigurationDao configDao; - @Override public boolean configure(final String name, final Map xmlParams) throws ConfigurationException { super.configure(name, xmlParams); @@ -48,7 +45,7 @@ public boolean configure(final String name, final Map xmlParams) public boolean start() { super.start(); - boolean enableUsage = new Boolean(configDao.getValue("enable.usage.server")); + boolean enableUsage = UsageService.EnableUsageServer.value(); //By default, usage is enabled for production //Devs might override this value to disable usage in their setup diff --git a/server/src/main/java/com/cloud/network/NetworkUsageManagerImpl.java b/server/src/main/java/com/cloud/network/NetworkUsageManagerImpl.java index ac1133c734af..81da8cf1da4c 100644 --- a/server/src/main/java/com/cloud/network/NetworkUsageManagerImpl.java +++ b/server/src/main/java/com/cloud/network/NetworkUsageManagerImpl.java @@ -49,7 +49,6 @@ import com.cloud.agent.api.StartupCommand; import com.cloud.agent.api.StartupTrafficMonitorCommand; import com.cloud.agent.manager.Commands; -import com.cloud.configuration.Config; import com.cloud.dc.DataCenterVO; import com.cloud.dc.dao.DataCenterDao; import com.cloud.event.EventTypes; @@ -78,7 +77,6 @@ import com.cloud.user.AccountManager; import com.cloud.user.UserStatisticsVO; import com.cloud.user.dao.UserStatisticsDao; -import com.cloud.utils.NumbersUtil; import com.cloud.utils.component.ManagerBase; import com.cloud.utils.db.DB; import com.cloud.utils.db.GlobalLock; @@ -222,9 +220,9 @@ public boolean configure(String name, Map params) throws Configu AllocatedIpSearch.join("network", networkJoin, AllocatedIpSearch.entity().getSourceNetworkId(), networkJoin.entity().getId(), JoinBuilder.JoinType.INNER); AllocatedIpSearch.done(); - _networkStatsInterval = NumbersUtil.parseInt(_configDao.getValue(Config.DirectNetworkStatsInterval.key()), 86400); - _TSinclZones = _configDao.getValue(Config.TrafficSentinelIncludeZones.key()); - _TSexclZones = _configDao.getValue(Config.TrafficSentinelExcludeZones.key()); + _networkStatsInterval = DirectNetworkStatsInterval.value(); + _TSinclZones = TrafficSentinelIncludeZones.value(); + _TSexclZones = TrafficSentinelExcludeZones.value(); _agentMgr.registerForHostEvents(new DirectNetworkStatsListener(_networkStatsInterval), true, false, false); _resourceMgr.registerResourceStateAdapter(this.getClass().getSimpleName(), this); return true; 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 de793b5e6106..edcaa84de3f0 100644 --- a/server/src/main/java/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java +++ b/server/src/main/java/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java @@ -74,6 +74,7 @@ import org.apache.cloudstack.network.RoutedIpv4Manager; import org.apache.cloudstack.network.topology.NetworkTopology; import org.apache.cloudstack.network.topology.NetworkTopologyContext; +import org.apache.cloudstack.usage.UsageService; import org.apache.cloudstack.userdata.UserDataManager; import org.apache.cloudstack.utils.CloudStackVersion; import org.apache.cloudstack.utils.identity.ManagementServerNode; @@ -599,9 +600,8 @@ public boolean configure(final String name, final Map params) th NetworkHelperImpl.setSystemAccount(_accountMgr.getSystemAccount()); - final String aggregationRange = configs.get("usage.stats.job.aggregation.range"); - _usageAggregationRange = NumbersUtil.parseInt(aggregationRange, 1440); - _usageTimeZone = configs.get("usage.aggregation.timezone"); + _usageAggregationRange = UsageService.UsageStatsJobAggregationRange.value(); + _usageTimeZone = UsageService.UsageAggregationTimezone.value(); if (_usageTimeZone == null) { _usageTimeZone = "GMT"; } diff --git a/server/src/main/java/com/cloud/server/StatsCollector.java b/server/src/main/java/com/cloud/server/StatsCollector.java index f4ad46272f20..16f49728a2c8 100644 --- a/server/src/main/java/com/cloud/server/StatsCollector.java +++ b/server/src/main/java/com/cloud/server/StatsCollector.java @@ -60,6 +60,7 @@ import org.apache.cloudstack.network.RoutedIpv4Manager; import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao; import org.apache.cloudstack.storage.datastore.db.StoragePoolVO; +import org.apache.cloudstack.usage.UsageService; import org.apache.cloudstack.utils.bytescale.ByteScaleUtils; import org.apache.cloudstack.utils.graphite.GraphiteClient; import org.apache.cloudstack.utils.graphite.GraphiteException; @@ -562,9 +563,8 @@ protected void init(Map configs) { //Schedule disk stats update task _diskStatsUpdateExecutor = Executors.newScheduledThreadPool(1, new NamedThreadFactory("DiskStatsUpdater")); - String aggregationRange = configs.get("usage.stats.job.aggregation.range"); - _usageAggregationRange = NumbersUtil.parseInt(aggregationRange, 1440); - _usageTimeZone = configs.get("usage.aggregation.timezone"); + _usageAggregationRange = UsageService.UsageStatsJobAggregationRange.value(); + _usageTimeZone = UsageService.UsageAggregationTimezone.value(); if (_usageTimeZone == null) { _usageTimeZone = "GMT"; } diff --git a/server/src/main/java/com/cloud/storage/snapshot/SnapshotSchedulerImpl.java b/server/src/main/java/com/cloud/storage/snapshot/SnapshotSchedulerImpl.java index ddaa96100bd1..8895d8be3a77 100644 --- a/server/src/main/java/com/cloud/storage/snapshot/SnapshotSchedulerImpl.java +++ b/server/src/main/java/com/cloud/storage/snapshot/SnapshotSchedulerImpl.java @@ -30,7 +30,7 @@ import org.apache.cloudstack.api.ApiCommandResourceType; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.command.user.snapshot.CreateSnapshotCmd; -import org.apache.cloudstack.framework.config.dao.ConfigurationDao; +import org.apache.cloudstack.framework.config.ConfigKey; import org.apache.cloudstack.framework.jobs.AsyncJobDispatcher; import org.apache.cloudstack.framework.jobs.AsyncJobManager; import org.apache.cloudstack.framework.jobs.dao.AsyncJobDao; @@ -58,7 +58,6 @@ import com.cloud.user.dao.AccountDao; import com.cloud.utils.DateUtil; import com.cloud.utils.DateUtil.IntervalType; -import com.cloud.utils.NumbersUtil; import com.cloud.utils.component.ComponentContext; import com.cloud.utils.component.ManagerBase; import com.cloud.utils.concurrency.TestClock; @@ -85,9 +84,23 @@ public class SnapshotSchedulerImpl extends ManagerBase implements SnapshotSchedu @Inject protected VolumeDao _volsDao; @Inject - protected ConfigurationDao _configDao; - @Inject protected ApiDispatcher _dispatcher; + + // QA-only test hook: lets snapshots be scheduled on an accelerated, admin-configured clock instead of a real calendar. + private static final ConfigKey SnapshotRecurringTest = new ConfigKey<>("Advanced", Boolean.class, "snapshot.recurring.test", "false", + "Enable accelerated snapshot recurrence for testing purposes.", true); + private static final ConfigKey SnapshotTestMinutesPerHour = new ConfigKey<>("Advanced", Integer.class, "snapshot.test.minutes.per.hour", "60", + "Minutes per simulated hour when snapshot.recurring.test is enabled.", true); + private static final ConfigKey SnapshotTestHoursPerDay = new ConfigKey<>("Advanced", Integer.class, "snapshot.test.hours.per.day", "24", + "Hours per simulated day when snapshot.recurring.test is enabled.", true); + private static final ConfigKey SnapshotTestDaysPerWeek = new ConfigKey<>("Advanced", Integer.class, "snapshot.test.days.per.week", "7", + "Days per simulated week when snapshot.recurring.test is enabled.", true); + private static final ConfigKey SnapshotTestDaysPerMonth = new ConfigKey<>("Advanced", Integer.class, "snapshot.test.days.per.month", "30", + "Days per simulated month when snapshot.recurring.test is enabled.", true); + private static final ConfigKey SnapshotTestWeeksPerMonth = new ConfigKey<>("Advanced", Integer.class, "snapshot.test.weeks.per.month", "4", + "Weeks per simulated month when snapshot.recurring.test is enabled.", true); + private static final ConfigKey SnapshotTestMonthsPerYear = new ConfigKey<>("Advanced", Integer.class, "snapshot.test.months.per.year", "12", + "Months per simulated year when snapshot.recurring.test is enabled.", true); @Inject protected AccountDao _acctDao; @Inject @@ -446,16 +459,16 @@ public boolean removeSchedule(final Long volumeId, final Long policyId) { @Override public boolean configure(final String name, final Map params) throws ConfigurationException { - _snapshotPollInterval = NumbersUtil.parseInt(_configDao.getValue("snapshot.poll.interval"), 300); - final boolean snapshotsRecurringTest = Boolean.parseBoolean(_configDao.getValue("snapshot.recurring.test")); + _snapshotPollInterval = SnapshotManager.SnapshotPollInterval.value(); + final boolean snapshotsRecurringTest = SnapshotRecurringTest.value(); if (snapshotsRecurringTest) { // look for some test values in the configuration table so that snapshots can be taken more frequently (QA test code) - final int minutesPerHour = NumbersUtil.parseInt(_configDao.getValue("snapshot.test.minutes.per.hour"), 60); - final int hoursPerDay = NumbersUtil.parseInt(_configDao.getValue("snapshot.test.hours.per.day"), 24); - final int daysPerWeek = NumbersUtil.parseInt(_configDao.getValue("snapshot.test.days.per.week"), 7); - final int daysPerMonth = NumbersUtil.parseInt(_configDao.getValue("snapshot.test.days.per.month"), 30); - final int weeksPerMonth = NumbersUtil.parseInt(_configDao.getValue("snapshot.test.weeks.per.month"), 4); - final int monthsPerYear = NumbersUtil.parseInt(_configDao.getValue("snapshot.test.months.per.year"), 12); + final int minutesPerHour = SnapshotTestMinutesPerHour.value(); + final int hoursPerDay = SnapshotTestHoursPerDay.value(); + final int daysPerWeek = SnapshotTestDaysPerWeek.value(); + final int daysPerMonth = SnapshotTestDaysPerMonth.value(); + final int weeksPerMonth = SnapshotTestWeeksPerMonth.value(); + final int monthsPerYear = SnapshotTestMonthsPerYear.value(); _testTimerTask = new TestClock(this, minutesPerHour, hoursPerDay, daysPerWeek, daysPerMonth, weeksPerMonth, monthsPerYear); } diff --git a/server/src/main/java/com/cloud/usage/UsageServiceImpl.java b/server/src/main/java/com/cloud/usage/UsageServiceImpl.java index d0a4a0bac8ba..9bc91f5704f3 100644 --- a/server/src/main/java/com/cloud/usage/UsageServiceImpl.java +++ b/server/src/main/java/com/cloud/usage/UsageServiceImpl.java @@ -42,7 +42,6 @@ import org.jetbrains.annotations.NotNull; import org.springframework.stereotype.Component; -import com.cloud.configuration.Config; import com.cloud.domain.Domain; import com.cloud.domain.DomainVO; import com.cloud.domain.dao.DomainDao; @@ -140,10 +139,10 @@ public UsageServiceImpl() { public boolean configure(String name, Map params) throws ConfigurationException { super.configure(name, params); - String timeZoneStr = ObjectUtils.defaultIfNull(_configDao.getValue(Config.UsageAggregationTimezone.toString()), "GMT"); + String timeZoneStr = ObjectUtils.defaultIfNull(UsageAggregationTimezone.value(), "GMT"); _usageTimezone = TimeZone.getTimeZone(timeZoneStr); - String executionTimeZone = _configDao.getValue(Config.UsageExecutionTimezone.toString()); + String executionTimeZone = UsageExecutionTimezone.value(); if (executionTimeZone != null) { usageExecutionTimeZone = TimeZone.getTimeZone(executionTimeZone); } @@ -482,7 +481,7 @@ public boolean removeRawUsageRecords(RemoveRawUsageRecordsCmd cmd) throws Invali throw new InvalidParameterValueException("Interval should be greater than 0."); } - String jobExecTime = _configDao.getValue(Config.UsageStatsJobExecTime.toString()); + String jobExecTime = UsageStatsJobExecTime.value(); Date previousJobExecTime = UsageUtils.getPreviousJobExecutionTime(usageExecutionTimeZone, jobExecTime); Date nextJobExecTime = UsageUtils.getNextJobExecutionTime(usageExecutionTimeZone, jobExecTime); if (ObjectUtils.allNotNull(previousJobExecTime, nextJobExecTime)) { diff --git a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java index bd9c3b9fcb82..e0aacda6eff8 100644 --- a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java +++ b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java @@ -160,6 +160,7 @@ import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreDao; import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreVO; import org.apache.cloudstack.storage.template.VnfTemplateManager; +import org.apache.cloudstack.usage.UsageService; import org.apache.cloudstack.userdata.UserDataManager; import org.apache.cloudstack.utils.bytescale.ByteScaleUtils; import org.apache.cloudstack.utils.security.ParserUtils; @@ -2615,8 +2616,7 @@ public boolean configure(String name, Map params) throws Configu _vmIpFetchExecutor = Executors.newScheduledThreadPool(vmipwrks, new NamedThreadFactory("UserVm-ipfetch")); - String aggregationRange = configs.get("usage.stats.job.aggregation.range"); - int _usageAggregationRange = NumbersUtil.parseInt(aggregationRange, 1440); + int _usageAggregationRange = UsageService.UsageStatsJobAggregationRange.value(); int HOURLY_TIME = 60; final int DAILY_TIME = 60 * 24; if (_usageAggregationRange == DAILY_TIME) { diff --git a/server/src/main/java/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java b/server/src/main/java/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java index bef33fc3bf92..2a0d270f92b9 100644 --- a/server/src/main/java/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java +++ b/server/src/main/java/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java @@ -41,7 +41,6 @@ import org.apache.cloudstack.engine.subsystem.api.storage.VolumeInfo; import org.apache.cloudstack.framework.config.ConfigKey; import org.apache.cloudstack.framework.config.Configurable; -import org.apache.cloudstack.framework.config.dao.ConfigurationDao; import org.apache.cloudstack.framework.jobs.AsyncJob; import org.apache.cloudstack.framework.jobs.AsyncJobExecutionContext; import org.apache.cloudstack.framework.jobs.AsyncJobManager; @@ -97,7 +96,6 @@ import com.cloud.user.dao.AccountDao; import com.cloud.uservm.UserVm; import com.cloud.utils.DateUtil; -import com.cloud.utils.NumbersUtil; import com.cloud.utils.Pair; import com.cloud.utils.Predicate; import com.cloud.utils.ReflectionUse; @@ -148,7 +146,6 @@ public class VMSnapshotManagerImpl extends MutualExclusiveIdsManagerBase impleme @Inject GuestOSDao _guestOSDao; @Inject SnapshotDao _snapshotDao; @Inject VirtualMachineManager _itMgr; - @Inject ConfigurationDao _configDao; @Inject HypervisorCapabilitiesDao _hypervisorCapabilitiesDao; @Inject StorageStrategyFactory storageStrategyFactory; @@ -192,12 +189,7 @@ public class VMSnapshotManagerImpl extends MutualExclusiveIdsManagerBase impleme @Override public boolean configure(String name, Map params) throws ConfigurationException { _name = name; - if (_configDao == null) { - throw new ConfigurationException("Unable to get the configuration dao."); - } - - String value = _configDao.getValue("vmsnapshot.create.wait"); - _wait = NumbersUtil.parseInt(value, 1800); + _wait = VMSnapshotCreateWait.value(); return true; } diff --git a/usage/src/main/java/com/cloud/usage/UsageManagerImpl.java b/usage/src/main/java/com/cloud/usage/UsageManagerImpl.java index eab371ab353f..133f7e88b70a 100644 --- a/usage/src/main/java/com/cloud/usage/UsageManagerImpl.java +++ b/usage/src/main/java/com/cloud/usage/UsageManagerImpl.java @@ -47,6 +47,8 @@ import org.apache.cloudstack.quota.QuotaAlertManager; import org.apache.cloudstack.quota.QuotaManager; import org.apache.cloudstack.quota.QuotaStatement; +import org.apache.cloudstack.quota.constant.QuotaConfig; +import org.apache.cloudstack.usage.UsageService; import org.apache.cloudstack.usage.UsageTypes; import org.apache.cloudstack.utils.usage.UsageUtils; import org.apache.commons.collections.CollectionUtils; @@ -216,6 +218,7 @@ public boolean configure(String name, Map params) throws Configu logger.info("Implementation Version is " + _version); } + // the usage server has no ConfigDepot, so ConfigKey.value() would only return the defaults here Map configs; try { configs = _configDao.getConfiguration(params); @@ -229,14 +232,14 @@ public boolean configure(String name, Map params) throws Configu throw new CloudRuntimeException("Unhandled configuration exception", e); } - String execTime = configs.get("usage.stats.job.exec.time"); - String aggregationRange = configs.get("usage.stats.job.aggregation.range"); - String execTimeZone = configs.get("usage.execution.timezone"); - String aggregationTimeZone = configs.get("usage.aggregation.timezone"); - String sanityCheckInterval = configs.get("usage.sanity.check.interval"); - String quotaEnable = configs.get("quota.enable.service"); + String execTime = configs.get(UsageService.UsageStatsJobExecTime.key()); + String aggregationRange = configs.get(UsageService.UsageStatsJobAggregationRange.key()); + String execTimeZone = configs.get(UsageService.UsageExecutionTimezone.key()); + String aggregationTimeZone = configs.get(UsageService.UsageAggregationTimezone.key()); + String sanityCheckInterval = configs.get(UsageService.UsageSanityCheckInterval.key()); + String quotaEnable = configs.get(QuotaConfig.QuotaPluginEnabled.key()); _runQuota = Boolean.valueOf(quotaEnable == null ? "false" : quotaEnable ); - usageSnapshotSelection = Boolean.valueOf(configs.get("usage.snapshot.virtualsize.select")); + usageSnapshotSelection = Boolean.valueOf(configs.get(UsageService.UsageSnapshotVirtualSizeSelect.key())); if (sanityCheckInterval != null) { _sanityCheckInterval = Integer.parseInt(sanityCheckInterval); }