add create_server_with_extras

most of the servers tests weren't using the create_server
utility method, which meant no automatic server tracking and
class level cleanup.

Most of these tests used the underlying create_server with
additional keyword args, and expected access to the resp in
the return, so a new method was needed for easiest transition.

create_server_with_extras shouldn't run synchronously because
we need to test states of servers besides ACTIVE

Pair programmed with Matt Treinish <treinish@linux.vnet.ibm.com>

Change-Id: I736ea755a512723eb6b9bae57e2112985c46ea45
diff --git a/tempest/tests/compute/base.py b/tempest/tests/compute/base.py
index 5094b46..1195cca 100644
--- a/tempest/tests/compute/base.py
+++ b/tempest/tests/compute/base.py
@@ -193,6 +193,24 @@
         cls.servers.append(server)
         return server
 
+    @classmethod
+    def create_server_with_extras(cls, name, image_id=None,
+                                  flavor=None, **kwargs):
+        # TODO(sdague) transitional function because many
+        # server tests were using extra args and resp so can't
+        # easily be ported to create_server. Will be merged
+        # later
+        if not flavor:
+            flavor = cls.flavor_ref
+        if not image_id:
+            image_id = cls.image_ref
+
+        resp, server = cls.servers_client.create_server(name,
+                                                        image_id, flavor,
+                                                        **kwargs)
+        cls.servers.append(server)
+        return resp, server
+
     def wait_for(self, condition):
         """Repeatedly calls condition() until a timeout"""
         start_time = int(time.time())
diff --git a/tempest/tests/compute/servers/test_disk_config.py b/tempest/tests/compute/servers/test_disk_config.py
index 638e093..7ff666f 100644
--- a/tempest/tests/compute/servers/test_disk_config.py
+++ b/tempest/tests/compute/servers/test_disk_config.py
@@ -39,10 +39,10 @@
     def test_rebuild_server_with_manual_disk_config(self):
         """A server should be rebuilt using the manual disk config option"""
         name = rand_name('server')
-        resp, server = self.client.create_server(name,
-                                                 self.image_ref,
-                                                 self.flavor_ref,
-                                                 disk_config='AUTO')
+        resp, server = self.create_server_with_extras(name,
+                                                      self.image_ref,
+                                                      self.flavor_ref,
+                                                      disk_config='AUTO')
 
         #Wait for the server to become active
         self.client.wait_for_server_status(server['id'], 'ACTIVE')
@@ -69,10 +69,10 @@
     def test_rebuild_server_with_auto_disk_config(self):
         """A server should be rebuilt using the auto disk config option"""
         name = rand_name('server')
-        resp, server = self.client.create_server(name,
-                                                 self.image_ref,
-                                                 self.flavor_ref,
-                                                 disk_config='MANUAL')
+        resp, server = self.create_server_with_extras(name,
+                                                      self.image_ref,
+                                                      self.flavor_ref,
+                                                      disk_config='MANUAL')
 
         #Wait for the server to become active
         self.client.wait_for_server_status(server['id'], 'ACTIVE')
@@ -100,10 +100,10 @@
     def test_resize_server_from_manual_to_auto(self):
         """A server should be resized from manual to auto disk config"""
         name = rand_name('server')
-        resp, server = self.client.create_server(name,
-                                                 self.image_ref,
-                                                 self.flavor_ref,
-                                                 disk_config='MANUAL')
+        resp, server = self.create_server_with_extras(name,
+                                                      self.image_ref,
+                                                      self.flavor_ref,
+                                                      disk_config='MANUAL')
 
         #Wait for the server to become active
         self.client.wait_for_server_status(server['id'], 'ACTIVE')
@@ -126,10 +126,10 @@
     def test_resize_server_from_auto_to_manual(self):
         """A server should be resized from auto to manual disk config"""
         name = rand_name('server')
-        resp, server = self.client.create_server(name,
-                                                 self.image_ref,
-                                                 self.flavor_ref,
-                                                 disk_config='AUTO')
+        resp, server = self.create_server_with_extras(name,
+                                                      self.image_ref,
+                                                      self.flavor_ref,
+                                                      disk_config='AUTO')
 
         #Wait for the server to become active
         self.client.wait_for_server_status(server['id'], 'ACTIVE')
