From 5d046c74d0fe927d55aebf35a587dd8738a5eae7 Mon Sep 17 00:00:00 2001 From: Suresh Kumar Anaparti Date: Wed, 3 Sep 2025 18:20:53 +0530 Subject: [PATCH 1/8] Check backup framework enabled config in zone scope first (before checking in global scope) --- .../java/org/apache/cloudstack/backup/BackupManagerImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java b/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java index dc2677a507f0..74e1a632bba1 100644 --- a/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java +++ b/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java @@ -948,7 +948,7 @@ public boolean configure(String name, Map params) throws Configu } public boolean isDisabled(final Long zoneId) { - return !(BackupFrameworkEnabled.value() && BackupFrameworkEnabled.valueIn(zoneId)); + return !(BackupFrameworkEnabled.valueIn(zoneId)); } private void validateForZone(final Long zoneId) { From cc43873aac79acd20f4eed8abe60e6cfa1a6a8c8 Mon Sep 17 00:00:00 2001 From: Suresh Kumar Anaparti Date: Tue, 9 Sep 2025 16:05:08 +0530 Subject: [PATCH 2/8] Update backup.framework.enabled config to Global scope --- .../cloudstack/backup/BackupManager.java | 2 +- .../cloudstack/backup/BackupManagerImpl.java | 19 +++++++++---------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/api/src/main/java/org/apache/cloudstack/backup/BackupManager.java b/api/src/main/java/org/apache/cloudstack/backup/BackupManager.java index 78d189c3bf1d..7aa0176f1a01 100644 --- a/api/src/main/java/org/apache/cloudstack/backup/BackupManager.java +++ b/api/src/main/java/org/apache/cloudstack/backup/BackupManager.java @@ -40,7 +40,7 @@ public interface BackupManager extends BackupService, Configurable, PluggableSer ConfigKey BackupFrameworkEnabled = new ConfigKey<>("Advanced", Boolean.class, "backup.framework.enabled", "false", - "Is backup and recovery framework enabled.", false, ConfigKey.Scope.Zone); + "Is backup and recovery framework enabled.", false); ConfigKey BackupProviderPlugin = new ConfigKey<>("Advanced", String.class, "backup.framework.provider.plugin", diff --git a/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java b/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java index 74e1a632bba1..134b81489b6f 100644 --- a/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java +++ b/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java @@ -947,13 +947,13 @@ public boolean configure(String name, Map params) throws Configu return true; } - public boolean isDisabled(final Long zoneId) { - return !(BackupFrameworkEnabled.valueIn(zoneId)); + public boolean isDisabled() { + return !(BackupFrameworkEnabled.value()); } private void validateForZone(final Long zoneId) { - if (zoneId == null || isDisabled(zoneId)) { - throw new CloudRuntimeException("Backup and Recovery feature is disabled for the zone"); + if (zoneId == null || isDisabled()) { + throw new CloudRuntimeException("Backup and Recovery feature is disabled"); } } @@ -1128,7 +1128,7 @@ public void scheduleBackups() { continue; } - if (isDisabled(vm.getDataCenterId())) { + if (isDisabled()) { continue; } @@ -1237,12 +1237,11 @@ protected void runInContext() { if (logger.isTraceEnabled()) { logger.trace("Backup sync background task is running..."); } + if (isDisabled()) { + logger.debug("Backup Sync Task is not enabled. Skipping!"); + return; + } for (final DataCenter dataCenter : dataCenterDao.listAllZones()) { - if (dataCenter == null || isDisabled(dataCenter.getId())) { - logger.debug("Backup Sync Task is not enabled in zone [{}]. Skipping this zone!", dataCenter == null ? "NULL Zone!" : dataCenter); - continue; - } - final BackupProvider backupProvider = getBackupProvider(dataCenter.getId()); if (backupProvider == null) { logger.warn("Backup provider not available or configured for zone {}", dataCenter); From 91d1a5cce3975b9d2a37e78a30b9027b8546fe86 Mon Sep 17 00:00:00 2001 From: Suresh Kumar Anaparti Date: Tue, 23 Sep 2025 23:19:47 +0530 Subject: [PATCH 3/8] Revert "Update backup.framework.enabled config to Global scope" This reverts commit b0b037f2cf2296fbb4e06c9082b7a7057aa96d54. --- .../cloudstack/backup/BackupManager.java | 2 +- .../cloudstack/backup/BackupManagerImpl.java | 19 ++++++++++--------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/api/src/main/java/org/apache/cloudstack/backup/BackupManager.java b/api/src/main/java/org/apache/cloudstack/backup/BackupManager.java index 7aa0176f1a01..78d189c3bf1d 100644 --- a/api/src/main/java/org/apache/cloudstack/backup/BackupManager.java +++ b/api/src/main/java/org/apache/cloudstack/backup/BackupManager.java @@ -40,7 +40,7 @@ public interface BackupManager extends BackupService, Configurable, PluggableSer ConfigKey BackupFrameworkEnabled = new ConfigKey<>("Advanced", Boolean.class, "backup.framework.enabled", "false", - "Is backup and recovery framework enabled.", false); + "Is backup and recovery framework enabled.", false, ConfigKey.Scope.Zone); ConfigKey BackupProviderPlugin = new ConfigKey<>("Advanced", String.class, "backup.framework.provider.plugin", diff --git a/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java b/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java index 134b81489b6f..74e1a632bba1 100644 --- a/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java +++ b/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java @@ -947,13 +947,13 @@ public boolean configure(String name, Map params) throws Configu return true; } - public boolean isDisabled() { - return !(BackupFrameworkEnabled.value()); + public boolean isDisabled(final Long zoneId) { + return !(BackupFrameworkEnabled.valueIn(zoneId)); } private void validateForZone(final Long zoneId) { - if (zoneId == null || isDisabled()) { - throw new CloudRuntimeException("Backup and Recovery feature is disabled"); + if (zoneId == null || isDisabled(zoneId)) { + throw new CloudRuntimeException("Backup and Recovery feature is disabled for the zone"); } } @@ -1128,7 +1128,7 @@ public void scheduleBackups() { continue; } - if (isDisabled()) { + if (isDisabled(vm.getDataCenterId())) { continue; } @@ -1237,11 +1237,12 @@ protected void runInContext() { if (logger.isTraceEnabled()) { logger.trace("Backup sync background task is running..."); } - if (isDisabled()) { - logger.debug("Backup Sync Task is not enabled. Skipping!"); - return; - } for (final DataCenter dataCenter : dataCenterDao.listAllZones()) { + if (dataCenter == null || isDisabled(dataCenter.getId())) { + logger.debug("Backup Sync Task is not enabled in zone [{}]. Skipping this zone!", dataCenter == null ? "NULL Zone!" : dataCenter); + continue; + } + final BackupProvider backupProvider = getBackupProvider(dataCenter.getId()); if (backupProvider == null) { logger.warn("Backup provider not available or configured for zone {}", dataCenter); From a82033376d6161b6a9753915a9dd681ebbb96a93 Mon Sep 17 00:00:00 2001 From: Suresh Kumar Anaparti Date: Wed, 24 Sep 2025 11:59:23 +0530 Subject: [PATCH 4/8] Check the config key and name exists in its scope (without scopie id) --- .../com/cloud/dc/ClusterDetailsDaoImpl.java | 5 +++++ .../dc/dao/DataCenterDetailsDaoImpl.java | 5 +++++ .../domain/dao/DomainDetailsDaoImpl.java | 5 +++++ .../dao/StoragePoolDetailsDaoImpl.java | 5 +++++ .../com/cloud/user/AccountDetailsDaoImpl.java | 5 +++++ .../resourcedetail/ResourceDetailsDao.java | 2 ++ .../ResourceDetailsDaoBase.java | 6 ++++++ .../db/ImageStoreDetailsDaoImpl.java | 5 +++++ .../framework/config/ConfigKey.java | 6 ++++++ .../framework/config/ScopedConfigStorage.java | 2 ++ .../config/impl/ConfigDepotImpl.java | 20 +++++++++++++++++++ .../cloudstack/backup/BackupManagerImpl.java | 2 +- 12 files changed, 67 insertions(+), 1 deletion(-) diff --git a/engine/schema/src/main/java/com/cloud/dc/ClusterDetailsDaoImpl.java b/engine/schema/src/main/java/com/cloud/dc/ClusterDetailsDaoImpl.java index 7650b40dd2f7..7e83600c4e6e 100644 --- a/engine/schema/src/main/java/com/cloud/dc/ClusterDetailsDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/dc/ClusterDetailsDaoImpl.java @@ -186,4 +186,9 @@ private String getCpuMemoryOvercommitRatio(String name) { return name; } + + @Override + public boolean doesConfigKeyAndValueExist(String key, String value) { + return doesKeyValuePairExist(key, value); + } } diff --git a/engine/schema/src/main/java/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java b/engine/schema/src/main/java/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java index bb03a96d02ee..581c9cb13ab4 100644 --- a/engine/schema/src/main/java/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java @@ -67,4 +67,9 @@ public void persist(long zoneId, String name, String value) { persist(vo); txn.commit(); } + + @Override + public boolean doesConfigKeyAndValueExist(String key, String value) { + return doesKeyValuePairExist(key, value); + } } diff --git a/engine/schema/src/main/java/com/cloud/domain/dao/DomainDetailsDaoImpl.java b/engine/schema/src/main/java/com/cloud/domain/dao/DomainDetailsDaoImpl.java index 5b4e4c591ffc..e3c8a7ade48e 100644 --- a/engine/schema/src/main/java/com/cloud/domain/dao/DomainDetailsDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/domain/dao/DomainDetailsDaoImpl.java @@ -132,4 +132,9 @@ public String getConfigValue(long id, String key) { } return vo == null ? null : getActualValue(vo); } + + @Override + public boolean doesConfigKeyAndValueExist(String key, String value) { + return doesKeyValuePairExist(key, value); + } } diff --git a/engine/schema/src/main/java/com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java b/engine/schema/src/main/java/com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java index 2d9656b5b0ac..2a2ca428974b 100644 --- a/engine/schema/src/main/java/com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java @@ -57,4 +57,9 @@ public void addDetail(long resourceId, String key, String value, boolean display } super.addDetail(new StoragePoolDetailVO(resourceId, key, value, display)); } + + @Override + public boolean doesConfigKeyAndValueExist(String key, String value) { + return doesKeyValuePairExist(key, value); + } } diff --git a/engine/schema/src/main/java/com/cloud/user/AccountDetailsDaoImpl.java b/engine/schema/src/main/java/com/cloud/user/AccountDetailsDaoImpl.java index 535b5eae390f..631a492c9a5d 100644 --- a/engine/schema/src/main/java/com/cloud/user/AccountDetailsDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/user/AccountDetailsDaoImpl.java @@ -156,4 +156,9 @@ public String getConfigValue(long id, String key) { } return value; } + + @Override + public boolean doesConfigKeyAndValueExist(String key, String value) { + return doesKeyValuePairExist(key, value); + } } diff --git a/engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDao.java b/engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDao.java index 6b6fe200c10d..97dab5bb7c19 100644 --- a/engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDao.java +++ b/engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDao.java @@ -103,4 +103,6 @@ public interface ResourceDetailsDao extends GenericDao long batchExpungeForResources(List ids, Long batchSize); String getActualValue(ResourceDetail resourceDetail); + + boolean doesKeyValuePairExist(String key, String value); } diff --git a/engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDaoBase.java b/engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDaoBase.java index 29d3f88fd902..c65a97de40bf 100644 --- a/engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDaoBase.java +++ b/engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDaoBase.java @@ -246,4 +246,10 @@ public String getActualValue(ResourceDetail resourceDetail) { } return resourceDetail.getValue(); } + + @Override + public boolean doesKeyValuePairExist(String key, String value) { + List details = findDetails(key, value, null); + return CollectionUtils.isNotEmpty(details); + } } diff --git a/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/ImageStoreDetailsDaoImpl.java b/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/ImageStoreDetailsDaoImpl.java index 97e41949a57a..22012664d992 100644 --- a/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/ImageStoreDetailsDaoImpl.java +++ b/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/ImageStoreDetailsDaoImpl.java @@ -119,4 +119,9 @@ public String getConfigValue(long id, ConfigKey key) { public void addDetail(long resourceId, String key, String value, boolean display) { super.addDetail(new ImageStoreDetailVO(resourceId, key, value, display)); } + + @Override + public boolean doesConfigKeyAndValueExist(String key, String value) { + return doesKeyValuePairExist(key, value); + } } diff --git a/framework/config/src/main/java/org/apache/cloudstack/framework/config/ConfigKey.java b/framework/config/src/main/java/org/apache/cloudstack/framework/config/ConfigKey.java index 27b04ddf8937..5301b1279dc9 100644 --- a/framework/config/src/main/java/org/apache/cloudstack/framework/config/ConfigKey.java +++ b/framework/config/src/main/java/org/apache/cloudstack/framework/config/ConfigKey.java @@ -301,4 +301,10 @@ protected T valueOf(String value) { } } + public boolean hasValueInScope(String value) { + if (value != null && s_depot != null) { + return s_depot.doesConfigKeyAndValueExistsInScope(_name, value, _scope); + } + return false; + } } diff --git a/framework/config/src/main/java/org/apache/cloudstack/framework/config/ScopedConfigStorage.java b/framework/config/src/main/java/org/apache/cloudstack/framework/config/ScopedConfigStorage.java index 8126b9510a27..df53ee17121b 100644 --- a/framework/config/src/main/java/org/apache/cloudstack/framework/config/ScopedConfigStorage.java +++ b/framework/config/src/main/java/org/apache/cloudstack/framework/config/ScopedConfigStorage.java @@ -31,4 +31,6 @@ public interface ScopedConfigStorage { default String getConfigValue(long id, ConfigKey key) { return getConfigValue(id, key.key()); } + + boolean doesConfigKeyAndValueExist(String key, String value); } diff --git a/framework/config/src/main/java/org/apache/cloudstack/framework/config/impl/ConfigDepotImpl.java b/framework/config/src/main/java/org/apache/cloudstack/framework/config/impl/ConfigDepotImpl.java index 8b8b63685274..a0768310defe 100644 --- a/framework/config/src/main/java/org/apache/cloudstack/framework/config/impl/ConfigDepotImpl.java +++ b/framework/config/src/main/java/org/apache/cloudstack/framework/config/impl/ConfigDepotImpl.java @@ -296,6 +296,26 @@ protected String getConfigStringValueInternal(Ternary getConfigCacheKey(String key, ConfigKey.Scope scope, Long scopeId) { return new Ternary<>(key, scope, scopeId); } diff --git a/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java b/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java index 74e1a632bba1..e94daa77d5a6 100644 --- a/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java +++ b/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java @@ -981,7 +981,7 @@ public BackupProvider getBackupProvider(final String name) { @Override public List> getCommands() { final List> cmdList = new ArrayList>(); - if (!BackupFrameworkEnabled.value()) { + if (!BackupFrameworkEnabled.value() && !BackupFrameworkEnabled.hasValueInScope(Boolean.TRUE.toString())) { return cmdList; } From af84896a69028397cd51755f43b216a64c666e93 Mon Sep 17 00:00:00 2001 From: Suresh Kumar Anaparti Date: Thu, 25 Sep 2025 11:27:55 +0530 Subject: [PATCH 5/8] code improvements --- .../src/main/java/com/cloud/dc/ClusterDetailsDaoImpl.java | 5 ----- .../java/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java | 5 ----- .../java/com/cloud/domain/dao/DomainDetailsDaoImpl.java | 5 ----- .../com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java | 5 ----- .../src/main/java/com/cloud/user/AccountDetailsDaoImpl.java | 5 ----- .../cloudstack/resourcedetail/ResourceDetailsDao.java | 2 -- .../cloudstack/resourcedetail/ResourceDetailsDaoBase.java | 1 - .../storage/datastore/db/ImageStoreDetailsDaoImpl.java | 5 ----- .../org/apache/cloudstack/framework/config/ConfigKey.java | 2 +- .../cloudstack/framework/config/ScopedConfigStorage.java | 6 +++++- .../cloudstack/framework/config/impl/ConfigDepotImpl.java | 5 +++-- 11 files changed, 9 insertions(+), 37 deletions(-) diff --git a/engine/schema/src/main/java/com/cloud/dc/ClusterDetailsDaoImpl.java b/engine/schema/src/main/java/com/cloud/dc/ClusterDetailsDaoImpl.java index 7e83600c4e6e..7650b40dd2f7 100644 --- a/engine/schema/src/main/java/com/cloud/dc/ClusterDetailsDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/dc/ClusterDetailsDaoImpl.java @@ -186,9 +186,4 @@ private String getCpuMemoryOvercommitRatio(String name) { return name; } - - @Override - public boolean doesConfigKeyAndValueExist(String key, String value) { - return doesKeyValuePairExist(key, value); - } } diff --git a/engine/schema/src/main/java/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java b/engine/schema/src/main/java/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java index 581c9cb13ab4..bb03a96d02ee 100644 --- a/engine/schema/src/main/java/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java @@ -67,9 +67,4 @@ public void persist(long zoneId, String name, String value) { persist(vo); txn.commit(); } - - @Override - public boolean doesConfigKeyAndValueExist(String key, String value) { - return doesKeyValuePairExist(key, value); - } } diff --git a/engine/schema/src/main/java/com/cloud/domain/dao/DomainDetailsDaoImpl.java b/engine/schema/src/main/java/com/cloud/domain/dao/DomainDetailsDaoImpl.java index e3c8a7ade48e..5b4e4c591ffc 100644 --- a/engine/schema/src/main/java/com/cloud/domain/dao/DomainDetailsDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/domain/dao/DomainDetailsDaoImpl.java @@ -132,9 +132,4 @@ public String getConfigValue(long id, String key) { } return vo == null ? null : getActualValue(vo); } - - @Override - public boolean doesConfigKeyAndValueExist(String key, String value) { - return doesKeyValuePairExist(key, value); - } } diff --git a/engine/schema/src/main/java/com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java b/engine/schema/src/main/java/com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java index 2a2ca428974b..2d9656b5b0ac 100644 --- a/engine/schema/src/main/java/com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java @@ -57,9 +57,4 @@ public void addDetail(long resourceId, String key, String value, boolean display } super.addDetail(new StoragePoolDetailVO(resourceId, key, value, display)); } - - @Override - public boolean doesConfigKeyAndValueExist(String key, String value) { - return doesKeyValuePairExist(key, value); - } } diff --git a/engine/schema/src/main/java/com/cloud/user/AccountDetailsDaoImpl.java b/engine/schema/src/main/java/com/cloud/user/AccountDetailsDaoImpl.java index 631a492c9a5d..535b5eae390f 100644 --- a/engine/schema/src/main/java/com/cloud/user/AccountDetailsDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/user/AccountDetailsDaoImpl.java @@ -156,9 +156,4 @@ public String getConfigValue(long id, String key) { } return value; } - - @Override - public boolean doesConfigKeyAndValueExist(String key, String value) { - return doesKeyValuePairExist(key, value); - } } diff --git a/engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDao.java b/engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDao.java index 97dab5bb7c19..6b6fe200c10d 100644 --- a/engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDao.java +++ b/engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDao.java @@ -103,6 +103,4 @@ public interface ResourceDetailsDao extends GenericDao long batchExpungeForResources(List ids, Long batchSize); String getActualValue(ResourceDetail resourceDetail); - - boolean doesKeyValuePairExist(String key, String value); } diff --git a/engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDaoBase.java b/engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDaoBase.java index c65a97de40bf..9dd94a97d642 100644 --- a/engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDaoBase.java +++ b/engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDaoBase.java @@ -247,7 +247,6 @@ public String getActualValue(ResourceDetail resourceDetail) { return resourceDetail.getValue(); } - @Override public boolean doesKeyValuePairExist(String key, String value) { List details = findDetails(key, value, null); return CollectionUtils.isNotEmpty(details); diff --git a/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/ImageStoreDetailsDaoImpl.java b/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/ImageStoreDetailsDaoImpl.java index 22012664d992..97e41949a57a 100644 --- a/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/ImageStoreDetailsDaoImpl.java +++ b/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/ImageStoreDetailsDaoImpl.java @@ -119,9 +119,4 @@ public String getConfigValue(long id, ConfigKey key) { public void addDetail(long resourceId, String key, String value, boolean display) { super.addDetail(new ImageStoreDetailVO(resourceId, key, value, display)); } - - @Override - public boolean doesConfigKeyAndValueExist(String key, String value) { - return doesKeyValuePairExist(key, value); - } } diff --git a/framework/config/src/main/java/org/apache/cloudstack/framework/config/ConfigKey.java b/framework/config/src/main/java/org/apache/cloudstack/framework/config/ConfigKey.java index 5301b1279dc9..807008a85607 100644 --- a/framework/config/src/main/java/org/apache/cloudstack/framework/config/ConfigKey.java +++ b/framework/config/src/main/java/org/apache/cloudstack/framework/config/ConfigKey.java @@ -303,7 +303,7 @@ protected T valueOf(String value) { public boolean hasValueInScope(String value) { if (value != null && s_depot != null) { - return s_depot.doesConfigKeyAndValueExistsInScope(_name, value, _scope); + return s_depot.doesConfigKeyAndValueExistInScope(_name, value, _scope); } return false; } diff --git a/framework/config/src/main/java/org/apache/cloudstack/framework/config/ScopedConfigStorage.java b/framework/config/src/main/java/org/apache/cloudstack/framework/config/ScopedConfigStorage.java index df53ee17121b..d0b722b7df27 100644 --- a/framework/config/src/main/java/org/apache/cloudstack/framework/config/ScopedConfigStorage.java +++ b/framework/config/src/main/java/org/apache/cloudstack/framework/config/ScopedConfigStorage.java @@ -32,5 +32,9 @@ default String getConfigValue(long id, ConfigKey key) { return getConfigValue(id, key.key()); } - boolean doesConfigKeyAndValueExist(String key, String value); + boolean doesKeyValuePairExist(String key, String value); + + default boolean doesConfigKeyAndValueExist(String key, String value) { + return doesKeyValuePairExist(key, value); + } } diff --git a/framework/config/src/main/java/org/apache/cloudstack/framework/config/impl/ConfigDepotImpl.java b/framework/config/src/main/java/org/apache/cloudstack/framework/config/impl/ConfigDepotImpl.java index a0768310defe..adc7cb9345a4 100644 --- a/framework/config/src/main/java/org/apache/cloudstack/framework/config/impl/ConfigDepotImpl.java +++ b/framework/config/src/main/java/org/apache/cloudstack/framework/config/impl/ConfigDepotImpl.java @@ -296,7 +296,7 @@ protected String getConfigStringValueInternal(Ternary Date: Thu, 29 Jan 2026 12:57:30 +0530 Subject: [PATCH 6/8] Revert "code improvements" This reverts commit 2dffcda882085e5b2f8f3294ddfb4b6928c6892f. --- .../src/main/java/com/cloud/dc/ClusterDetailsDaoImpl.java | 5 +++++ .../java/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java | 5 +++++ .../java/com/cloud/domain/dao/DomainDetailsDaoImpl.java | 5 +++++ .../com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java | 5 +++++ .../src/main/java/com/cloud/user/AccountDetailsDaoImpl.java | 5 +++++ .../cloudstack/resourcedetail/ResourceDetailsDao.java | 2 ++ .../cloudstack/resourcedetail/ResourceDetailsDaoBase.java | 1 + .../storage/datastore/db/ImageStoreDetailsDaoImpl.java | 5 +++++ .../org/apache/cloudstack/framework/config/ConfigKey.java | 2 +- .../cloudstack/framework/config/ScopedConfigStorage.java | 6 +----- .../cloudstack/framework/config/impl/ConfigDepotImpl.java | 5 ++--- 11 files changed, 37 insertions(+), 9 deletions(-) diff --git a/engine/schema/src/main/java/com/cloud/dc/ClusterDetailsDaoImpl.java b/engine/schema/src/main/java/com/cloud/dc/ClusterDetailsDaoImpl.java index 7650b40dd2f7..7e83600c4e6e 100644 --- a/engine/schema/src/main/java/com/cloud/dc/ClusterDetailsDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/dc/ClusterDetailsDaoImpl.java @@ -186,4 +186,9 @@ private String getCpuMemoryOvercommitRatio(String name) { return name; } + + @Override + public boolean doesConfigKeyAndValueExist(String key, String value) { + return doesKeyValuePairExist(key, value); + } } diff --git a/engine/schema/src/main/java/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java b/engine/schema/src/main/java/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java index bb03a96d02ee..581c9cb13ab4 100644 --- a/engine/schema/src/main/java/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java @@ -67,4 +67,9 @@ public void persist(long zoneId, String name, String value) { persist(vo); txn.commit(); } + + @Override + public boolean doesConfigKeyAndValueExist(String key, String value) { + return doesKeyValuePairExist(key, value); + } } diff --git a/engine/schema/src/main/java/com/cloud/domain/dao/DomainDetailsDaoImpl.java b/engine/schema/src/main/java/com/cloud/domain/dao/DomainDetailsDaoImpl.java index 5b4e4c591ffc..e3c8a7ade48e 100644 --- a/engine/schema/src/main/java/com/cloud/domain/dao/DomainDetailsDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/domain/dao/DomainDetailsDaoImpl.java @@ -132,4 +132,9 @@ public String getConfigValue(long id, String key) { } return vo == null ? null : getActualValue(vo); } + + @Override + public boolean doesConfigKeyAndValueExist(String key, String value) { + return doesKeyValuePairExist(key, value); + } } diff --git a/engine/schema/src/main/java/com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java b/engine/schema/src/main/java/com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java index 2d9656b5b0ac..2a2ca428974b 100644 --- a/engine/schema/src/main/java/com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java @@ -57,4 +57,9 @@ public void addDetail(long resourceId, String key, String value, boolean display } super.addDetail(new StoragePoolDetailVO(resourceId, key, value, display)); } + + @Override + public boolean doesConfigKeyAndValueExist(String key, String value) { + return doesKeyValuePairExist(key, value); + } } diff --git a/engine/schema/src/main/java/com/cloud/user/AccountDetailsDaoImpl.java b/engine/schema/src/main/java/com/cloud/user/AccountDetailsDaoImpl.java index 535b5eae390f..631a492c9a5d 100644 --- a/engine/schema/src/main/java/com/cloud/user/AccountDetailsDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/user/AccountDetailsDaoImpl.java @@ -156,4 +156,9 @@ public String getConfigValue(long id, String key) { } return value; } + + @Override + public boolean doesConfigKeyAndValueExist(String key, String value) { + return doesKeyValuePairExist(key, value); + } } diff --git a/engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDao.java b/engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDao.java index 6b6fe200c10d..97dab5bb7c19 100644 --- a/engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDao.java +++ b/engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDao.java @@ -103,4 +103,6 @@ public interface ResourceDetailsDao extends GenericDao long batchExpungeForResources(List ids, Long batchSize); String getActualValue(ResourceDetail resourceDetail); + + boolean doesKeyValuePairExist(String key, String value); } diff --git a/engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDaoBase.java b/engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDaoBase.java index 9dd94a97d642..c65a97de40bf 100644 --- a/engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDaoBase.java +++ b/engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDaoBase.java @@ -247,6 +247,7 @@ public String getActualValue(ResourceDetail resourceDetail) { return resourceDetail.getValue(); } + @Override public boolean doesKeyValuePairExist(String key, String value) { List details = findDetails(key, value, null); return CollectionUtils.isNotEmpty(details); diff --git a/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/ImageStoreDetailsDaoImpl.java b/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/ImageStoreDetailsDaoImpl.java index 97e41949a57a..22012664d992 100644 --- a/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/ImageStoreDetailsDaoImpl.java +++ b/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/ImageStoreDetailsDaoImpl.java @@ -119,4 +119,9 @@ public String getConfigValue(long id, ConfigKey key) { public void addDetail(long resourceId, String key, String value, boolean display) { super.addDetail(new ImageStoreDetailVO(resourceId, key, value, display)); } + + @Override + public boolean doesConfigKeyAndValueExist(String key, String value) { + return doesKeyValuePairExist(key, value); + } } diff --git a/framework/config/src/main/java/org/apache/cloudstack/framework/config/ConfigKey.java b/framework/config/src/main/java/org/apache/cloudstack/framework/config/ConfigKey.java index 807008a85607..5301b1279dc9 100644 --- a/framework/config/src/main/java/org/apache/cloudstack/framework/config/ConfigKey.java +++ b/framework/config/src/main/java/org/apache/cloudstack/framework/config/ConfigKey.java @@ -303,7 +303,7 @@ protected T valueOf(String value) { public boolean hasValueInScope(String value) { if (value != null && s_depot != null) { - return s_depot.doesConfigKeyAndValueExistInScope(_name, value, _scope); + return s_depot.doesConfigKeyAndValueExistsInScope(_name, value, _scope); } return false; } diff --git a/framework/config/src/main/java/org/apache/cloudstack/framework/config/ScopedConfigStorage.java b/framework/config/src/main/java/org/apache/cloudstack/framework/config/ScopedConfigStorage.java index d0b722b7df27..df53ee17121b 100644 --- a/framework/config/src/main/java/org/apache/cloudstack/framework/config/ScopedConfigStorage.java +++ b/framework/config/src/main/java/org/apache/cloudstack/framework/config/ScopedConfigStorage.java @@ -32,9 +32,5 @@ default String getConfigValue(long id, ConfigKey key) { return getConfigValue(id, key.key()); } - boolean doesKeyValuePairExist(String key, String value); - - default boolean doesConfigKeyAndValueExist(String key, String value) { - return doesKeyValuePairExist(key, value); - } + boolean doesConfigKeyAndValueExist(String key, String value); } diff --git a/framework/config/src/main/java/org/apache/cloudstack/framework/config/impl/ConfigDepotImpl.java b/framework/config/src/main/java/org/apache/cloudstack/framework/config/impl/ConfigDepotImpl.java index adc7cb9345a4..a0768310defe 100644 --- a/framework/config/src/main/java/org/apache/cloudstack/framework/config/impl/ConfigDepotImpl.java +++ b/framework/config/src/main/java/org/apache/cloudstack/framework/config/impl/ConfigDepotImpl.java @@ -296,7 +296,7 @@ protected String getConfigStringValueInternal(Ternary Date: Thu, 29 Jan 2026 12:57:46 +0530 Subject: [PATCH 7/8] Revert "Check the config key and name exists in its scope (without scopie id)" This reverts commit 878aa4ca1f83f3dd3a8890f01592934a84b351cb. --- .../com/cloud/dc/ClusterDetailsDaoImpl.java | 5 ----- .../dc/dao/DataCenterDetailsDaoImpl.java | 5 ----- .../domain/dao/DomainDetailsDaoImpl.java | 5 ----- .../dao/StoragePoolDetailsDaoImpl.java | 5 ----- .../com/cloud/user/AccountDetailsDaoImpl.java | 5 ----- .../resourcedetail/ResourceDetailsDao.java | 2 -- .../ResourceDetailsDaoBase.java | 6 ------ .../db/ImageStoreDetailsDaoImpl.java | 5 ----- .../framework/config/ConfigKey.java | 6 ------ .../framework/config/ScopedConfigStorage.java | 2 -- .../config/impl/ConfigDepotImpl.java | 20 ------------------- .../cloudstack/backup/BackupManagerImpl.java | 2 +- 12 files changed, 1 insertion(+), 67 deletions(-) diff --git a/engine/schema/src/main/java/com/cloud/dc/ClusterDetailsDaoImpl.java b/engine/schema/src/main/java/com/cloud/dc/ClusterDetailsDaoImpl.java index 7e83600c4e6e..7650b40dd2f7 100644 --- a/engine/schema/src/main/java/com/cloud/dc/ClusterDetailsDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/dc/ClusterDetailsDaoImpl.java @@ -186,9 +186,4 @@ private String getCpuMemoryOvercommitRatio(String name) { return name; } - - @Override - public boolean doesConfigKeyAndValueExist(String key, String value) { - return doesKeyValuePairExist(key, value); - } } diff --git a/engine/schema/src/main/java/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java b/engine/schema/src/main/java/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java index 581c9cb13ab4..bb03a96d02ee 100644 --- a/engine/schema/src/main/java/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java @@ -67,9 +67,4 @@ public void persist(long zoneId, String name, String value) { persist(vo); txn.commit(); } - - @Override - public boolean doesConfigKeyAndValueExist(String key, String value) { - return doesKeyValuePairExist(key, value); - } } diff --git a/engine/schema/src/main/java/com/cloud/domain/dao/DomainDetailsDaoImpl.java b/engine/schema/src/main/java/com/cloud/domain/dao/DomainDetailsDaoImpl.java index e3c8a7ade48e..5b4e4c591ffc 100644 --- a/engine/schema/src/main/java/com/cloud/domain/dao/DomainDetailsDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/domain/dao/DomainDetailsDaoImpl.java @@ -132,9 +132,4 @@ public String getConfigValue(long id, String key) { } return vo == null ? null : getActualValue(vo); } - - @Override - public boolean doesConfigKeyAndValueExist(String key, String value) { - return doesKeyValuePairExist(key, value); - } } diff --git a/engine/schema/src/main/java/com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java b/engine/schema/src/main/java/com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java index 2a2ca428974b..2d9656b5b0ac 100644 --- a/engine/schema/src/main/java/com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java @@ -57,9 +57,4 @@ public void addDetail(long resourceId, String key, String value, boolean display } super.addDetail(new StoragePoolDetailVO(resourceId, key, value, display)); } - - @Override - public boolean doesConfigKeyAndValueExist(String key, String value) { - return doesKeyValuePairExist(key, value); - } } diff --git a/engine/schema/src/main/java/com/cloud/user/AccountDetailsDaoImpl.java b/engine/schema/src/main/java/com/cloud/user/AccountDetailsDaoImpl.java index 631a492c9a5d..535b5eae390f 100644 --- a/engine/schema/src/main/java/com/cloud/user/AccountDetailsDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/user/AccountDetailsDaoImpl.java @@ -156,9 +156,4 @@ public String getConfigValue(long id, String key) { } return value; } - - @Override - public boolean doesConfigKeyAndValueExist(String key, String value) { - return doesKeyValuePairExist(key, value); - } } diff --git a/engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDao.java b/engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDao.java index 97dab5bb7c19..6b6fe200c10d 100644 --- a/engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDao.java +++ b/engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDao.java @@ -103,6 +103,4 @@ public interface ResourceDetailsDao extends GenericDao long batchExpungeForResources(List ids, Long batchSize); String getActualValue(ResourceDetail resourceDetail); - - boolean doesKeyValuePairExist(String key, String value); } diff --git a/engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDaoBase.java b/engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDaoBase.java index c65a97de40bf..29d3f88fd902 100644 --- a/engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDaoBase.java +++ b/engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDaoBase.java @@ -246,10 +246,4 @@ public String getActualValue(ResourceDetail resourceDetail) { } return resourceDetail.getValue(); } - - @Override - public boolean doesKeyValuePairExist(String key, String value) { - List details = findDetails(key, value, null); - return CollectionUtils.isNotEmpty(details); - } } diff --git a/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/ImageStoreDetailsDaoImpl.java b/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/ImageStoreDetailsDaoImpl.java index 22012664d992..97e41949a57a 100644 --- a/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/ImageStoreDetailsDaoImpl.java +++ b/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/ImageStoreDetailsDaoImpl.java @@ -119,9 +119,4 @@ public String getConfigValue(long id, ConfigKey key) { public void addDetail(long resourceId, String key, String value, boolean display) { super.addDetail(new ImageStoreDetailVO(resourceId, key, value, display)); } - - @Override - public boolean doesConfigKeyAndValueExist(String key, String value) { - return doesKeyValuePairExist(key, value); - } } diff --git a/framework/config/src/main/java/org/apache/cloudstack/framework/config/ConfigKey.java b/framework/config/src/main/java/org/apache/cloudstack/framework/config/ConfigKey.java index 5301b1279dc9..27b04ddf8937 100644 --- a/framework/config/src/main/java/org/apache/cloudstack/framework/config/ConfigKey.java +++ b/framework/config/src/main/java/org/apache/cloudstack/framework/config/ConfigKey.java @@ -301,10 +301,4 @@ protected T valueOf(String value) { } } - public boolean hasValueInScope(String value) { - if (value != null && s_depot != null) { - return s_depot.doesConfigKeyAndValueExistsInScope(_name, value, _scope); - } - return false; - } } diff --git a/framework/config/src/main/java/org/apache/cloudstack/framework/config/ScopedConfigStorage.java b/framework/config/src/main/java/org/apache/cloudstack/framework/config/ScopedConfigStorage.java index df53ee17121b..8126b9510a27 100644 --- a/framework/config/src/main/java/org/apache/cloudstack/framework/config/ScopedConfigStorage.java +++ b/framework/config/src/main/java/org/apache/cloudstack/framework/config/ScopedConfigStorage.java @@ -31,6 +31,4 @@ public interface ScopedConfigStorage { default String getConfigValue(long id, ConfigKey key) { return getConfigValue(id, key.key()); } - - boolean doesConfigKeyAndValueExist(String key, String value); } diff --git a/framework/config/src/main/java/org/apache/cloudstack/framework/config/impl/ConfigDepotImpl.java b/framework/config/src/main/java/org/apache/cloudstack/framework/config/impl/ConfigDepotImpl.java index a0768310defe..8b8b63685274 100644 --- a/framework/config/src/main/java/org/apache/cloudstack/framework/config/impl/ConfigDepotImpl.java +++ b/framework/config/src/main/java/org/apache/cloudstack/framework/config/impl/ConfigDepotImpl.java @@ -296,26 +296,6 @@ protected String getConfigStringValueInternal(Ternary getConfigCacheKey(String key, ConfigKey.Scope scope, Long scopeId) { return new Ternary<>(key, scope, scopeId); } diff --git a/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java b/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java index e94daa77d5a6..74e1a632bba1 100644 --- a/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java +++ b/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java @@ -981,7 +981,7 @@ public BackupProvider getBackupProvider(final String name) { @Override public List> getCommands() { final List> cmdList = new ArrayList>(); - if (!BackupFrameworkEnabled.value() && !BackupFrameworkEnabled.hasValueInScope(Boolean.TRUE.toString())) { + if (!BackupFrameworkEnabled.value()) { return cmdList; } From e036a516a0ced3190fa2ace367d5885351d30176 Mon Sep 17 00:00:00 2001 From: Suresh Kumar Anaparti Date: Thu, 29 Jan 2026 12:57:57 +0530 Subject: [PATCH 8/8] Revert "Revert "Update backup.framework.enabled config to Global scope"" This reverts commit 1543511a087fa78b01376c2f15346cd1d4cf10b1. --- .../cloudstack/backup/BackupManager.java | 2 +- .../cloudstack/backup/BackupManagerImpl.java | 19 +++++++++---------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/api/src/main/java/org/apache/cloudstack/backup/BackupManager.java b/api/src/main/java/org/apache/cloudstack/backup/BackupManager.java index 78d189c3bf1d..7aa0176f1a01 100644 --- a/api/src/main/java/org/apache/cloudstack/backup/BackupManager.java +++ b/api/src/main/java/org/apache/cloudstack/backup/BackupManager.java @@ -40,7 +40,7 @@ public interface BackupManager extends BackupService, Configurable, PluggableSer ConfigKey BackupFrameworkEnabled = new ConfigKey<>("Advanced", Boolean.class, "backup.framework.enabled", "false", - "Is backup and recovery framework enabled.", false, ConfigKey.Scope.Zone); + "Is backup and recovery framework enabled.", false); ConfigKey BackupProviderPlugin = new ConfigKey<>("Advanced", String.class, "backup.framework.provider.plugin", diff --git a/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java b/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java index 74e1a632bba1..134b81489b6f 100644 --- a/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java +++ b/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java @@ -947,13 +947,13 @@ public boolean configure(String name, Map params) throws Configu return true; } - public boolean isDisabled(final Long zoneId) { - return !(BackupFrameworkEnabled.valueIn(zoneId)); + public boolean isDisabled() { + return !(BackupFrameworkEnabled.value()); } private void validateForZone(final Long zoneId) { - if (zoneId == null || isDisabled(zoneId)) { - throw new CloudRuntimeException("Backup and Recovery feature is disabled for the zone"); + if (zoneId == null || isDisabled()) { + throw new CloudRuntimeException("Backup and Recovery feature is disabled"); } } @@ -1128,7 +1128,7 @@ public void scheduleBackups() { continue; } - if (isDisabled(vm.getDataCenterId())) { + if (isDisabled()) { continue; } @@ -1237,12 +1237,11 @@ protected void runInContext() { if (logger.isTraceEnabled()) { logger.trace("Backup sync background task is running..."); } + if (isDisabled()) { + logger.debug("Backup Sync Task is not enabled. Skipping!"); + return; + } for (final DataCenter dataCenter : dataCenterDao.listAllZones()) { - if (dataCenter == null || isDisabled(dataCenter.getId())) { - logger.debug("Backup Sync Task is not enabled in zone [{}]. Skipping this zone!", dataCenter == null ? "NULL Zone!" : dataCenter); - continue; - } - final BackupProvider backupProvider = getBackupProvider(dataCenter.getId()); if (backupProvider == null) { logger.warn("Backup provider not available or configured for zone {}", dataCenter);