def test_reserve_authority_member_without_dhcp_support( self, dbi_next_authority_mock, dbi_network_view_mock): user_id = 'test user' self.grid_config.dhcp_support = False self.grid_config.dns_view = 'test-view' test_authority_member = utils.json_to_obj( 'AuthorityMember', {'member_id': 'member-id', 'member_type': 'GM', 'member_ip': '11.11.1.10', 'member_ipv6': None, 'member_dns_ip': '12.11.1.11', 'member_dns_ipv6': None, 'member_dhcp_ip': None, 'member_dhcp_ipv6': None, 'member_wapi': '11.11.1.10'}) dbi_next_authority_mock.return_value = test_authority_member test_network_view = utils.json_to_obj( 'NetworkView', {'id': 'test-id', 'network_view': 'test-view', 'shared': False}) dbi_network_view_mock.return_value = test_network_view ib_cxt = ib_context.InfobloxContext(self.ctx, user_id, None, None, self.grid_config, self.plugin) ib_cxt.mapping.network_view = test_network_view.network_view ib_cxt.reserve_authority_member() self.assertEqual(test_network_view.network_view, ib_cxt.mapping.network_view) self.assertEqual(test_authority_member.member_id, ib_cxt.mapping.authority_member.member_id)
def test_reserve_authority_member_without_dhcp_support( self, dbi_next_authority_mock, dbi_network_view_mock): user_id = 'test user' self.grid_config.dhcp_support = False self.grid_config.dns_view = 'test-view' test_authority_member = utils.json_to_obj( 'AuthorityMember', {'member_id': 'member-id', 'member_type': 'GM', 'member_ip': '11.11.1.10', 'member_ipv6': None, 'member_dns_ip': '12.11.1.11', 'member_dns_ipv6': None, 'member_dhcp_ip': None, 'member_dhcp_ipv6': None, 'member_wapi': '11.11.1.10'}) dbi_next_authority_mock.return_value = test_authority_member test_network_view = utils.json_to_obj( 'NetworkView', {'id': 'test-id', 'network_view': 'test-view', 'shared': False}) dbi_network_view_mock.return_value = test_network_view ib_cxt = self._get_ib_context(user_id, None, None) ib_cxt.mapping.network_view = test_network_view.network_view ib_cxt.reserve_authority_member() self.assertEqual(test_network_view.network_view, ib_cxt.mapping.network_view) self.assertEqual(test_authority_member.member_id, ib_cxt.mapping.authority_member.member_id)
def test_update_network_sync_with_network_view_mapping( self, netview_mapping_mock, find_row_mock): test_opts = dict() self.helper.prepare_test(test_opts) test_netview_mapping = utils.json_to_obj('NetworkViewMapping', { 'network_view_id': 'test-id', 'network_view': 'test-view' }) test_netview = utils.json_to_obj('NetworkView', { 'id': 'test-id', 'network_view': 'test-view' }) netview_mapping_mock.return_value = [test_netview_mapping] find_row_mock.return_value = test_netview ipam_controller = ipam.IpamAsyncController(self.ib_cxt) with mock.patch.object(dbi, 'get_subnets_by_network_id', return_value=[{ 'id': 'subnet-id', 'cidr': '11.11.1.0/24', 'network_id': 'test_net' }]): ipam_controller.update_network_sync() assert self.ib_cxt.ibom.get_network.called assert self.ib_cxt.ibom.update_network_options.called
def test_get_nameservers_dns_fields(self): test_dhcp_member_1 = utils.json_to_obj( 'DhcpMember', { 'member_id': 'member-id', 'member_type': 'REGULAR', 'member_ip': '11.11.1.12', 'member_ipv6': '2001::1', 'member_dhcp_ip': '12.12.1.12', 'member_dhcp_ipv6': '2009::1', 'member_dns_ip': '15.10.1.2', 'member_dns_ipv6': '2016::1', 'member_name': 'm1', 'member_status': 'ON' }) test_dhcp_member_2 = utils.json_to_obj( 'DhcpMember', { 'member_id': 'member-id', 'member_type': 'CPM', 'member_ip': '11.11.1.13', 'member_ipv6': '2001::2', 'member_dhcp_ip': '12.12.1.13', 'member_dhcp_ipv6': '2009::2', 'member_dns_ip': '15.10.1.3', 'member_dns_ipv6': '2016::2', 'member_name': 'm1', 'member_status': 'ON' }) dns_members = [test_dhcp_member_1, test_dhcp_member_2] self._test_get_nameservers(dns_members, 'member_dns_ip', 4) self._test_get_nameservers(dns_members, 'member_dns_ipv6', 6)
def test_get_dns_members_with_dhcp_support(self): user_id = 'test user' tenant_id = '90fbad5a098a4b7cb98826128d5b40b3' # prepare network network_name = 'Test Network' network = self.plugin_stub.create_network(tenant_id, network_name) # prepare subnet subnet_name = 'Test Subnet' subnet_cidr = '11.11.1.0/24' subnet = self.plugin_stub.create_subnet(tenant_id, subnet_name, network['id'], subnet_cidr) self.grid_config.dhcp_support = True ib_cxt = ib_context.InfobloxContext(self.ctx, user_id, network, subnet, self.grid_config, self.plugin) test_authority_member = utils.json_to_obj( 'AuthorityMember', {'member_id': 'member-id', 'member_type': 'GM', 'member_ip': '11.11.1.11', 'member_ipv6': None, 'member_name': 'gm', 'member_status': 'ON', 'member_wapi': '11.11.1.11'}) ib_cxt.mapping.authority_member = test_authority_member test_dhcp_member_1 = utils.json_to_obj( 'DhcpMember', {'member_id': 'member-id', 'member_type': 'REGULAR', 'member_ip': '11.11.1.12', 'member_ipv6': None, 'member_name': 'm1', 'member_status': 'ON', 'member_wapi': '11.11.1.12'}) test_dhcp_member_2 = utils.json_to_obj( 'DhcpMember', {'member_id': 'member-id', 'member_type': 'CPM', 'member_ip': '11.11.1.13', 'member_ipv6': None, 'member_name': 'm2', 'member_status': 'ON', 'member_wapi': '11.11.1.13'}) ib_cxt.mapping.dhcp_members = [test_dhcp_member_1, test_dhcp_member_2] ib_cxt.mapping.dns_members = [test_dhcp_member_1, test_dhcp_member_2] grid_primaries, grid_secondaries = ib_cxt.get_dns_members() expected_primaries = [ ib_objects.AnyMember(_struct='memberserver', name=test_authority_member.member_name)] expected_secondaries = [ ib_objects.AnyMember(_struct='memberserver', name=test_dhcp_member_1.member_name), ib_objects.AnyMember(_struct='memberserver', name=test_dhcp_member_2.member_name)] self.assertEqual(expected_primaries, grid_primaries) self.assertEqual(expected_secondaries, grid_secondaries)
def test_get_dns_members_with_dhcp_support(self): user_id = 'test user' tenant_id = '90fbad5a098a4b7cb98826128d5b40b3' # prepare network network_name = 'Test Network' network = self.plugin_stub.create_network(tenant_id, network_name) # prepare subnet subnet_name = 'Test Subnet' subnet_cidr = '11.11.1.0/24' subnet = self.plugin_stub.create_subnet(tenant_id, subnet_name, network['id'], subnet_cidr) self.grid_config.dhcp_support = True ib_cxt = self._get_ib_context(user_id, network, subnet) test_authority_member = utils.json_to_obj( 'AuthorityMember', {'member_id': 'member-id', 'member_type': 'GM', 'member_ip': '11.11.1.11', 'member_ipv6': None, 'member_name': 'gm', 'member_status': 'ON', 'member_wapi': '11.11.1.11'}) ib_cxt.mapping.authority_member = test_authority_member test_dhcp_member_1 = utils.json_to_obj( 'DhcpMember', {'member_id': 'member-id', 'member_type': 'REGULAR', 'member_ip': '11.11.1.12', 'member_ipv6': None, 'member_name': 'm1', 'member_status': 'ON', 'member_wapi': '11.11.1.12'}) test_dhcp_member_2 = utils.json_to_obj( 'DhcpMember', {'member_id': 'member-id', 'member_type': 'CPM', 'member_ip': '11.11.1.13', 'member_ipv6': None, 'member_name': 'm2', 'member_status': 'ON', 'member_wapi': '11.11.1.13'}) ib_cxt.mapping.dhcp_members = [test_dhcp_member_1, test_dhcp_member_2] ib_cxt.mapping.dns_members = [test_dhcp_member_1, test_dhcp_member_2] grid_primaries, grid_secondaries = ib_cxt.get_dns_members() expected_primaries = [ ib_objects.AnyMember(_struct='memberserver', name=test_authority_member.member_name)] expected_secondaries = [ ib_objects.AnyMember(_struct='memberserver', name=test_dhcp_member_1.member_name), ib_objects.AnyMember(_struct='memberserver', name=test_dhcp_member_2.member_name)] self.assertEqual(expected_primaries, grid_primaries) self.assertEqual(expected_secondaries, grid_secondaries)
def test_json_to_obj(self): json_obj = {'a': 1, 'b': {'c': {'d': 2}}} my_object = utils.json_to_obj('MyObject', json_obj) self.assertEqual(1, my_object.a) self.assertEqual(type(my_object.b), type(my_object)) self.assertEqual(type(my_object.b.c), type(my_object)) self.assertEqual(2, my_object.b.c.d) json_string = '{"a": 1, "b": {"c": {"d": 2}}}' my_object = utils.json_to_obj('MyObject', json_string) self.assertEqual(1, my_object.a) self.assertEqual(type(my_object.b), type(my_object)) self.assertEqual(type(my_object.b.c), type(my_object)) self.assertEqual(2, my_object.b.c.d)
def test_reserve_authority_member_with_dhcp_support( self, dbi_next_authority_mock, dbi_network_view_mock): user_id = 'test user' tenant_id = '90fbad5a098a4b7cb98826128d5b40b3' # prepare network network_name = 'Test Network' network = self.plugin_stub.create_network(tenant_id, network_name) # prepare subnet subnet_name = 'Test Subnet' subnet_cidr = '11.11.2.0/24' subnet = self.plugin_stub.create_subnet(tenant_id, subnet_name, network['id'], subnet_cidr) self.grid_config.dhcp_support = True test_authority_member = utils.json_to_obj( 'AuthorityMember', { 'member_id': 'member-id', 'member_type': 'CPM', 'member_ip': '11.11.1.11', 'member_ipv6': None, 'member_dns_ip': '12.11.1.11', 'member_dns_ipv6': None, 'member_dhcp_ip': None, 'member_dhcp_ipv6': None, 'member_name': 'm1', 'member_status': 'ON', 'member_wapi': '11.11.1.11' }) dbi_next_authority_mock.return_value = test_authority_member test_network_view = utils.json_to_obj( 'NetworkView', { 'id': 'ZG5zLm5ldHdvcmtfdmlldyQ1', 'network_view': 'hs-view-1', 'shared': False }) dbi_network_view_mock.return_value = test_network_view ib_cxt = ib_context.InfobloxContext(self.ctx, user_id, network, subnet, self.grid_config, self.plugin) ib_cxt.mapping.network_view = test_network_view.network_view ib_cxt.reserve_authority_member() self.assertEqual(test_network_view.network_view, ib_cxt.mapping.network_view) self.assertEqual(test_authority_member.member_id, ib_cxt.mapping.authority_member.member_id)
def __init__(self, neutron_context, user_id, network, subnet, grid_config, plugin=None, grid_members=None, network_views=None, mapping_conditions=None, ib_network=None): self.context = neutron_context self.user_id = user_id self.plugin = plugin if plugin else directory.get_plugin() self.network = network if network else {} self.subnet = subnet if subnet else {} self.ib_network = ib_network self.grid_config = grid_config self.connector = None self.ibom = None self.ip_alloc = None self.dhcp_port_ip_alloc = None self.grid_id = self.grid_config.grid_id self.mapping = utils.json_to_obj( 'Mapping', {'network_view_id': None, 'network_view': None, 'authority_member': None, 'shared': False, 'dns_view': None, 'dhcp_members': [], 'dns_members': [], 'ib_dhcp_members': [], 'ib_nameservers': None}) self._discovered_grid_members = grid_members self._discovered_network_views = network_views self._discovered_mapping_conditions = mapping_conditions self._update()
def test_db_records_to_json(self): grid_1_id = 100 grid_2_id = 200 dbi.add_grid(self.ctx.session, grid_1_id, 'test grid 1', '{"wapi_version": "2.0",' '"wapi_admin_user": '******'{ "name": "admin", "password": "******" }}', 'ON', 'gm-id-1') dbi.add_grid(self.ctx.session, grid_2_id, 'test grid 2', '{}', 'OFF', 'gm-id-2') grids = dbi.get_grids(self.ctx.session) json = utils.db_records_to_json(grids) self.assertEqual('test grid 1', json[0]["grid_name"]) self.assertEqual('test grid 2', json[1]["grid_name"]) json_string = json[0]["grid_connection"] grid_connection_json = jsonutils.loads(json_string) self.assertIsInstance(json_string, six.string_types) self.assertIsInstance(grid_connection_json, dict) self.assertEqual('2.0', grid_connection_json['wapi_version']) self.assertEqual('admin', grid_connection_json['wapi_admin_user']['name']) grid_connection = utils.json_to_obj('grid_connection', grid_connection_json) self.assertEqual('2.0', grid_connection.wapi_version) self.assertEqual('admin', grid_connection.wapi_admin_user.name) self.assertEqual('{}', json[1]["grid_connection"]) self.assertEqual({}, jsonutils.loads(json[1]["grid_connection"]))
def test_get_nameservers_dns_fields(self): test_dhcp_member_1 = utils.json_to_obj( 'DhcpMember', {'member_id': 'member-id', 'member_type': 'REGULAR', 'member_ip': '11.11.1.12', 'member_ipv6': '2001::1', 'member_dhcp_ip': '12.12.1.12', 'member_dhcp_ipv6': '2009::1', 'member_dns_ip': '15.10.1.2', 'member_dns_ipv6': '2016::1', 'member_name': 'm1', 'member_status': 'ON'}) test_dhcp_member_2 = utils.json_to_obj( 'DhcpMember', {'member_id': 'member-id', 'member_type': 'CPM', 'member_ip': '11.11.1.13', 'member_ipv6': '2001::2', 'member_dhcp_ip': '12.12.1.13', 'member_dhcp_ipv6': '2009::2', 'member_dns_ip': '15.10.1.3', 'member_dns_ipv6': '2016::2', 'member_name': 'm1', 'member_status': 'ON'}) dns_members = [test_dhcp_member_1, test_dhcp_member_2] self._test_get_nameservers(dns_members, 'member_dns_ip', 4) self._test_get_nameservers(dns_members, 'member_dns_ipv6', 6)
def test_reserve_authority_member_with_dhcp_support( self, dbi_next_authority_mock, dbi_network_view_mock): user_id = 'test user' tenant_id = '90fbad5a098a4b7cb98826128d5b40b3' # prepare network network_name = 'Test Network' network = self.plugin_stub.create_network(tenant_id, network_name) # prepare subnet subnet_name = 'Test Subnet' subnet_cidr = '11.11.2.0/24' subnet = self.plugin_stub.create_subnet(tenant_id, subnet_name, network['id'], subnet_cidr) self.grid_config.dhcp_support = True test_authority_member = utils.json_to_obj( 'AuthorityMember', {'member_id': 'member-id', 'member_type': 'CPM', 'member_ip': '11.11.1.11', 'member_ipv6': None, 'member_dns_ip': '12.11.1.11', 'member_dns_ipv6': None, 'member_dhcp_ip': None, 'member_dhcp_ipv6': None, 'member_name': 'm1', 'member_status': 'ON', 'member_wapi': '11.11.1.11'}) dbi_next_authority_mock.return_value = test_authority_member test_network_view = utils.json_to_obj( 'NetworkView', {'id': 'ZG5zLm5ldHdvcmtfdmlldyQ1', 'network_view': 'hs-view-1', 'shared': False}) dbi_network_view_mock.return_value = test_network_view ib_cxt = ib_context.InfobloxContext(self.ctx, user_id, network, subnet, self.grid_config, self.plugin) ib_cxt.mapping.network_view = test_network_view.network_view ib_cxt.reserve_authority_member() self.assertEqual(test_network_view.network_view, ib_cxt.mapping.network_view) self.assertEqual(test_authority_member.member_id, ib_cxt.mapping.authority_member.member_id)
def test_reserve_service_members_without_ib_network_for_gm_authortity( self): test_authority_member = utils.json_to_obj( 'AuthorityMember', {'member_id': 'member-id-gm', 'member_type': 'GM', 'member_ip': '11.11.1.11', 'member_ipv6': None, 'member_dns_ip': '12.11.1.11', 'member_dns_ipv6': None, 'member_dhcp_ip': None, 'member_dhcp_ipv6': None, 'member_name': 'gm', 'member_status': 'ON', 'member_wapi': '11.11.1.11'}) self._test_reserve_service_members_without_ib_network_for_gm_auth( test_authority_member, True, [test_authority_member]) self._test_reserve_service_members_without_ib_network_for_gm_auth( test_authority_member, False, [])
def test_reserve_service_members_with_ib_network_with_dhcp_member(self): test_dhcp_member = utils.json_to_obj( 'DhcpMember', {'member_id': 'member-id', 'member_type': 'REGULAR', 'member_ip': '11.11.1.12', 'member_ipv6': None, 'member_dns_ip': '12.11.1.11', 'member_dns_ipv6': None, 'member_dhcp_ip': None, 'member_dhcp_ipv6': None, 'member_name': 'm1', 'member_status': 'ON', 'member_wapi': '11.11.1.11'}) self._test_reserve_service_members_with_ib_network_with_dhcp_member( test_dhcp_member, dns_support=True, expected_dns_members=[test_dhcp_member]) self._test_reserve_service_members_with_ib_network_with_dhcp_member( test_dhcp_member, dns_support=False, expected_dns_members=[])
def test_reserve_service_members_without_ib_network_for_cpm_authortity( self): test_authority_member = utils.json_to_obj( 'AuthorityMember', {'member_id': 'member-id', 'member_type': 'CPM', 'member_ip': '11.11.1.11', 'member_ipv6': None, 'member_dns_ip': '12.11.1.11', 'member_dns_ipv6': None, 'member_dhcp_ip': None, 'member_dhcp_ipv6': None, 'member_name': 'm1', 'member_status': 'ON', 'member_wapi': '11.11.1.11'}) self._test_reserve_service_members_without_ib_network_for_cpm_auth( test_authority_member, dns_support=True, expected_dns_members=[test_authority_member]) self._test_reserve_service_members_without_ib_network_for_cpm_auth( test_authority_member, dns_support=False, expected_dns_members=[])
def test_get_dns_members_without_dhcp_support(self): user_id = 'test user' tenant_id = '90fbad5a098a4b7cb98826128d5b40b3' # prepare network network_name = 'Test Network' network = self.plugin_stub.create_network(tenant_id, network_name) # prepare subnet subnet_name = 'Test Subnet' subnet_cidr = '11.11.1.0/24' subnet = self.plugin_stub.create_subnet(tenant_id, subnet_name, network['id'], subnet_cidr) self.grid_config.dhcp_support = False ib_cxt = ib_context.InfobloxContext(self.ctx, user_id, network, subnet, self.grid_config, self.plugin) test_authority_member = utils.json_to_obj( 'AuthorityMember', { 'member_id': 'member-id', 'member_type': 'GM', 'member_ip': '11.11.1.11', 'member_ipv6': None, 'member_name': 'm1', 'member_status': 'ON', 'member_wapi': '11.11.1.11' }) ib_cxt.mapping.authority_member = test_authority_member grid_primaries, grid_secondaries = ib_cxt.get_dns_members() expected_grid_primaries = [ ib_objects.AnyMember(_struct='memberserver', name=test_authority_member.member_name) ] self.assertEqual(expected_grid_primaries[0].name, grid_primaries[0].name) self.assertEqual(None, grid_secondaries)