diff --git a/tempest/tests/compute/servers/test_server_actions.py b/tempest/tests/compute/servers/test_server_actions.py
index 835afb0..63308fc 100644
--- a/tempest/tests/compute/servers/test_server_actions.py
+++ b/tempest/tests/compute/servers/test_server_actions.py
@@ -36,9 +36,9 @@
 
     def setUp(self):
         self.name = rand_name('server')
-        resp, server = self.client.create_server(self.name,
-                                                 self.image_ref,
-                                                 self.flavor_ref)
+        resp, server = self.create_server_with_extras(self.name,
+                                                      self.image_ref,
+                                                      self.flavor_ref)
         self.server_id = server['id']
         self.password = server['adminPass']
         self.client.wait_for_server_status(self.server_id, 'ACTIVE')
diff --git a/tempest/tests/compute/servers/test_server_metadata.py b/tempest/tests/compute/servers/test_server_metadata.py
index 844e394..0198e4e 100644
--- a/tempest/tests/compute/servers/test_server_metadata.py
+++ b/tempest/tests/compute/servers/test_server_metadata.py
@@ -80,7 +80,8 @@
             meta = {key: 'data1'}
             name = rand_name('server')
             self.assertRaises(exceptions.OverLimit,
-                              self.client.create_server, name, self.image_ref,
+                              self.create_server_with_extras,
+                              name, self.image_ref,
                               self.flavor_ref, meta=meta)
 
         # no teardown - all creates should fail
diff --git a/tempest/tests/compute/servers/test_server_personality.py b/tempest/tests/compute/servers/test_server_personality.py
index 3003a52..320bac4 100644
--- a/tempest/tests/compute/servers/test_server_personality.py
+++ b/tempest/tests/compute/servers/test_server_personality.py
@@ -41,8 +41,9 @@
             personality.append({'path': path,
                                 'contents': base64.b64encode(file_contents)})
         try:
-            self.client.create_server(name, self.image_ref, self.flavor_ref,
-                                      personality=personality)
+            self.create_server_with_extras(name, self.image_ref,
+                                           self.flavor_ref,
+                                           personality=personality)
         except exceptions.OverLimit:
             pass
         else:
@@ -61,16 +62,16 @@
             max_file_limit = \
                 self.user_client.get_specific_absolute_limit("maxPersonality")
 
-            personality = []
+            person = []
             for i in range(0, int(max_file_limit)):
                 path = 'etc/test' + str(i) + '.txt'
