Re-use stack_create method from base class

Change-Id: Icc46f6c61b2fa7974b39b76f2142f33bc50ae06b
diff --git a/scenario/test_server_cfn_init.py b/scenario/test_server_cfn_init.py
index 630e2e9..9d85120 100644
--- a/scenario/test_server_cfn_init.py
+++ b/scenario/test_server_cfn_init.py
@@ -30,7 +30,6 @@
         self.sub_dir = 'templates'
 
     def assign_keypair(self):
-        self.stack_name = self._stack_rand_name()
         if self.conf.keypair_name:
             self.keypair = None
             self.keypair_name = self.conf.keypair_name
@@ -40,7 +39,7 @@
 
     def launch_stack(self):
         net = self._get_default_network()
-        self.parameters = {
+        parameters = {
             'key_name': self.keypair_name,
             'flavor': self.conf.instance_type,
             'image': self.conf.image_ref,
@@ -49,19 +48,12 @@
         }
 
         # create the stack
-        self.template = self._load_template(__file__, self.template_name,
-                                            self.sub_dir)
-        self.client.stacks.create(
-            stack_name=self.stack_name,
-            template=self.template,
-            parameters=self.parameters)
+        template = self._load_template(__file__, self.template_name,
+                                       self.sub_dir)
+        return self.stack_create(template=template,
+                                 parameters=parameters)
 
-        self.stack = self.client.stacks.get(self.stack_name)
-        self.stack_identifier = '%s/%s' % (self.stack_name, self.stack.id)
-        self.addCleanup(self._stack_delete, self.stack_identifier)
-
-    def check_stack(self):
-        sid = self.stack_identifier
+    def check_stack(self, sid):
         self._wait_for_resource_status(
             sid, 'WaitHandle', 'CREATE_COMPLETE')
         self._wait_for_resource_status(
@@ -123,5 +115,5 @@
 
     def test_server_cfn_init(self):
         self.assign_keypair()
-        self.launch_stack()
-        self.check_stack()
+        sid = self.launch_stack()
+        self.check_stack(sid)
diff --git a/scenario/test_volumes.py b/scenario/test_volumes.py
index 9953648..6a80297 100644
--- a/scenario/test_volumes.py
+++ b/scenario/test_volumes.py
@@ -52,10 +52,8 @@
         self.assertEqual(self.volume_description,
                          self._stack_output(stack, 'display_description'))
 
-    def _create_stack(self, template_name, add_parameters={}):
-        # TODO(shardy): refactor this into a generic base-class helper
+    def launch_stack(self, template_name, add_parameters={}):
         net = self._get_default_network()
-        stack_name = self._stack_rand_name()
         template = self._load_template(__file__, template_name, 'templates')
         parameters = {'key_name': self.keypair_name,
                       'instance_type': self.conf.instance_type,
@@ -64,18 +62,8 @@
                       'timeout': self.conf.build_timeout,
                       'network': net['id']}
         parameters.update(add_parameters)
-        ret_stack = self.client.stacks.create(
-            stack_name=stack_name,
-            template=template,
-            parameters=parameters)
-        stack_id = ret_stack['stack']['id']
-        stack = self.client.stacks.get(stack_id)
-        self.assertIsNotNone(stack)
-        stack_identifier = '%s/%s' % (stack_name, stack.id)
-
-        self.addCleanup(self._stack_delete, stack_identifier)
-        self._wait_for_stack_status(stack_identifier, 'CREATE_COMPLETE')
-        return stack, stack_identifier
+        return self.stack_create(template=template,
+                                 parameters=parameters)
 
     @testcase.skip('Skipped until failure rate '
                    'can be reduced ref bug #1382300')
@@ -90,10 +78,12 @@
            4. Create a new stack, where the volume is created from the backup
            5. Verify the test data written in (1) is present in the new volume
         """
-        stack, stack_identifier = self._create_stack(
+        stack_identifier = self.launch_stack(
             template_name='test_volumes_delete_snapshot.yaml',
             add_parameters={'volume_size': self.volume_size})
 
+        stack = self.client.stacks.get(stack_identifier)
+
         # Verify with cinder that the volume exists, with matching details
         volume_id = self._stack_output(stack, 'volume_id')
         self._cinder_verify(volume_id, expected_status='in-use')
@@ -119,9 +109,10 @@
         # Now, we create another stack where the volume is created from the
         # backup created by the previous stack
         try:
-            stack2, stack_identifier2 = self._create_stack(
+            stack_identifier2 = self.launch_stack(
                 template_name='test_volumes_create_from_backup.yaml',
                 add_parameters={'backup_id': backup.id})
+            stack2 = self.client.stacks.get(stack_identifier2)
         except exceptions.StackBuildErrorException as e:
             LOG.error("Halting test due to bug: #1382300")
             LOG.exception(e)