From d888d9b8edc0e07abc39bd35acca33e029686d54 Mon Sep 17 00:00:00 2001 From: Stephen Finucane Date: Tue, 19 Nov 2019 16:02:59 +0000 Subject: [PATCH] functional: Unify '_build_minimal_create_server_request' implementations Just like I0c56841d098d3e9d72db65be3143f3c893f0b6ba, this is another function that exists in multiple places. Unify the implementations, at the expense of some duplication that we can clean up shortly. Change-Id: I6177ae1c768a234ea17f4ca406a7f3f0bfa329e5 Signed-off-by: Stephen Finucane --- nova/tests/functional/integrated_helpers.py | 65 ++++++++++++++------- 1 file changed, 43 insertions(+), 22 deletions(-) diff --git a/nova/tests/functional/integrated_helpers.py b/nova/tests/functional/integrated_helpers.py index cf0ef20f2ec..595836b8f74 100644 --- a/nova/tests/functional/integrated_helpers.py +++ b/nova/tests/functional/integrated_helpers.py @@ -96,19 +96,29 @@ def _wait_for_state_change(self, admin_api, server, expected_status, return self._wait_for_server_parameter( admin_api, server, {'status': expected_status}, max_retries) - def _build_minimal_create_server_request(self, api, name, image_uuid=None, - flavor_id=None, networks=None, - az=None, host=None): + def _build_minimal_create_server_request(self, api, name=None, + image_uuid=None, flavor_id=None, + networks=None, az=None, + host=None): server = {} - # We now have a valid imageId - server['imageRef'] = image_uuid or api.get_images()[0]['id'] + if not image_uuid: + # NOTE(takashin): In API version 2.36, image APIs were deprecated. + # In API version 2.36 or greater, self.api.get_images() returns + # a 404 error. In that case, 'image_uuid' should be specified. + image_uuid = api.get_images()[0]['id'] + server['imageRef'] = image_uuid + + if not name: + name = ''.join( + random.choice(string.ascii_lowercase) for i in range(10)) + server['name'] = name if not flavor_id: # Set a valid flavorId - flavor_id = api.get_flavors()[1]['id'] - server['flavorRef'] = ('http://fake.server/%s' % flavor_id) - server['name'] = name + flavor_id = api.get_flavors()[0]['id'] + server['flavorRef'] = 'http://fake.server/%s' % flavor_id + if networks is not None: server['networks'] = networks if az is not None: @@ -309,24 +319,35 @@ def get_unused_flavor_name_id(self): def get_invalid_image(self): return uuids.fake - def _build_minimal_create_server_request(self, image_uuid=None): + def _build_minimal_create_server_request(self, name=None, image_uuid=None, + flavor_id=None, networks=None, + az=None, host=None): server = {} - # NOTE(takashin): In API version 2.36, image APIs were deprecated. - # In API version 2.36 or greater, self.api.get_images() returns - # a 404 error. In that case, 'image_uuid' should be specified. - server[self._image_ref_parameter] = (image_uuid or - self.api.get_images()[0]['id']) + if not image_uuid: + # NOTE(takashin): In API version 2.36, image APIs were deprecated. + # In API version 2.36 or greater, self.api.get_images() returns + # a 404 error. In that case, 'image_uuid' should be specified. + image_uuid = self.api.get_images()[0]['id'] + server['imageRef'] = image_uuid - # Set a valid flavorId - flavor = self.api.get_flavors()[0] - LOG.debug("Using flavor: %s", flavor) - server[self._flavor_ref_parameter] = ('http://fake.server/%s' - % flavor['id']) + if not name: + name = ''.join( + random.choice(string.ascii_lowercase) for i in range(10)) + server['name'] = name - # Set a valid server name - server_name = self.get_unused_server_name() - server['name'] = server_name + if not flavor_id: + # Set a valid flavorId + flavor_id = self.api.get_flavors()[0]['id'] + server['flavorRef'] = 'http://fake.server/%s' % flavor_id + + if networks is not None: + server['networks'] = networks + if az is not None: + server['availability_zone'] = az + # This requires at least microversion 2.74 to work + if host is not None: + server['host'] = host return server def _create_flavor_body(self, name, ram, vcpus, disk, ephemeral, id, swap,