-                personality.append({
+                person.append({
                     'path': path,
                     'contents': base64.b64encode(file_contents),
                 })
-            resp, server = self.client.create_server(name, self.image_ref,
-                                                     self.flavor_ref,
-                                                     personality=personality)
+            resp, server = self.create_server_with_extras(name, self.image_ref,
+                                                          self.flavor_ref,
+                                                          personality=person)
             self.assertEqual('202', resp['status'])
 
         except Exception:
diff --git a/tempest/tests/compute/servers/test_servers.py b/tempest/tests/compute/servers/test_servers.py
index c534829..e7a8ec7 100644
--- a/tempest/tests/compute/servers/test_servers.py
+++ b/tempest/tests/compute/servers/test_servers.py
@@ -33,9 +33,10 @@
         try:
             server = None
             name = rand_name('server')
-            resp, server = self.client.create_server(name, self.image_ref,
-                                                     self.flavor_ref,
-                                                     adminPass='testpassword')
+            resp, server = self.create_server_with_extras(name, self.image_ref,
+                                                          self.flavor_ref,
+                                                          adminPass='test'
+                                                          'password')
 
             #Verify the password is set correctly in the response
             self.assertEqual('testpassword', server['adminPass'])
@@ -52,14 +53,14 @@
             id1 = None
             id2 = None
             server_name = rand_name('server')
-            resp, server = self.client.create_server(server_name,
-                                                     self.image_ref,
-                                                     self.flavor_ref)
+            resp, server = self.create_server_with_extras(server_name,
+                                                          self.image_ref,
+                                                          self.flavor_ref)
             self.client.wait_for_server_status(server['id'], 'ACTIVE')
             id1 = server['id']
-            resp, server = self.client.create_server(server_name,
-                                                     self.image_ref,
-                                                     self.flavor_ref)
+            resp, server = self.create_server_with_extras(server_name,
+                                                          self.image_ref,
+                                                          self.flavor_ref)
             self.client.wait_for_server_status(server['id'], 'ACTIVE')
             id2 = server['id']
             self.assertNotEqual(id1, id2, "Did not create a new server")
@@ -83,10 +84,10 @@
             resp, keypair = self.keypairs_client.create_keypair(key_name)
             resp, body = self.keypairs_client.list_keypairs()
             server_name = rand_name('server')
-            resp, server = self.client.create_server(server_name,
-                                                     self.image_ref,
-                                                     self.flavor_ref,
-                                                     key_name=key_name)
+            resp, server = self.create_server_with_extras(server_name,
+                                                          self.image_ref,
+                                                          self.flavor_ref,
+                                                          key_name=key_name)
             self.assertEqual('202', resp['status'])
             self.client.wait_for_server_status(server['id'], 'ACTIVE')
             resp, server = self.client.get_server(server['id'])
@@ -101,8 +102,8 @@
         try:
             server = None
             name = rand_name('server')
-            resp, server = self.client.create_server(name, self.image_ref,
-                                                     self.flavor_ref)
+            resp, server = self.create_server_with_extras(name, self.image_ref,
+                                                          self.flavor_ref)
             self.client.wait_for_server_status(server['id'], 'ACTIVE')
 
             #Update the server with a new name
@@ -128,8 +129,8 @@
         try:
             server = None
             name = rand_name('server')
-            resp, server = self.client.create_server(name, self.image_ref,
-                                                     self.flavor_ref)
+            resp, server = self.create_server_with_extras(name, self.image_ref,
+                                                          self.flavor_ref)
             self.client.wait_for_server_status(server['id'], 'ACTIVE')
 
             #Update the IPv4 and IPv6 access addresses
@@ -152,8 +153,8 @@
     def test_delete_server_while_in_building_state(self):
         """Delete a server while it's VM state is Building"""
         name = rand_name('server')
-        resp, server = self.client.create_server(name, self.image_ref,
-                                                 self.flavor_ref)
+        resp, server = self.create_server_with_extras(name, self.image_ref,
+                                                      self.flavor_ref)
         self.client.wait_for_server_status(server['id'], 'BUILD')
         resp, _ = self.client.delete_server(server['id'])
         self.assertEqual('204', resp['status'])
diff --git a/tempest/tests/compute/servers/test_servers_negative.py b/tempest/tests/compute/servers/test_servers_negative.py
index 60f3daf..c9ed5ed 100644
--- a/tempest/tests/compute/servers/test_servers_negative.py
+++ b/tempest/tests/compute/servers/test_servers_negative.py
@@ -42,8 +42,9 @@
     def test_server_name_blank(self):
         """Create a server with name parameter empty"""
         try:
-                resp, server = self.client.create_server('', self.image_ref,
-                                                         self.flavor_ref)
+                resp, server = self.create_server_with_extras('',
+                                                              self.image_ref,
+                                                              self.flavor_ref)
         except exceptions.BadRequest:
             pass
         else:
@@ -53,14 +54,14 @@
     def test_personality_file_contents_not_encoded(self):
         """Use an unencoded file when creating a server with personality"""
         file_contents = 'This is a test file.'
-        personality = [{'path': '/etc/testfile.txt',
-                        'contents': file_contents}]
+        person = [{'path': '/etc/testfile.txt',
+                   'contents': file_contents}]
 
         try:
-            resp, server = self.client.create_server('test',
-                                                     self.image_ref,
-                                                     self.flavor_ref,
-                                                     personality=personality)
+            resp, server = self.create_server_with_extras('test',
+                                                          self.image_ref,
+                                                          self.flavor_ref,
+                                                          personality=person)
         except exceptions.BadRequest:
             pass
         else:
@@ -70,8 +71,8 @@
     def test_create_with_invalid_image(self):
         """Create a server with an unknown image"""
         try:
-            resp, server = self.client.create_server('fail', -1,
-                                                     self.flavor_ref)
+            resp, server = self.create_server_with_extras('fail', -1,
+                                                          self.flavor_ref)
         except exceptions.BadRequest:
             pass
         else:
@@ -81,7 +82,7 @@
     def test_create_with_invalid_flavor(self):
         """Create a server with an unknown flavor"""
         try:
-            self.client.create_server('fail', self.image_ref, -1)
+            self.create_server_with_extras('fail', self.image_ref, -1)
         except exceptions.BadRequest:
             pass
         else:
@@ -90,13 +91,13 @@
     @attr(type='negative')
     def test_invalid_access_ip_v4_address(self):
         """An access IPv4 address must match a valid address pattern"""
-        accessIPv4 = '1.1.1.1.1.1'
+        IPv4 = '1.1.1.1.1.1'
         name = rand_name('server')
         try:
-            resp, server = self.client.create_server(name,
-                                                     self.image_ref,
-                                                     self.flavor_ref,
-                                                     accessIPv4=accessIPv4)
+            resp, server = self.create_server_with_extras(name,
+                                                          self.image_ref,
+                                                          self.flavor_ref,
+                                                          accessIPv4=IPv4)
         except exceptions.BadRequest:
             pass
         else:
@@ -105,13 +106,13 @@
     @attr(type='negative')
     def test_invalid_ip_v6_address(self):
         """An access IPv6 address must match a valid address pattern"""
-        accessIPv6 = 'notvalid'
+        IPv6 = 'notvalid'
         name = rand_name('server')
         try:
-            resp, server = self.client.create_server(name,
-                                                     self.image_ref,
-                                                     self.flavor_ref,
-                                                     accessIPv6=accessIPv6)
+            resp, server = self.create_server_with_extras(name,
+                                                          self.image_ref,
+                                                          self.flavor_ref,
+                                                          accessIPv6=IPv6)
         except exceptions.BadRequest:
             pass
         else:
@@ -121,9 +122,9 @@
     def test_reboot_deleted_server(self):
         """Reboot a deleted server"""
         self.name = rand_name('server')
-        resp, create_server = self.client.create_server(self.name,
-                                                        self.image_ref,
-                                                        self.flavor_ref)
+        resp, create_server = self.create_server_with_extras(self.name,
+                                                             self.image_ref,
+                                                             self.flavor_ref)
         self.server_id = create_server['id']
         self.client.delete_server(self.server_id)
         self.client.wait_for_server_termination(self.server_id)
@@ -138,9 +139,9 @@
     def test_rebuild_deleted_server(self):
         """Rebuild a deleted server"""
         self.name = rand_name('server')
-        resp, create_server = self.client.create_server(self.name,
-                                                        self.image_ref,
-                                                        self.flavor_ref)
+        resp, create_server = self.create_server_with_extras(self.name,
+                                                             self.image_ref,
+                                                             self.flavor_ref)
         self.server_id = create_server['id']
         self.client.delete_server(self.server_id)
         self.client.wait_for_server_termination(self.server_id)
@@ -157,7 +158,8 @@
         """Create a server with a numeric name"""
 
         server_name = 12345
-        self.assertRaises(exceptions.BadRequest, self.client.create_server,
+        self.assertRaises(exceptions.BadRequest,
+                          self.create_server_with_extras,
                           server_name, self.image_ref, self.flavor_ref)
 
     @attr(type='negative')
@@ -165,7 +167,8 @@
         """Create a server with name length exceeding 256 characters"""
 
         server_name = 'a' * 256
-        self.assertRaises(exceptions.BadRequest, self.client.create_server,
+        self.assertRaises(exceptions.BadRequest,
+                          self.create_server_with_extras,
                           server_name, self.image_ref, self.flavor_ref)
 
     @attr(type='negative')
@@ -175,7 +178,8 @@
         server_name = rand_name('server')
         networks = [{'fixed_ip': '10.0.1.1', 'uuid':'a-b-c-d-e-f-g-h-i-j'}]
 
-        self.assertRaises(exceptions.BadRequest, self.client.create_server,
+        self.assertRaises(exceptions.BadRequest,
+                          self.create_server_with_extras,
                           server_name, self.image_ref, self.flavor_ref,
                           networks=networks)
 
@@ -185,7 +189,8 @@
 
         key_name = rand_name('key')
         server_name = rand_name('server')
-        self.assertRaises(exceptions.BadRequest, self.client.create_server,
+        self.assertRaises(exceptions.BadRequest,
+                          self.create_server_with_extras,
                           server_name, self.image_ref, self.flavor_ref,
                           key_name=key_name)
 
@@ -196,7 +201,8 @@
 
         server_name = rand_name('server')
         metadata = {'a': 'b' * 260}
-        self.assertRaises(exceptions.OverLimit, self.client.create_server,
+        self.assertRaises(exceptions.OverLimit,
+                          self.create_server_with_extras,
                           server_name, self.image_ref, self.flavor_ref,
                           meta=metadata)