def test_list_software_deployments(self): stack_name = 'test_list_software_deployments' t = template_format.parse(tools.wp_template) stack = utils.parse_stack(t, stack_name=stack_name) tools.setup_mocks(self.m, stack) self.m.ReplayAll() stack.store() stack.create() server = stack['WebServer'] server_id = server.resource_id deployment = self._create_software_deployment( server_id=server_id) deployment_id = deployment['id'] self.assertIsNotNone(deployment) deployments = self.engine.list_software_deployments( self.ctx, server_id=None) self.assertIsNotNone(deployments) deployment_ids = [x['id'] for x in deployments] self.assertIn(deployment_id, deployment_ids) self.assertIn(deployment, deployments) deployments = self.engine.list_software_deployments( self.ctx, server_id=str(uuid.uuid4())) self.assertEqual([], deployments) deployments = self.engine.list_software_deployments( self.ctx, server_id=server.resource_id) self.assertEqual([deployment], deployments) rs = resource_objects.Resource.get_by_physical_resource_id( self.ctx, server_id) self.assertEqual(deployment['config_id'], rs.rsrc_metadata.get('deployments')[0]['id'])
def test_list_software_deployments(self): stack_name = 'test_list_software_deployments' t = template_format.parse(tools.wp_template) stack = utils.parse_stack(t, stack_name=stack_name) tools.setup_mocks(self.m, stack) self.m.ReplayAll() stack.store() stack.create() server = stack['WebServer'] server_id = server.resource_id deployment = self._create_software_deployment(server_id=server_id) deployment_id = deployment['id'] self.assertIsNotNone(deployment) deployments = self.engine.list_software_deployments(self.ctx, server_id=None) self.assertIsNotNone(deployments) deployment_ids = [x['id'] for x in deployments] self.assertIn(deployment_id, deployment_ids) self.assertIn(deployment, deployments) deployments = self.engine.list_software_deployments(self.ctx, server_id=str( uuid.uuid4())) self.assertEqual([], deployments) deployments = self.engine.list_software_deployments( self.ctx, server_id=server.resource_id) self.assertEqual([deployment], deployments) rs = resource_objects.Resource.get_by_physical_resource_id( self.ctx, server_id) self.assertEqual(deployment['config_id'], rs.rsrc_metadata.get('deployments')[0]['id'])
def test_wordpress_single_instance_stack_create(self): stack = tools.get_stack("test_stack", utils.dummy_context()) tools.setup_mocks(self.m, stack) self.m.ReplayAll() stack.store() stack.create() self.assertIsNotNone(stack["WebServer"]) self.assertTrue(int(stack["WebServer"].resource_id) > 0) self.assertNotEqual(stack["WebServer"].ipaddress, "0.0.0.0")
def test_wordpress_single_instance_stack_adopt_fail(self): t = template_format.parse(tools.wp_template) template = templatem.Template(t) ctx = utils.dummy_context() adopt_data = {"resources": {"WebServer1": {"resource_id": "test-res-id"}}} stack = parser.Stack(ctx, "test_stack", template, adopt_stack_data=adopt_data) tools.setup_mocks(self.m, stack) self.m.ReplayAll() stack.store() stack.adopt() self.assertIsNotNone(stack["WebServer"]) expected = "Resource ADOPT failed: Exception: resources.WebServer: " "Resource ID was not provided." self.assertEqual(expected, stack.status_reason) self.assertEqual((stack.ADOPT, stack.FAILED), stack.state)
def test_wordpress_single_instance_stack_adopt(self): t = template_format.parse(tools.wp_template) template = templatem.Template(t) ctx = utils.dummy_context() adopt_data = {"resources": {"WebServer": {"resource_id": "test-res-id"}}} stack = parser.Stack(ctx, "test_stack", template, adopt_stack_data=adopt_data) tools.setup_mocks(self.m, stack) self.m.ReplayAll() stack.store() stack.adopt() self.assertIsNotNone(stack["WebServer"]) self.assertEqual("test-res-id", stack["WebServer"].resource_id) self.assertEqual((stack.ADOPT, stack.COMPLETE), stack.state)
def test_wordpress_single_instance_stack_delete(self): ctx = utils.dummy_context() stack = tools.get_stack("test_stack", ctx) fc = tools.setup_mocks(self.m, stack, mock_keystone=False) self.m.ReplayAll() stack_id = stack.store() stack.create() db_s = stack_object.Stack.get_by_id(ctx, stack_id) self.assertIsNotNone(db_s) self.assertIsNotNone(stack["WebServer"]) self.assertTrue(int(stack["WebServer"].resource_id) > 0) self.patchobject(fc.servers, "delete", side_effect=fakes_nova.fake_exception()) stack.delete() rsrc = stack["WebServer"] self.assertEqual((rsrc.DELETE, rsrc.COMPLETE), rsrc.state) self.assertEqual((stack.DELETE, stack.COMPLETE), rsrc.state) self.assertIsNone(stack_object.Stack.get_by_id(ctx, stack_id)) db_s.refresh() self.assertEqual("DELETE", db_s.action) self.assertEqual("COMPLETE", db_s.status)
def test_stack_authorize_stack_user(self): self.ctx = utils.dummy_context() self.ctx.aws_creds = '{"ec2Credentials": {"access": "4567"}}' stack_name = "stack_authorize_stack_user" stack = tools.get_stack(stack_name, self.ctx, user_policy_template) self.stack = stack fc = tools.setup_mocks(self.m, stack) self.patchobject(fc.servers, "delete", side_effect=fakes_nova.fake_exception()) self.m.ReplayAll() stack.store() stack.create() self.assertTrue(self.eng._authorize_stack_user(self.ctx, self.stack, "WebServer")) self.assertFalse(self.eng._authorize_stack_user(self.ctx, self.stack, "CfnUser")) self.assertFalse(self.eng._authorize_stack_user(self.ctx, self.stack, "NoSuchResource")) self.m.VerifyAll()
def test_metadata_software_deployments(self): stack_name = 'test_metadata_software_deployments' t = template_format.parse(tools.wp_template) stack = utils.parse_stack(t, stack_name=stack_name) tools.setup_mocks(self.m, stack) self.m.ReplayAll() stack.store() stack.create() server = stack['WebServer'] server_id = server.resource_id stack_user_project_id = str(uuid.uuid4()) d1 = self._create_software_deployment( config_group='mygroup', server_id=server_id, config_name='02_second', stack_user_project_id=stack_user_project_id) d2 = self._create_software_deployment( config_group='mygroup', server_id=server_id, config_name='01_first', stack_user_project_id=stack_user_project_id) d3 = self._create_software_deployment( config_group='myothergroup', server_id=server_id, config_name='03_third', stack_user_project_id=stack_user_project_id) metadata = self.engine.metadata_software_deployments( self.ctx, server_id=server_id) self.assertEqual(3, len(metadata)) self.assertEqual('mygroup', metadata[1]['group']) self.assertEqual('mygroup', metadata[0]['group']) self.assertEqual('myothergroup', metadata[2]['group']) self.assertEqual(d1['config_id'], metadata[1]['id']) self.assertEqual(d2['config_id'], metadata[0]['id']) self.assertEqual(d3['config_id'], metadata[2]['id']) self.assertEqual('01_first', metadata[0]['name']) self.assertEqual('02_second', metadata[1]['name']) self.assertEqual('03_third', metadata[2]['name']) # assert that metadata via metadata_software_deployments matches # metadata via server resource rs = resource_objects.Resource.get_by_physical_resource_id( self.ctx, server_id) self.assertEqual(metadata, rs.rsrc_metadata.get('deployments')) deployments = self.engine.metadata_software_deployments( self.ctx, server_id=str(uuid.uuid4())) self.assertEqual([], deployments) # assert get results when the context tenant_id matches # the stored stack_user_project_id ctx = utils.dummy_context(tenant_id=stack_user_project_id) metadata = self.engine.metadata_software_deployments( ctx, server_id=server_id) self.assertEqual(3, len(metadata)) # assert get no results when the context tenant_id is unknown ctx = utils.dummy_context(tenant_id=str(uuid.uuid4())) metadata = self.engine.metadata_software_deployments( ctx, server_id=server_id) self.assertEqual(0, len(metadata)) # assert None config is filtered out obj_conf = self._create_dummy_config_object() side_effect = [obj_conf, obj_conf, None] self.patchobject(software_config_object.SoftwareConfig, '_from_db_object', side_effect=side_effect) metadata = self.engine.metadata_software_deployments( self.ctx, server_id=server_id) self.assertEqual(2, len(metadata))
def test_metadata_software_deployments(self): stack_name = 'test_metadata_software_deployments' t = template_format.parse(tools.wp_template) stack = utils.parse_stack(t, stack_name=stack_name) tools.setup_mocks(self.m, stack) self.m.ReplayAll() stack.store() stack.create() server = stack['WebServer'] server_id = server.resource_id stack_user_project_id = str(uuid.uuid4()) d1 = self._create_software_deployment( config_group='mygroup', server_id=server_id, config_name='02_second', stack_user_project_id=stack_user_project_id) d2 = self._create_software_deployment( config_group='mygroup', server_id=server_id, config_name='01_first', stack_user_project_id=stack_user_project_id) d3 = self._create_software_deployment( config_group='myothergroup', server_id=server_id, config_name='03_third', stack_user_project_id=stack_user_project_id) metadata = self.engine.metadata_software_deployments( self.ctx, server_id=server_id) self.assertEqual(3, len(metadata)) self.assertEqual('mygroup', metadata[1]['group']) self.assertEqual('mygroup', metadata[0]['group']) self.assertEqual('myothergroup', metadata[2]['group']) self.assertEqual(d1['config_id'], metadata[1]['id']) self.assertEqual(d2['config_id'], metadata[0]['id']) self.assertEqual(d3['config_id'], metadata[2]['id']) self.assertEqual('01_first', metadata[0]['name']) self.assertEqual('02_second', metadata[1]['name']) self.assertEqual('03_third', metadata[2]['name']) # assert that metadata via metadata_software_deployments matches # metadata via server resource rs = resource_objects.Resource.get_by_physical_resource_id( self.ctx, server_id) self.assertEqual(metadata, rs.rsrc_metadata.get('deployments')) deployments = self.engine.metadata_software_deployments( self.ctx, server_id=str(uuid.uuid4())) self.assertEqual([], deployments) # assert get results when the context tenant_id matches # the stored stack_user_project_id ctx = utils.dummy_context(tenant_id=stack_user_project_id) metadata = self.engine.metadata_software_deployments( ctx, server_id=server_id) self.assertEqual(3, len(metadata)) # assert get no results when the context tenant_id is unknown ctx = utils.dummy_context(tenant_id=str(uuid.uuid4())) metadata = self.engine.metadata_software_deployments( ctx, server_id=server_id) self.assertEqual(0, len(metadata))
def test_metadata_software_deployments(self): stack_name = "test_metadata_software_deployments" t = template_format.parse(tools.wp_template) stack = utils.parse_stack(t, stack_name=stack_name) tools.setup_mocks(self.m, stack) self.m.ReplayAll() stack.store() stack.create() server = stack["WebServer"] server_id = server.resource_id stack_user_project_id = str(uuid.uuid4()) d1 = self._create_software_deployment( config_group="mygroup", server_id=server_id, config_name="02_second", stack_user_project_id=stack_user_project_id, ) d2 = self._create_software_deployment( config_group="mygroup", server_id=server_id, config_name="01_first", stack_user_project_id=stack_user_project_id, ) d3 = self._create_software_deployment( config_group="myothergroup", server_id=server_id, config_name="03_third", stack_user_project_id=stack_user_project_id, ) metadata = self.engine.metadata_software_deployments(self.ctx, server_id=server_id) self.assertEqual(3, len(metadata)) self.assertEqual("mygroup", metadata[1]["group"]) self.assertEqual("mygroup", metadata[0]["group"]) self.assertEqual("myothergroup", metadata[2]["group"]) self.assertEqual(d1["config_id"], metadata[1]["id"]) self.assertEqual(d2["config_id"], metadata[0]["id"]) self.assertEqual(d3["config_id"], metadata[2]["id"]) self.assertEqual("01_first", metadata[0]["name"]) self.assertEqual("02_second", metadata[1]["name"]) self.assertEqual("03_third", metadata[2]["name"]) # assert that metadata via metadata_software_deployments matches # metadata via server resource rsrcs = resource_objects.Resource.get_all_by_physical_resource_id(self.ctx, server_id) self.assertEqual(metadata, rsrcs[0].rsrc_metadata.get("deployments")) deployments = self.engine.metadata_software_deployments(self.ctx, server_id=str(uuid.uuid4())) self.assertEqual([], deployments) # assert get results when the context tenant_id matches # the stored stack_user_project_id ctx = utils.dummy_context(tenant_id=stack_user_project_id) metadata = self.engine.metadata_software_deployments(ctx, server_id=server_id) self.assertEqual(3, len(metadata)) # assert get no results when the context tenant_id is unknown ctx = utils.dummy_context(tenant_id=str(uuid.uuid4())) metadata = self.engine.metadata_software_deployments(ctx, server_id=server_id) self.assertEqual(0, len(metadata)) # assert None config is filtered out obj_conf = self._create_dummy_config_object() side_effect = [obj_conf, obj_conf, None] self.patchobject(software_config_object.SoftwareConfig, "_from_db_object", side_effect=side_effect) metadata = self.engine.metadata_software_deployments(self.ctx, server_id=server_id) self.assertEqual(2, len(metadata))