def delete_network_postcommit(self, context): try: network = context.current segments = context.network_segments vxlan_segments = [] if segments: for segment in segments: if segment[api.NETWORK_TYPE] == p_const.TYPE_VXLAN: vxlan_segments.append(segment) if not vxlan_segments: return stale_entries = ovsvapp_db.get_stale_local_vlans_for_network( network['id']) if stale_entries: for (vcenter, cluster, lvid) in stale_entries: network_info = {'vcenter_id': vcenter, 'cluster_id': cluster, 'lvid': lvid, 'network_id': network['id']} if len(vxlan_segments) == 1: seg_id = vxlan_segments[0][api.SEGMENTATION_ID] network_info.update({'segmentation_id': seg_id}) LOG.debug("Spawning thread for releasing network " "VNI allocations for %s.", network_info) self.threadpool.spawn_n(self._notify_agent, network_info) LOG.info(_("Spawned a thread for releasing network " "vni allocations for network: %s."), network_info) except Exception: LOG.exception(_("Failed checking stale local vlan allocations."))
def delete_network_postcommit(self, context): network = context.current segments = context.network_segments vxlan_segments = [] if segments: for segment in segments: if segment[api.NETWORK_TYPE] in self.supported_network_types: vxlan_segments.append(segment) if not vxlan_segments: return try: stale_entries = ovsvapp_db.get_stale_local_vlans_for_network( network['id']) if stale_entries: for (vcenter, cluster, lvid) in stale_entries: network_info = {'vcenter_id': vcenter, 'cluster_id': cluster, 'lvid': lvid, 'network_id': network['id']} if len(vxlan_segments) == 1: seg_id = vxlan_segments[0][api.SEGMENTATION_ID] net_type = vxlan_segments[0][api.NETWORK_TYPE] network_info.update({'segmentation_id': seg_id, 'network_type': net_type}) LOG.debug("Spawning thread for releasing network " "VNI allocations for %s.", network_info) self.threadpool.spawn_n(self._notify_agent, network_info) LOG.info(_LI("Spawned a thread for releasing network " "vni allocations for network: %s."), network_info) except Exception: LOG.exception(_LE("Failed checking stale local vlan allocations."))
def test_get_stale_local_vlans_for_network_no_stale_networks(self): net1_port_info = self._form_port_info_dict("fake_vcenter", "fake_cluster", "net1") # Allocate network. ovsvapp_db.get_local_vlan(net1_port_info) # Setup for release. lvid = ovsvapp_db.check_to_reclaim_local_vlan(net1_port_info) self.assertEqual(1, lvid) ovsvapp_db.release_local_vlan(net1_port_info) ret_val = ovsvapp_db.get_stale_local_vlans_for_network("net1") self.assertIsNone(ret_val)
def test_get_stale_local_vlans_for_network_no_stale_networks(self): net1_port_info = self._form_port_info_dict('fake_vcenter', 'fake_cluster', 'net1') # Allocate network. ovsvapp_db.get_local_vlan(net1_port_info) # Setup for release. lvid = ovsvapp_db.check_to_reclaim_local_vlan(net1_port_info) self.assertEqual(1, lvid) ovsvapp_db.release_local_vlan(net1_port_info) ret_val = ovsvapp_db.get_stale_local_vlans_for_network('net1') self.assertIsNone(ret_val)
def test_get_stale_local_vlans_for_network(self): net1_port1_info = self._form_port_info_dict("fake_vcenter", "fake_cluster1", "net1") ovsvapp_db.get_local_vlan(net1_port1_info) net1_port2_info = self._form_port_info_dict("fake_vcenter", "fake_cluster2", "net1") ovsvapp_db.get_local_vlan(net1_port2_info) lvid = ovsvapp_db.check_to_reclaim_local_vlan(net1_port1_info) self.assertEqual(1, lvid) lvid = ovsvapp_db.check_to_reclaim_local_vlan(net1_port2_info) self.assertEqual(1, lvid) ret_val = ovsvapp_db.get_stale_local_vlans_for_network("net1") self.assertEqual([("fake_vcenter", "fake_cluster1", 1), ("fake_vcenter", "fake_cluster2", 1)], ret_val)
def test_get_stale_local_vlans_for_network(self): net1_port1_info = self._form_port_info_dict('fake_vcenter', 'fake_cluster1', 'net1') ovsvapp_db.get_local_vlan(net1_port1_info) net1_port2_info = self._form_port_info_dict('fake_vcenter', 'fake_cluster2', 'net1') ovsvapp_db.get_local_vlan(net1_port2_info) lvid = ovsvapp_db.check_to_reclaim_local_vlan(net1_port1_info) self.assertEqual(1, lvid) lvid = ovsvapp_db.check_to_reclaim_local_vlan(net1_port2_info) self.assertEqual(1, lvid) ret_val = ovsvapp_db.get_stale_local_vlans_for_network('net1') self.assertEqual([('fake_vcenter', 'fake_cluster1', 1), ('fake_vcenter', 'fake_cluster2', 1)], ret_val)