def test_reset_ea_for_range(self): range_ea = { 'CMP Type': { 'value': 'OpenStack' }, 'Cloud API Owned': { 'value': 'True' }, 'Tenant ID': { 'value': 'test-id' }, 'Tenant Name': { 'value': 'tenant-name' }, 'Account': { 'value': 'admin' } } ib_range_ea = ib_objects.EA.from_dict(range_ea) ib_range_mock = mock.Mock(extattrs=ib_range_ea) ea_manager.reset_ea_for_range(ib_range_mock) expected_ea = { 'Cloud API Owned': { 'value': 'N/A' }, 'CMP Type': { 'value': 'N/A' }, 'Tenant ID': { 'value': 'N/A' } } ib_range_mock.extattrs.ea_dict == expected_ea
def delete_subnet(self, ib_network=None): """Frees up resources taken by the subnet and removes the subnet. Resources to be released are - DHCP/DNS members are freed if not shared by other subnet(s). - Network view mapping is removed. - Authority member is not freed up for GM but taken care by the agent since it is hard to determine at the subnet scope. """ session = self.ib_cxt.context.session subnet = self.ib_cxt.subnet network = self.ib_cxt.network network_view = self.ib_cxt.mapping.network_view network_id = network.get('id') subnet_id = subnet.get('id') cidr = subnet.get('cidr') # subnet id is already gone since community plugin already called # subnet delete in db level by the time ipam driver reaches here. dbi.dissociate_network_view(session, network_id, subnet_id) subnet_deletable = (not self.ib_cxt.network_is_shared_or_external or self.grid_config.admin_network_deletion) if subnet_deletable: ib_ipv4_networks = ib_objects.NetworkV4.search_all( self.ib_cxt.connector, network_view=network_view) ib_ipv6_networks = ib_objects.NetworkV6.search_all( self.ib_cxt.connector, network_view=network_view) is_last_subnet_in_netview = (len(ib_ipv4_networks) + len(ib_ipv6_networks)) == 1 self._release_service_members(is_last_subnet_in_netview) # delete ib network self.ib_cxt.ibom.delete_network(network_view, cidr) # if no more network exists, remove network view if is_last_subnet_in_netview: self._remove_network_view() self._restart_services() else: eam.reset_ea_for_network(ib_network) ib_network.update() ib_ranges = ib_objects.IPRange.search_all( self.ib_cxt.connector, network_view=network_view, network=cidr) for ib_range in ib_ranges: eam.reset_ea_for_range(ib_range) ib_range.update()
def delete_subnet(self, ib_network=None): """Frees up resources taken by the subnet and removes the subnet. Resources to be released are - DHCP/DNS members are freed if not shared by other subnet(s). - Network view mapping is removed. - Authority member is not freed up for GM but taken care by the agent since it is hard to determine at the subnet scope. """ session = self.ib_cxt.context.session subnet = self.ib_cxt.subnet network = self.ib_cxt.network network_view = self.ib_cxt.mapping.network_view network_id = network.get('id') subnet_id = subnet.get('id') cidr = subnet.get('cidr') # subnet id is already gone since community plugin already called # subnet delete in db level by the time ipam driver reaches here. dbi.dissociate_network_view(session, network_id, subnet_id) subnet_deletable = (not self.ib_cxt.network_is_shared_or_external or self.grid_config.admin_network_deletion) if subnet_deletable: ib_ipv4_networks = ib_objects.NetworkV4.search_all( self.ib_cxt.connector, network_view=network_view) ib_ipv6_networks = ib_objects.NetworkV6.search_all( self.ib_cxt.connector, network_view=network_view) is_last_subnet_in_netview = (len(ib_ipv4_networks) + len(ib_ipv6_networks)) == 1 self._release_service_members(is_last_subnet_in_netview) # delete ib network self.ib_cxt.ibom.delete_network(network_view, cidr) # if no more network exists, remove network view if is_last_subnet_in_netview: self._remove_network_view() self._restart_services() else: eam.reset_ea_for_network(ib_network) ib_network.update() ib_ranges = ib_objects.IPRange.search_all( self.ib_cxt.connector, network_view=network_view, network=cidr) for ib_range in ib_ranges: eam.reset_ea_for_range(ib_range) ib_range.update()
def test_reset_ea_for_range(self): range_ea = {'CMP Type': {'value': 'OpenStack'}, 'Cloud API Owned': {'value': 'True'}, 'Tenant ID': {'value': 'test-id'}, 'Tenant Name': {'value': 'tenant-name'}, 'Account': {'value': 'admin'}} ib_range_ea = ib_objects.EA.from_dict(range_ea) ib_range_mock = mock.Mock(extattrs=ib_range_ea) ea_manager.reset_ea_for_range(ib_range_mock) expected_ea = {'Cloud API Owned': {'value': 'N/A'}, 'CMP Type': {'value': 'N/A'}, 'Tenant ID': {'value': 'N/A'}} ib_range_mock.extattrs.ea_dict == expected_ea