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
 
