Move assign_keypair method in base class

Change-Id: I69b8db037991f88b38b293560532bf51c0a04378
diff --git a/common/test.py b/common/test.py
index 7b17d57..bfb1260 100644
--- a/common/test.py
+++ b/common/test.py
@@ -200,6 +200,14 @@
         self.addCleanup(delete_keypair)
         return keypair
 
+    def assign_keypair(self):
+        if self.conf.keypair_name:
+            self.keypair = None
+            self.keypair_name = self.conf.keypair_name
+        else:
+            self.keypair = self.create_keypair()
+            self.keypair_name = self.keypair.id
+
     @classmethod
     def _stack_rand_name(cls):
         return rand_name(cls.__name__)
diff --git a/functional/test_template_resource.py b/functional/test_template_resource.py
index 80dcdce..2e929b4 100644
--- a/functional/test_template_resource.py
+++ b/functional/test_template_resource.py
@@ -361,11 +361,7 @@
     def setUp(self):
         super(TemplateResourceUpdateFailedTest, self).setUp()
         self.client = self.orchestration_client
-        if self.conf.keypair_name:
-            self.keypair_name = self.conf.keypair_name
-        else:
-            self.keypair = self.create_keypair()
-            self.keypair_name = self.keypair.id
+        self.assign_keypair()
 
     def test_update_on_failed_create(self):
         # create a stack with "server" dependent on "keypair", but
diff --git a/functional/test_validation.py b/functional/test_validation.py
index 52309cd..2d9669d 100644
--- a/functional/test_validation.py
+++ b/functional/test_validation.py
@@ -29,11 +29,7 @@
         if not self.conf.instance_type:
             raise self.skipException("No instance_type configured to test")
 
-        if self.conf.keypair_name:
-            self.keypair_name = self.conf.keypair_name
-        else:
-            self.keypair = self.create_keypair()
-            self.keypair_name = self.keypair.id
+        self.assign_keypair()
 
     def test_stack_validate_provider_references_parent_resource(self):
         template = '''
diff --git a/scenario/test_server_cfn_init.py b/scenario/test_server_cfn_init.py
index 9d85120..a98747c 100644
--- a/scenario/test_server_cfn_init.py
+++ b/scenario/test_server_cfn_init.py
@@ -25,18 +25,11 @@
         super(CfnInitIntegrationTest, self).setUp()
         if not self.conf.image_ref:
             raise self.skipException("No image configured to test")
+        self.assign_keypair()
         self.client = self.orchestration_client
         self.template_name = 'test_server_cfn_init.yaml'
         self.sub_dir = 'templates'
 
-    def assign_keypair(self):
-        if self.conf.keypair_name:
-            self.keypair = None
-            self.keypair_name = self.conf.keypair_name
-        else:
-            self.keypair = self.create_keypair()
-            self.keypair_name = self.keypair.id
-
     def launch_stack(self):
         net = self._get_default_network()
         parameters = {
@@ -114,6 +107,5 @@
                 raise e
 
     def test_server_cfn_init(self):
-        self.assign_keypair()
         sid = self.launch_stack()
         self.check_stack(sid)
diff --git a/scenario/test_volumes.py b/scenario/test_volumes.py
index 6a80297..a60ffb0 100644
--- a/scenario/test_volumes.py
+++ b/scenario/test_volumes.py
@@ -27,11 +27,7 @@
     def setUp(self):
         super(VolumeBackupRestoreIntegrationTest, self).setUp()
         self.client = self.orchestration_client
-        if self.conf.keypair_name:
-            self.keypair_name = self.conf.keypair_name
-        else:
-            self.keypair = self.create_keypair()
-            self.keypair_name = self.keypair.id
+        self.assign_keypair()
         self.volume_description = 'A test volume description 123'
         self.volume_size = self.conf.volume_size