Merge "Fixed issue with white space after pep8 review Code review changes for Fixes for lp:903989 Change-Id: Ic345f0b30f24764a6f933684577323042fdeb8aa"
diff --git a/tempest/services/nova/json/servers_client.py b/tempest/services/nova/json/servers_client.py
index 9b8ea59..b3d2ed6 100644
--- a/tempest/services/nova/json/servers_client.py
+++ b/tempest/services/nova/json/servers_client.py
@@ -16,43 +16,43 @@
self.headers = {'Content-Type': 'application/json',
'Accept': 'application/json'}
- def create_server(self, name, image_ref, flavor_ref, meta=None,
- personality=None, accessIPv4=None, accessIPv6=None,
- adminPass=None):
+ def create_server(self, name, image_ref, flavor_ref, **kwargs):
"""
Creates an instance of a server.
- name: The name of the server.
- image_ref: The reference to the image used to build the server.
- flavor_ref: The flavor used to build the server.
+ name (Required): The name of the server.
+ image_ref (Required): Reference to the image used to build the server.
+ flavor_ref (Required): The flavor used to build the server.
+ Following optional keyword arguments are accepted:
adminPass: Sets the initial root password.
- meta: A dictionary of values to be used as metadata.
+ metadata: A dictionary of values to be used as metadata.
personality: A list of dictionaries for files to be injected into
the server.
+ security_groups: A list of security group dicts.
+ networks: A list of network dicts with UUID and fixed_ip.
+ user_data: User data for instance.
+ availability_zone: Availability zone in which to launch instance.
accessIPv4: The IPv4 access address for the server.
accessIPv6: The IPv6 access address for the server.
+ min_count: Count of minimum number of instances to launch.
+ max_count: Count of maximum number of instances to launch.
"""
-
post_body = {
'name': name,
'imageRef': image_ref,
'flavorRef': flavor_ref,
+ 'metadata': kwargs.get('meta'),
+ 'personality': kwargs.get('personality'),
+ 'adminPass': kwargs.get('adminPass'),
+ 'security_groups': kwargs.get('security_groups'),
+ 'networks': kwargs.get('networks'),
+ 'user_data': kwargs.get('user_data'),
+ 'availability_zone': kwargs.get('availability_zone'),
+ 'accessIPv4': kwargs.get('accessIPv4'),
+ 'accessIPv6': kwargs.get('accessIPv6'),
+ 'min_count': kwargs.get('min_count'),
+ 'max_count': kwargs.get('max_count'),
}
- if meta != None:
- post_body['metadata'] = meta
-
- if personality != None:
- post_body['personality'] = personality
-
- if adminPass != None:
- post_body['adminPass'] = adminPass
-
- if accessIPv4 != None:
- post_body['accessIPv4'] = accessIPv4
-
- if accessIPv6 != None:
- post_body['accessIPv6'] = accessIPv6
-
post_body = json.dumps({'server': post_body})
resp, body = self.client.post('servers', post_body, self.headers)
body = json.loads(body)
@@ -225,7 +225,7 @@
def confirm_resize(self, server_id):
"""Confirms the flavor change for a server"""
post_body = {
- 'confirmResize': null
+ 'confirmResize': None,
}
post_body = json.dumps(post_body)
@@ -236,7 +236,7 @@
def revert_resize(self, server_id):
"""Reverts a server back to its original flavor"""
post_body = {
- 'revertResize': null
+ 'revertResize': None,
}
post_body = json.dumps(post_body)
diff --git a/tempest/tests/test_flavors.py b/tempest/tests/test_flavors.py
index 93b4483..aadcc17 100644
--- a/tempest/tests/test_flavors.py
+++ b/tempest/tests/test_flavors.py
@@ -36,3 +36,13 @@
"""The expected flavor details should be returned"""
resp, flavor = self.client.get_flavor_details(self.flavor_id)
self.assertEqual(self.flavor_id, str(flavor['id']))
+
+ @attr(type='negative')
+ def test_get_non_existant_flavor(self):
+ """flavor details are not returned for non existant flavors"""
+ try:
+ resp, flavor = self.client.get_flavor_details(999)
+ except:
+ pass
+ else:
+ self.fail('Should not get details for a non-existant flavor')
diff --git a/tempest/tests/test_server_actions.py b/tempest/tests/test_server_actions.py
index 0d58fb0..73f470f 100644
--- a/tempest/tests/test_server_actions.py
+++ b/tempest/tests/test_server_actions.py
@@ -24,34 +24,36 @@
def setUp(self):
self.name = rand_name('server')
- resp, self.server = self.client.create_server(self.name,
- self.image_ref,
- self.flavor_ref)
- self.client.wait_for_server_status(self.server['id'], 'ACTIVE')
+ resp, server = self.client.create_server(self.name,
+ self.image_ref,
+ self.flavor_ref)
+ self.server_id = server['id']
+
+ self.client.wait_for_server_status(self.server_id, 'ACTIVE')
def tearDown(self):
- self.client.delete_server(self.server['id'])
+ self.client.delete_server(self.server_id)
@attr(type='smoke')
def test_change_server_password(self):
"""The server's password should be set to the provided password"""
- resp, body = self.client.change_password(self.server['id'], 'newpass')
+ resp, body = self.client.change_password(self.server_id, 'newpass')
self.assertEqual(202, resp.status)
- self.client.wait_for_server_status(self.server['id'], 'ACTIVE')
+ self.client.wait_for_server_status(self.server_id, 'ACTIVE')
@attr(type='smoke')
def test_reboot_server_hard(self):
""" The server should be power cycled """
- resp, body = self.client.reboot(self.server['id'], 'HARD')
+ resp, body = self.client.reboot(self.server_id, 'HARD')
self.assertEqual(202, resp.status)
- self.client.wait_for_server_status(self.server['id'], 'ACTIVE')
+ self.client.wait_for_server_status(self.server_id, 'ACTIVE')
@attr(type='smoke')
def test_reboot_server_soft(self):
"""The server should be signaled to reboot gracefully"""
- resp, body = self.client.reboot(self.server['id'], 'SOFT')
+ resp, body = self.client.reboot(self.server_id, 'SOFT')
self.assertEqual(202, resp.status)
- self.client.wait_for_server_status(self.server['id'], 'ACTIVE')
+ self.client.wait_for_server_status(self.server_id, 'ACTIVE')
@attr(type='smoke')
def test_rebuild_server(self):
@@ -62,14 +64,14 @@
personality = [{'path': '/etc/rebuild.txt',
'contents': base64.b64encode(file_contents)}]
- resp, rebuilt_server = self.client.rebuild(self.server['id'],
+ resp, rebuilt_server = self.client.rebuild(self.server_id,
self.image_ref_alt,
name=new_name, meta=meta,
personality=personality,
adminPass='rebuild')
#Verify the properties in the initial response are correct
- self.assertEqual(self.server['id'], rebuilt_server['id'])
+ self.assertEqual(self.server_id, rebuilt_server['id'])
self.assertEqual(self.image_ref_alt, rebuilt_server['image']['id'])
self.assertEqual(self.flavor_ref, rebuilt_server['flavor']['id'])
@@ -87,14 +89,14 @@
the provided flavor
"""
- resp, server = self.client.resize(self.id, self.flavor_ref_alt)
+ resp, server = self.client.resize(self.server_id, self.flavor_ref_alt)
self.assertEqual(202, resp.status)
- self.client.wait_for_server_status(self.id, 'VERIFY_RESIZE')
+ self.client.wait_for_server_status(self.server_id, 'VERIFY_RESIZE')
- self.client.confirm_resize(self.id)
- self.client.wait_for_server_status(self.id, 'ACTIVE')
+ self.client.confirm_resize(self.server_id)
+ self.client.wait_for_server_status(self.server_id, 'ACTIVE')
- resp, server = self.client.get_server(self.id)
+ resp, server = self.client.get_server(self.server_id)
self.assertEqual(self.flavor_ref_alt, server['flavor']['id'])
@attr(type='smoke')
@@ -105,12 +107,12 @@
values after a resize is reverted
"""
- resp, server = self.client.resize(self.id, self.flavor_ref_alt)
+ resp, server = self.client.resize(self.server_id, self.flavor_ref_alt)
self.assertEqual(202, resp.status)
- self.client.wait_for_server_status(id, 'VERIFY_RESIZE')
+ self.client.wait_for_server_status(self.server_id, 'VERIFY_RESIZE')
- self.client.revert_resize(self.id)
- self.client.wait_for_server_status(id, 'ACTIVE')
+ self.client.revert_resize(self.server_id)
+ self.client.wait_for_server_status(self.server_id, 'ACTIVE')
- resp, server = self.client.get_server(id)
+ resp, server = self.client.get_server(self.server_id)
self.assertEqual(self.flavor_ref, server['flavor']['id'])