diff --git a/valet/api/v1/controllers/groups.py b/valet/api/v1/controllers/groups.py index 0d4912f..74887b6 100644 --- a/valet/api/v1/controllers/groups.py +++ b/valet/api/v1/controllers/groups.py @@ -74,13 +74,16 @@ def tenant_servers_in_group(tenant_id, group): server_list = server_list_for_group(group) nova = nova_client() for server_id in server_list: - try: - server = nova.servers.get(server_id) - if server.tenant_id == tenant_id: - servers.append(server_id) - except Exception as ex: # TODO(JD): update DB - api.LOG.error("Instance %s could not be found" % server_id) - api.LOG.error(ex) + if server_id == "none": + servers.append(server_id) + else: + try: + server = nova.servers.get(server_id) + if server.tenant_id == tenant_id: + servers.append(server_id) + except Exception as ex: # TODO(JD): update DB + api.LOG.error("Instance %s could not be found" % server_id) + api.LOG.error(ex) if len(servers) > 0: return servers diff --git a/valet/engine/optimizer/db_connect/music_handler.py b/valet/engine/optimizer/db_connect/music_handler.py index 766a012..ad76eeb 100644 --- a/valet/engine/optimizer/db_connect/music_handler.py +++ b/valet/engine/optimizer/db_connect/music_handler.py @@ -378,9 +378,13 @@ class MusicHandler(object): if _e.heat_resource_uuid is not None and \ _e.heat_resource_uuid != "none": heat_resource_uuid = _e.heat_resource_uuid + else: + heat_resource_uuid = _e.uuid if _e.heat_root_stack_id is not None and \ _e.heat_root_stack_id != "none": heat_root_stack_id = _e.heat_root_stack_id + else: + heat_root_stack_id = _e.uuid data = { 'uuid': _e.uuid, diff --git a/valet/engine/optimizer/ostro/ostro.py b/valet/engine/optimizer/ostro/ostro.py index f1e929f..ea07676 100755 --- a/valet/engine/optimizer/ostro/ostro.py +++ b/valet/engine/optimizer/ostro/ostro.py @@ -277,8 +277,7 @@ class Ostro(object): break for vm_id in vm_id_list: - if vm_id[2] != "none": - vm_list.append(vm_id[2]) + vm_list.append(vm_id[2]) return vm_list diff --git a/valet/tests/tempest/scenario/scenario_base.py b/valet/tests/tempest/scenario/scenario_base.py index a5a2c82..178777e 100644 --- a/valet/tests/tempest/scenario/scenario_base.py +++ b/valet/tests/tempest/scenario/scenario_base.py @@ -114,8 +114,9 @@ class ScenarioTestCase(test.BaseTestCase): instance.name, generated_name) instance.name = generated_name - self.wait_for_stack(stack_name, env_data, template_resources) + res = self.wait_for_stack(stack_name, env_data, template_resources) self.addCleanup(self.delete_stack) + return res except Exception: self.log.log_error("Failed to create stack", traceback.format_exc()) @@ -139,14 +140,21 @@ class ScenarioTestCase(test.BaseTestCase): traceback.format_exc()) def get_env_file(self, template): - """Return file.read for env file or return None.""" - env_url = template.replace(".yml", ".env") + try: + env_url = template.replace(".yml", ".env") - if os.path.exists(env_url): - with open(env_url, "r") as f: - return f.read() - else: - return None + if os.path.exists(env_url): + with open(env_url, "r") as f: + filedata = f.read() + filedata = filedata.replace('image_place_holder', CONF.compute.image_ref) + filedata = filedata.replace('flavor_place_holder', CONF.compute.flavor_ref) + filedata = filedata.replace('network_place_holder', CONF.compute.fixed_network_name) + + return filedata + else: + return None + except Exception: + self.log.log_error("Failed to load environment file", traceback.format_exc()) def _delete_group(self, group_id): self.valet_client.delete_all_members(group_id) @@ -166,7 +174,8 @@ class ScenarioTestCase(test.BaseTestCase): def wait_for_stack(self, stack_name, env_data, template_resources): """Use heat client to create stack, then wait for status.""" try: - self.log.log_info("Trying to create stack") + self.log.log_info("Trying to create stack " + "Waiting for stack status") new_stack = self.heat_client.create_stack( stack_name, environment=env_data, template=template_resources.template_data) @@ -178,18 +187,15 @@ class ScenarioTestCase(test.BaseTestCase): failure_pattern='^.*CREATE_FAILED$') except exceptions.StackBuildErrorException as ex: - if "Ostro error" in str(ex): - if self.tries > 0: - self.log.log_error( - "Ostro error - try number %d" % + if "Ostro error" in str(ex) and self.tries > 0: + self.log.log_error("Ostro error - try number %d" % (CONF.valet.TRIES_TO_CREATE - self.tries + 2)) - self.tries -= 1 - self.delete_stack() - time.sleep(CONF.valet.PAUSE) - self.wait_for_stack(stack_name, env_data, - template_resources) - else: - raise + self.tries -= 1 + self.delete_stack() + time.sleep(CONF.valet.PAUSE) + self.wait_for_stack(stack_name, env_data, template_resources) else: - self.log.log_error("Failed to create stack", - traceback.format_exc()) + self.log.log_error("Failed to create stack", traceback.format_exc()) + return False + + return True diff --git a/valet/tests/tempest/scenario/templates/affinity_basic_2_instances.env b/valet/tests/tempest/scenario/templates/affinity_basic_2_instances.env index c29a0c8..275cfcc 100644 --- a/valet/tests/tempest/scenario/templates/affinity_basic_2_instances.env +++ b/valet/tests/tempest/scenario/templates/affinity_basic_2_instances.env @@ -1,3 +1,4 @@ parameters: - instance_image: cirros-0.3.4-x86_64 - instance_flavor: m1.tiny + instance_image: image_place_holder + instance_flavor: flavor_place_holder + network: network_place_holder diff --git a/valet/tests/tempest/scenario/templates/affinity_basic_2_instances.yml b/valet/tests/tempest/scenario/templates/affinity_basic_2_instances.yml index bea779c..9469b36 100644 --- a/valet/tests/tempest/scenario/templates/affinity_basic_2_instances.yml +++ b/valet/tests/tempest/scenario/templates/affinity_basic_2_instances.yml @@ -9,28 +9,29 @@ parameters: instance_flavor: type: string + network: + type: string + resources: my-instance-1: type: OS::Nova::Server properties: name: affinity-1 - # key_name: ssh-key image: { get_param: instance_image } flavor: { get_param: instance_flavor } - # networks: - # - network: 0c405776-0c37-4212-a814-e8aa539b32b5 + networks: + - network: { get_param: network } my-instance-2: type: OS::Nova::Server properties: name: affinity-2 - #key_name: ssh-key image: { get_param: instance_image } flavor: { get_param: instance_flavor } - #networks: - # - network: 0c405776-0c37-4212-a814-e8aa539b32b5 - # # - network: 0c405776-0c37-4212-a814-e8aa539b32b5 + networks: + - network: { get_param: network } + test-affinity-group3: type: ATT::Valet::GroupAssignment diff --git a/valet/tests/tempest/scenario/templates/diversity_basic_2_instances.env b/valet/tests/tempest/scenario/templates/diversity_basic_2_instances.env index 5694c26..275cfcc 100644 --- a/valet/tests/tempest/scenario/templates/diversity_basic_2_instances.env +++ b/valet/tests/tempest/scenario/templates/diversity_basic_2_instances.env @@ -1,3 +1,4 @@ parameters: - instance_image: cirros-0.3.4-x86_64 - instance_flavor: m1.tiny \ No newline at end of file + instance_image: image_place_holder + instance_flavor: flavor_place_holder + network: network_place_holder diff --git a/valet/tests/tempest/scenario/templates/diversity_basic_2_instances.yml b/valet/tests/tempest/scenario/templates/diversity_basic_2_instances.yml index 62156fa..6542646 100644 --- a/valet/tests/tempest/scenario/templates/diversity_basic_2_instances.yml +++ b/valet/tests/tempest/scenario/templates/diversity_basic_2_instances.yml @@ -9,37 +9,29 @@ parameters: instance_flavor: type: string + network: + type: string + resources: my-instance-1: type: OS::Nova::Server properties: name: test diversity -1 - #key_name: my_key image: { get_param: instance_image } flavor: { get_param: instance_flavor } - #networks: - #- network: 0c405776-0c37-4212-a814-e8aa539b32b5 + networks: + - network: { get_param: network } my-instance-2: type: OS::Nova::Server properties: name: test diversity -2 - #key_name: my_key image: { get_param: instance_image } flavor: { get_param: instance_flavor } - #networks: - #- network: 0c405776-0c37-4212-a814-e8aa539b32b5 + networks: + - network: { get_param: network } - # my-instance-3: - # type: OS::Nova::Server - # properties: - # name: test-3 - # key_name: my_key - # image: cirros-0.3.4-x86_64-disk.img - # flavor: m1.small - # networks: - # - network: 0c405776-0c37-4212-a814-e8aa539b32b5 test-diversity-group: type: ATT::Valet::GroupAssignment @@ -49,7 +41,6 @@ resources: resources: - {get_resource: my-instance-1} - {get_resource: my-instance-2} - #- {get_resource: my-instance-3} outputs: instance_name-1: diff --git a/valet/tests/tempest/scenario/templates/diversity_between_2_affinity.env b/valet/tests/tempest/scenario/templates/diversity_between_2_affinity.env index 5694c26..275cfcc 100644 --- a/valet/tests/tempest/scenario/templates/diversity_between_2_affinity.env +++ b/valet/tests/tempest/scenario/templates/diversity_between_2_affinity.env @@ -1,3 +1,4 @@ parameters: - instance_image: cirros-0.3.4-x86_64 - instance_flavor: m1.tiny \ No newline at end of file + instance_image: image_place_holder + instance_flavor: flavor_place_holder + network: network_place_holder diff --git a/valet/tests/tempest/scenario/templates/diversity_between_2_affinity.yml b/valet/tests/tempest/scenario/templates/diversity_between_2_affinity.yml index d8cb27c..542ade4 100644 --- a/valet/tests/tempest/scenario/templates/diversity_between_2_affinity.yml +++ b/valet/tests/tempest/scenario/templates/diversity_between_2_affinity.yml @@ -9,39 +9,46 @@ parameters: instance_flavor: type: string + network: + type: string + resources: my-instance-1: type: OS::Nova::Server properties: name: test-1 - #key_name: my_key image: { get_param: instance_image } flavor: { get_param: instance_flavor } + networks: + - network: { get_param: network } my-instance-2: type: OS::Nova::Server properties: name: test-2 - #key_name: my_key image: { get_param: instance_image } flavor: { get_param: instance_flavor } + networks: + - network: { get_param: network } my-instance-3: type: OS::Nova::Server properties: name: test-3 - # key_name: my_key image: { get_param: instance_image } flavor: { get_param: instance_flavor } + networks: + - network: { get_param: network } my-instance-4: type: OS::Nova::Server properties: name: test-4 - #key_name: my_key image: { get_param: instance_image } flavor: { get_param: instance_flavor } + networks: + - network: { get_param: network } test-affinity-group1: diff --git a/valet/tests/tempest/scenario/templates/exclusivity_basic_2_instances.env b/valet/tests/tempest/scenario/templates/exclusivity_basic_2_instances.env index 5694c26..275cfcc 100644 --- a/valet/tests/tempest/scenario/templates/exclusivity_basic_2_instances.env +++ b/valet/tests/tempest/scenario/templates/exclusivity_basic_2_instances.env @@ -1,3 +1,4 @@ parameters: - instance_image: cirros-0.3.4-x86_64 - instance_flavor: m1.tiny \ No newline at end of file + instance_image: image_place_holder + instance_flavor: flavor_place_holder + network: network_place_holder diff --git a/valet/tests/tempest/scenario/templates/exclusivity_basic_2_instances.yml b/valet/tests/tempest/scenario/templates/exclusivity_basic_2_instances.yml index 16e2c83..25fd02f 100644 --- a/valet/tests/tempest/scenario/templates/exclusivity_basic_2_instances.yml +++ b/valet/tests/tempest/scenario/templates/exclusivity_basic_2_instances.yml @@ -9,31 +9,29 @@ parameters: instance_flavor: type: string + network: + type: string + resources: my-instance-1: type: OS::Nova::Server properties: name: test exclusivity-1 - #key_name: my_key image: { get_param: instance_image } flavor: { get_param: instance_flavor } + networks: + - network: { get_param: network } my-instance-2: type: OS::Nova::Server properties: name: test exclusivity-2 - #key_name: my_key image: { get_param: instance_image } flavor: { get_param: instance_flavor } + networks: + - network: { get_param: network } + - # my-instance-3: - # type: OS::Nova::Server - # properties: - # name: test-3 - # #key_name: my_key - # image: cirros-0.3.4-x86_64-disk.img - # flavor: m1.tiny - test-exclusivity-group: type: ATT::Valet::GroupAssignment properties: @@ -43,13 +41,3 @@ resources: resources: - {get_resource: my-instance-1} - {get_resource: my-instance-2} - - - # test-diversity-group: - # type: ATT::CloudQoS::ResourceGroup - # properties: - # relationship: diversity - # level: host - # resources: - # - {get_resource: my-instance-1} - # - {get_resource: my-instance-3}