This is an automated email from the ASF dual-hosted git repository.
rohit pushed a commit to branch 4.14
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/4.14 by this push:
new db9f825 server: don't export B&R APIs if feature is not enabled
globally (#4202)
db9f825 is described below
commit db9f8258d7a8eff283ff055fb11bca41d1bfc94e
Author: Rohit Yadav <[email protected]>
AuthorDate: Tue Jul 7 18:29:44 2020 +0530
server: don't export B&R APIs if feature is not enabled globally (#4202)
This change will ensure that B&R APIs are not exported if the feature
is not enabled in any of the zones.
Signed-off-by: Rohit Yadav <[email protected]>
---
.../apache/cloudstack/backup/BackupManager.java | 2 +-
developer/developer-prefill.sql | 9 +++++++--
.../cloudstack/backup/BackupManagerImpl.java | 6 +++++-
.../smoke/test_backup_recovery_dummy.py | 22 ++++++++++++++--------
4 files changed, 27 insertions(+), 12 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 7c9d3b6..5751125 100644
--- a/api/src/main/java/org/apache/cloudstack/backup/BackupManager.java
+++ b/api/src/main/java/org/apache/cloudstack/backup/BackupManager.java
@@ -38,7 +38,7 @@ public interface BackupManager extends BackupService,
Configurable, PluggableSer
ConfigKey<Boolean> BackupFrameworkEnabled = new ConfigKey<>("Advanced",
Boolean.class,
"backup.framework.enabled",
"false",
- "Is backup and recovery framework enabled.", true,
ConfigKey.Scope.Zone);
+ "Is backup and recovery framework enabled.", false,
ConfigKey.Scope.Zone);
ConfigKey<String> BackupProviderPlugin = new ConfigKey<>("Advanced",
String.class,
"backup.framework.provider.plugin",
diff --git a/developer/developer-prefill.sql b/developer/developer-prefill.sql
index c9ab468..0715e07 100644
--- a/developer/developer-prefill.sql
+++ b/developer/developer-prefill.sql
@@ -114,16 +114,21 @@ INSERT INTO `cloud`.`configuration` (category, instance,
component, name, value)
VALUES ('Advanced', 'DEFAULT', 'management-server',
'ping.timeout', '2.0');
--- Enable dynamic RBAC by default for fresh deployments
+-- Enable dynamic RBAC by default for developers
INSERT INTO `cloud`.`configuration` (category, instance, component, name,
value)
VALUES ('Advanced', 'DEFAULT', 'RoleService',
'dynamic.apichecker.enabled', 'true');
--- Enable RootCA auth strictness for fresh deployments
+-- Enable RootCA auth strictness for developers
INSERT INTO `cloud`.`configuration` (category, instance, component, name,
value)
VALUES ('Advanced', 'DEFAULT', 'RootCAProvider',
'ca.plugin.root.auth.strictness', 'true');
+-- Enable B&R feature for developers
+INSERT INTO `cloud`.`configuration` (category, instance, component, name,
value)
+ VALUES ('Advanced', 'DEFAULT', 'BackupService',
+ 'backup.framework.enabled', 'true');
+
-- Add developer configuration entry; allows management server to be run as a
user other than "cloud"
INSERT INTO `cloud`.`configuration` (category, instance, component, name,
value)
VALUES ('Advanced', 'DEFAULT', 'management-server',
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 f3b0a3c..b11d1bc 100644
--- a/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java
+++ b/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java
@@ -736,7 +736,7 @@ public class BackupManagerImpl extends ManagerBase
implements BackupManager {
}
public boolean isDisabled(final Long zoneId) {
- return !BackupFrameworkEnabled.valueIn(zoneId);
+ return !(BackupFrameworkEnabled.value() &&
BackupFrameworkEnabled.valueIn(zoneId));
}
private void validateForZone(final Long zoneId) {
@@ -769,6 +769,10 @@ public class BackupManagerImpl extends ManagerBase
implements BackupManager {
@Override
public List<Class<?>> getCommands() {
final List<Class<?>> cmdList = new ArrayList<Class<?>>();
+ if (!BackupFrameworkEnabled.value()) {
+ return cmdList;
+ }
+
// Offerings
cmdList.add(ListBackupProvidersCmd.class);
cmdList.add(ListBackupProviderOfferingsCmd.class);
diff --git a/test/integration/smoke/test_backup_recovery_dummy.py
b/test/integration/smoke/test_backup_recovery_dummy.py
index 79f375c..0c7ae64 100644
--- a/test/integration/smoke/test_backup_recovery_dummy.py
+++ b/test/integration/smoke/test_backup_recovery_dummy.py
@@ -41,15 +41,9 @@ class TestDummyBackupAndRecovery(cloudstackTestCase):
assert False, "get_template() failed to return template with
description %s" % cls.services["ostype"]
cls.services["small"]["zoneid"] = cls.zone.id
cls.services["small"]["template"] = cls.template.id
- cls.account = Account.create(cls.api_client, cls.services["account"],
domainid=cls.domain.id)
- cls.offering =
ServiceOffering.create(cls.api_client,cls.services["service_offerings"]["small"])
- cls.vm = VirtualMachine.create(cls.api_client, cls.services["small"],
accountid=cls.account.name,
- domainid=cls.account.domainid,
serviceofferingid=cls.offering.id,
- mode=cls.services["mode"])
- cls._cleanup = [cls.offering, cls.account]
+ cls._cleanup = []
# Check backup configuration values, set them to enable the dummy
provider
-
backup_enabled_cfg = Configurations.list(cls.api_client,
name='backup.framework.enabled', zoneid=cls.zone.id)
backup_provider_cfg = Configurations.list(cls.api_client,
name='backup.framework.provider.plugin', zoneid=cls.zone.id)
cls.backup_enabled = backup_enabled_cfg[0].value
@@ -59,7 +53,17 @@ class TestDummyBackupAndRecovery(cloudstackTestCase):
Configurations.update(cls.api_client, 'backup.framework.enabled',
value='true', zoneid=cls.zone.id)
if cls.backup_provider != "dummy":
Configurations.update(cls.api_client,
'backup.framework.provider.plugin', value='dummy', zoneid=cls.zone.id)
-
+
+ if cls.hypervisor.lower() != 'simulator':
+ return
+
+ cls.account = Account.create(cls.api_client, cls.services["account"],
domainid=cls.domain.id)
+ cls.offering =
ServiceOffering.create(cls.api_client,cls.services["service_offerings"]["small"])
+ cls.vm = VirtualMachine.create(cls.api_client, cls.services["small"],
accountid=cls.account.name,
+ domainid=cls.account.domainid,
serviceofferingid=cls.offering.id,
+ mode=cls.services["mode"])
+ cls._cleanup = [cls.offering, cls.account]
+
# Import a dummy backup offering to use on tests
cls.provider_offerings = BackupOffering.listExternal(cls.api_client,
cls.zone.id)
@@ -85,6 +89,8 @@ class TestDummyBackupAndRecovery(cloudstackTestCase):
def setUp(self):
self.apiclient = self.testClient.getApiClient()
self.dbclient = self.testClient.getDbConnection()
+ if self.hypervisor.lower() != 'simulator':
+ raise self.skipTest("Skipping test cases which must only run for
Simulator")
self.cleanup = []
def tearDown(self):