def test_router_interface_validate(self): def find_rsrc(resource, name_or_id, cmd_resource=None): id_mapping = { 'router': 'ae478782-53c0-4434-ab16-49900c88016c', 'subnet': '8577cafd-8e98-4059-a2e6-8a771b4d318e', 'port': '9577cafd-8e98-4059-a2e6-8a771b4d318e' } return id_mapping.get(resource) self.find_rsrc_mock.side_effect = find_rsrc t = template_format.parse(neutron_template) json = t['resources']['router_interface'] json['properties'] = { 'router_id': 'ae478782-53c0-4434-ab16-49900c88016c', 'subnet_id': '8577cafd-8e98-4059-a2e6-8a771b4d318e', 'port_id': '9577cafd-8e98-4059-a2e6-8a771b4d318e' } stack = utils.parse_stack(t) resource_defns = stack.t.resource_definitions(stack) res = router.RouterInterface('router_interface', resource_defns['router_interface'], stack) self.assertRaises(exception.ResourcePropertyConflict, res.validate) json['properties'] = { 'router_id': 'ae478782-53c0-4434-ab16-49900c88016c', 'port_id': '9577cafd-8e98-4059-a2e6-8a771b4d318e' } stack = utils.parse_stack(t) resource_defns = stack.t.resource_definitions(stack) res = router.RouterInterface('router_interface', resource_defns['router_interface'], stack) self.assertIsNone(res.validate()) json['properties'] = { 'router_id': 'ae478782-53c0-4434-ab16-49900c88016c', 'subnet_id': '8577cafd-8e98-4059-a2e6-8a771b4d318e' } stack = utils.parse_stack(t) resource_defns = stack.t.resource_definitions(stack) res = router.RouterInterface('router_interface', resource_defns['router_interface'], stack) self.assertIsNone(res.validate()) json['properties'] = { 'router_id': 'ae478782-53c0-4434-ab16-49900c88016c' } stack = utils.parse_stack(t) resource_defns = stack.t.resource_definitions(stack) res = router.RouterInterface('router_interface', resource_defns['router_interface'], stack) ex = self.assertRaises(exception.PropertyUnspecifiedError, res.validate) self.assertEqual( "At least one of the following properties " "must be specified: subnet, port.", six.text_type(ex))
def create_router_interface(self, t, stack, resource_name, properties=None): properties = properties or {} t['resources'][resource_name]['properties'] = properties resource_defns = stack.t.resource_definitions(stack) rsrc = router.RouterInterface( 'router_interface', resource_defns[resource_name], stack) scheduler.TaskRunner(rsrc.create)() self.assertEqual((rsrc.CREATE, rsrc.COMPLETE), rsrc.state) return rsrc
def test_router_interface_validate(self): neutronV20.find_resourceid_by_name_or_id( mox.IsA(neutronclient.Client), 'port', '9577cafd-8e98-4059-a2e6-8a771b4d318e', cmd_resource=None, ).MultipleTimes().AndReturn('9577cafd-8e98-4059-a2e6-8a771b4d318e') neutronV20.find_resourceid_by_name_or_id( mox.IsA(neutronclient.Client), 'router', 'ae478782-53c0-4434-ab16-49900c88016c', cmd_resource=None, ).MultipleTimes().AndReturn('ae478782-53c0-4434-ab16-49900c88016c') neutronV20.find_resourceid_by_name_or_id( mox.IsA(neutronclient.Client), 'subnet', '9577cafd-8e98-4059-a2e6-8a771b4d318e', cmd_resource=None, ).MultipleTimes().AndReturn('9577cafd-8e98-4059-a2e6-8a771b4d318e') self.m.ReplayAll() t = template_format.parse(neutron_template) json = t['resources']['router_interface'] json['properties'] = { 'router_id': 'ae478782-53c0-4434-ab16-49900c88016c', 'subnet_id': '9577cafd-8e98-4059-a2e6-8a771b4d318e', 'port_id': '9577cafd-8e98-4059-a2e6-8a771b4d318e'} stack = utils.parse_stack(t) resource_defns = stack.t.resource_definitions(stack) res = router.RouterInterface('router_interface', resource_defns['router_interface'], stack) self.assertRaises(exception.ResourcePropertyConflict, res.validate) json['properties'] = { 'router_id': 'ae478782-53c0-4434-ab16-49900c88016c', 'port_id': '9577cafd-8e98-4059-a2e6-8a771b4d318e'} stack = utils.parse_stack(t) resource_defns = stack.t.resource_definitions(stack) res = router.RouterInterface('router_interface', resource_defns['router_interface'], stack) self.assertIsNone(res.validate()) json['properties'] = { 'router_id': 'ae478782-53c0-4434-ab16-49900c88016c', 'subnet_id': '9577cafd-8e98-4059-a2e6-8a771b4d318e'} stack = utils.parse_stack(t) resource_defns = stack.t.resource_definitions(stack) res = router.RouterInterface('router_interface', resource_defns['router_interface'], stack) self.assertIsNone(res.validate()) json['properties'] = { 'router_id': 'ae478782-53c0-4434-ab16-49900c88016c'} stack = utils.parse_stack(t) resource_defns = stack.t.resource_definitions(stack) res = router.RouterInterface('router_interface', resource_defns['router_interface'], stack) ex = self.assertRaises(exception.PropertyUnspecifiedError, res.validate) self.assertEqual("At least one of the following properties " "must be specified: subnet, port.", six.text_type(ex)) self.m.VerifyAll()