def test_get_next_authority_member_for_dhcp_with_one_cpm(self): # prepare grid self._create_default_grid() # prepare grid members member_list = [{'member_id': 'm1', 'member_name': 'm1.com', 'member_ip': '10.10.1.1', 'member_ipv6': None, 'member_type': 'GM', 'member_status': 'ON'}, {'member_id': 'm2', 'member_name': 'm2.com', 'member_ip': '10.10.1.2', 'member_ipv6': 'fd44:acb:5df6:1083::22', 'member_type': 'CPM', 'member_status': 'ON'}] self._create_members(member_list, self.grid_id) # prepare network views netview_dict = {'default': 'm1'} self._create_network_views(netview_dict) # test for network view owning member (authority member) # the authority member must has the least number of network views authority_member = infoblox_db.get_next_authority_member_for_dhcp( self.ctx.session, self.grid_id) expected_member_id = member_list[1]['member_id'] self.assertEqual(expected_member_id, authority_member.member_id)
def test_get_next_authority_member_for_dhcp_with_one_cpm(self): # prepare grid self._create_default_grid() # prepare grid members member_list = [{ 'member_id': 'm1', 'member_name': 'm1.com', 'member_ip': '10.10.1.1', 'member_ipv6': None, 'member_type': 'GM', 'member_status': 'ON' }, { 'member_id': 'm2', 'member_name': 'm2.com', 'member_ip': '10.10.1.2', 'member_ipv6': 'fd44:acb:5df6:1083::22', 'member_type': 'CPM', 'member_status': 'ON' }] self._create_members(member_list, self.grid_id) # prepare network views netview_dict = {'default': 'm1'} self._create_network_views(netview_dict) # test for network view owning member (authority member) # the authority member must has the least number of network views authority_member = infoblox_db.get_next_authority_member_for_dhcp( self.ctx.session, self.grid_id) expected_member_id = member_list[1]['member_id'] self.assertEqual(expected_member_id, authority_member.member_id)
def reserve_authority_member(self): """Reserves the next available authority member. Find the next available authority member and reserve it, then update mapping metadata and load managers if the authority member is CPM. :return: None """ session = self.context.session network_view = self.mapping.network_view authority_member = None # get next available member if self.grid_config.dhcp_support is False: authority_member = dbi.get_next_authority_member_for_ipam( session, self.grid_id) else: # as default, authority member is 'GM' gm_member = utils.find_one_in_list('member_type', const.MEMBER_TYPE_GRID_MASTER, self.discovered_grid_members) authority_member = gm_member cp_member = utils.find_one_in_list('member_type', const.MEMBER_TYPE_CP_MEMBER, self.discovered_grid_members) if self.grid_config.is_cloud_wapi and cp_member: authority_member = dbi.get_next_authority_member_for_dhcp( session, self.grid_id) if not authority_member: # if no CPM available, use GM authority_member = gm_member if not authority_member: raise exc.InfobloxCannotReserveAuthorityMember( network_view=network_view) # create network view mapping and update mapping dns_view = self._get_dns_view() # network_view_id will be updated with nios object id once the network # view is created network_view_id = utils.get_hash() dbi.add_network_view(session, network_view_id, network_view, self.grid_id, authority_member.member_id, False, dns_view, network_view, dns_view, True, False) self.mapping.network_view_id = network_view_id self.mapping.authority_member = authority_member self.mapping.dns_view = dns_view # change connector if authority member is changed. if self.connector.host != self.mapping.authority_member.member_wapi: self._load_managers()
def test_get_next_authority_member_for_dhcp_with_no_cpm(self): # prepare grid self._create_default_grid() # prepare grid members member_list = [{'member_id': 'm1', 'member_name': 'm1.com', 'member_ip': '10.10.1.1', 'member_ipv6': None, 'member_type': 'GM', 'member_status': 'ON'}] self._create_members(member_list, self.grid_id) # prepare network views netview_dict = {'default': 'm1'} self._create_network_views(netview_dict) # test for network view owning member (authority member) # the authority member must has the least number of network views authority_member = infoblox_db.get_next_authority_member_for_dhcp( self.ctx.session, self.grid_id) self.assertIsNone(authority_member)