def test_543334_HeatStackCreateWithURL(self): """ This test case checks creation of stack using template URL. Steps: 1. Create stack using template URL. 2. Check that the stack is in the list of stacks 3. Check that stack status is 'CREATE_COMPLETE' 4. Delete stack """ stack_name = "empty__543334" template_url = ( "https://raw.githubusercontent.com/tkuterina/" "mos-integration-tests/master/mos_tests/heat/" "templates/empty_heat_templ.yaml" ) timeout = 20 if common_functions.is_stack_exists(stack_name, self.heat): uid = common_functions.get_stack_id(self.heat, stack_name) common_functions.delete_stack(self.heat, uid) stack_data = { "stack_name": stack_name, "template_url": template_url, "parameters": {"param": "some_param_string"}, "timeout_mins": timeout, } output = self.heat.stacks.create(**stack_data) stack_id = output["stack"]["id"] self.uid_list.append(stack_id) stacks_id = [s.id for s in self.heat.stacks.list()] self.assertIn(stack_id, stacks_id) self.assertTrue(common_functions.check_stack_status(stack_name, self.heat, "CREATE_COMPLETE", timeout))
def test_543338_StackCancelUpdate(self): """ This test check the possibility to cancel update Steps: 1. Create new stack 2. Launch heat action-suspend stack_name 3. Launch heat stack-update stack_name 4. Launch heat stack-cancel-update stack_name while update operation is in progress 5. Check state of stack after cancel update """ # network ID, image ID, InstanceType networks = self.neutron.list_networks()["networks"] internal_net = [net["id"] for net in networks if not net["router:external"]][0] image_id = self.nova.images.list()[0].id instance_type = "m1.tiny" # Stack creation stack_name = "stack_to_cancel_update_543338" template_content = common_functions.read_template(self.templates_dir, "heat_create_neutron_stack_template.yaml") initial_params = {"network": internal_net, "ImageId": image_id, "InstanceType": instance_type} stack_id = common_functions.create_stack(self.heat, stack_name, template_content, initial_params) self.uid_list.append(stack_id) # Stack update (from m1.tiny to m1.small) upd_params = {"network": internal_net, "ImageId": image_id, "InstanceType": "m1.small"} d_updated = {"stack_name": stack_name, "template": template_content, "parameters": upd_params} self.heat.stacks.update(stack_id, **d_updated) # Perform cancel-update operation # when stack status is 'UPDATE_IN_PROGRESS' timeout = time.time() + 60 while True: status = self.heat.stacks.get(stack_id).to_dict()["stack_status"] if status == "UPDATE_IN_PROGRESS": self.heat.actions.cancel_update(stack_id) break elif time.time() > timeout: raise AttributeError( "Unable to find stack in 'UPDATE_IN_PROGRESS' state. " "Status '{0}' doesn't allow to perform cancel-update".format(status) ) else: time.sleep(1) # Wait for rollback competed and check self.assertTrue(common_functions.check_stack_status(stack_name, self.heat, "ROLLBACK_COMPLETE", 120))
def test_543333_HeatStackCreateWithTemplate(self): """ This test case checks creation of stack. Steps: 1. Create stack using template file empty_heat_templ.yaml. 2. Check that the stack is in the list of stacks 3. Check that stack status is 'CREATE_COMPLETE' 4. Delete stack """ stack_name = "empty__543333" parameter = "some_param_string" timeout = 20 if common_functions.is_stack_exists(stack_name, self.heat): uid = common_functions.get_stack_id(self.heat, stack_name) common_functions.delete_stack(self.heat, uid) template = common_functions.read_template(self.templates_dir, "empty_heat_templ.yaml") uid = common_functions.create_stack( self.heat, stack_name, template, timeout=timeout, parameters={"param": parameter} ) self.uid_list.append(uid) stacks_id = [s.id for s in self.heat.stacks.list()] self.assertIn(uid, stacks_id) self.assertTrue(common_functions.check_stack_status(stack_name, self.heat, "CREATE_COMPLETE", timeout))
def test_543344_HeatStackTemplateShow(self): """ This test case checks representation of template of created stack. Steps: 1. Create stack using template file empty_heat_templ.yaml. 2. Check that template of created stack has correct \ representation. """ stack_name = "empty_stack" timeout = 60 parameter = "some_string" if common_functions.is_stack_exists(stack_name, self.heat): uid = common_functions.get_stack_id(self.heat, stack_name) common_functions.delete_stack(self.heat, uid) template = common_functions.read_template(self.templates_dir, "empty_heat_templ.yaml") uid = common_functions.create_stack( self.heat, stack_name, template, timeout=timeout, parameters={"param": parameter} ) self.uid_list.append(uid) self.assertTrue(common_functions.check_stack_status(stack_name, self.heat, "CREATE_COMPLETE")) stack_dict = {s.stack_name: s.id for s in self.heat.stacks.list()} stack_id = stack_dict[stack_name] stack_template = self.heat.stacks.template(stack_id) self.assertIsInstance(stack_template, dict)
def test_543335_HeatStackDelete(self): """ This test case checks deletion of stack. Steps: 1. Create stack using template file empty_heat_templ.yaml. 2. Check that the stack is in the list of stacks 3. Delete the stack. 4. Check that the stack is absent in the list of stacks """ stack_name = "empty_543335" timeout = 20 parameter = "some_param_string" if common_functions.is_stack_exists(stack_name, self.heat): uid = common_functions.get_stack_id(self.heat, stack_name) common_functions.delete_stack(self.heat, uid) template = common_functions.read_template(self.templates_dir, "empty_heat_templ.yaml") uid = common_functions.create_stack( self.heat, stack_name, template, timeout=timeout, parameters={"param": parameter} ) self.assertTrue(common_functions.check_stack_status(stack_name, self.heat, "CREATE_COMPLETE", timeout)) common_functions.delete_stack(self.heat, uid) stacks = [s.stack_name for s in self.heat.stacks.list()] self.assertNotIn(stack_name, stacks)