Create heat_stack_owner if required 33/60133/4
authorCédric Ollivier <cedric.ollivier@orange.com>
Mon, 23 Jul 2018 19:51:40 +0000 (21:51 +0200)
committerCédric Ollivier <cedric.ollivier@orange.com>
Mon, 23 Jul 2018 20:21:17 +0000 (22:21 +0200)
It allows testing OpenStack Queens and older [1].
It will be improved in a second change for latest OpenStack releases
(if deprecated).

[1] https://build.opnfv.org/ci/view/functest/job/functest-apex-baremetal-daily-master/174/console

Change-Id: I6e91e8c45d335aa606370c35b0a03b990e22c165
Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com>
functest/opnfv_tests/openstack/shaker/shaker.py

index dfe1d9c..4f77448 100644 (file)
@@ -39,6 +39,10 @@ class Shaker(singlevm.SingleVm2):
     ssh_connect_loops = 12
     create_server_timeout = 360
 
+    def __init__(self, **kwargs):
+        super(Shaker, self).__init__(**kwargs)
+        self.role = None
+
     def prepare(self):
         super(Shaker, self).prepare()
         self.cloud.create_security_group_rule(
@@ -58,6 +62,8 @@ class Shaker(singlevm.SingleVm2):
             "admin", user=self.project.user.id,
             project=self.project.project.id,
             domain=self.project.domain.id)
+        if not self.orig_cloud.get_role("heat_stack_owner"):
+            self.role = self.orig_cloud.create_role("heat_stack_owner")
         self.orig_cloud.grant_role(
             "heat_stack_owner", user=self.project.user.id,
             project=self.project.project.id,
@@ -99,3 +105,8 @@ class Shaker(singlevm.SingleVm2):
             self.__logger.exception("cannot get report files")
             return 1
         return stdout.channel.recv_exit_status()
+
+    def clean(self):
+        super(Shaker, self).clean()
+        if self.role:
+            self.orig_cloud.delete_role(self.role.id)