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 <rohit.ya...@shapeblue.com>
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 <rohit.ya...@shapeblue.com>
---
 .../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):

Reply via email to