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)