def _l2_delete_segment(self, context, nwa_info): session = context.network._plugin_context.session del_segment = db.get_dynamic_segment( session, context.network.current['id'], physical_network=nwa_info['physical_network']) if del_segment: LOG.debug('delete_network_segment %s', del_segment) db.delete_network_segment(session, del_segment['id'])
def test_delete_network_segment(self): segment = {api.NETWORK_TYPE: "vlan", api.PHYSICAL_NETWORK: "physnet1", api.SEGMENTATION_ID: 1} net_segment = self._create_segments([segment])[0] segment_uuid = net_segment[api.ID] ml2_db.delete_network_segment(self.ctx.session, segment_uuid) # Get segment and verify its empty net_segment = ml2_db.get_segment_by_id(self.ctx.session, segment_uuid) self.assertIsNone(net_segment)
def test_delete_network_segment(self): segment = {api.NETWORK_TYPE: 'vlan', api.PHYSICAL_NETWORK: 'physnet1', api.SEGMENTATION_ID: 1} net_segment = self._create_segments([segment])[0] segment_uuid = net_segment[api.ID] ml2_db.delete_network_segment(self.ctx.session, segment_uuid) # Get segment and verify its empty net_segment = ml2_db.get_segment_by_id(self.ctx.session, segment_uuid) self.assertIsNone(net_segment)
def release_dynamic_segment_from_agent(self, context, **kwargs): network_id = kwargs.get('network_id') physical_network = kwargs.get('physical_network') session = db_api.get_session() del_segment = db_ml2.get_dynamic_segment( session, network_id, physical_network=physical_network, ) if del_segment: LOG.debug("release_dynamic_segment segment=%s", del_segment) if del_segment['segmentation_id'] != 0: db_ml2.delete_network_segment(session, del_segment['id'])
def release_dynamic_segment(self, session, segment_id): """Delete a dynamic segment.""" segment = db.get_segment_by_id(session, segment_id) if segment: driver = self.drivers.get(segment.get(api.NETWORK_TYPE)) if driver: driver.obj.release_segment(session, segment) db.delete_network_segment(session, segment_id) else: LOG.error(_LE("Failed to release segment '%s' because " "network type is not supported."), segment) else: LOG.debug("No segment found with id %(segment_id)s", segment_id)
def release_dynamic_segment(self, session, segment_id): """Delete a dynamic segment.""" segment = db.get_segment_by_id(session, segment_id) if segment: driver = self.drivers.get(segment.get(api.NETWORK_TYPE)) if driver: driver.obj.release_segment(session, segment) db.delete_network_segment(session, segment_id) else: LOG.error(_("Failed to release segment '%s' because " "network type is not supported."), segment) else: LOG.debug("No segment found with id %(segment_id)s", segment_id)
def update_network_segments(self, new_obj): obj_id = new_obj.get('id') LOG.debug("update network segments for %(obj_id)s", {'obj_id': obj_id}) try: new_segments = new_obj.get('segments') if new_segments == None: return LOG.debug("new_segments %(new_segments)s", {'new_segments': new_segments}) session = db_api.get_session() with session.begin(subtransactions=True): segments=db.get_network_segments(session, obj_id) LOG.debug("update network segments when old segments %(segments)s", {'segments': segments}) phy_network = self.physical_network for segment in segments: db.delete_network_segment(session, segment.get(api.ID)) for new_segment in new_segments: network_type = new_segment.get(provider.NETWORK_TYPE) model = None filters = {} segmentation_id = new_segment.get(provider.SEGMENTATION_ID) new_segment_db = {api.NETWORK_TYPE: network_type, api.PHYSICAL_NETWORK: new_segment.get(provider.PHYSICAL_NETWORK), api.SEGMENTATION_ID: segmentation_id} if new_segment.get(provider.NETWORK_TYPE) == 'vlan': segment_index = 0 new_segment_db = {api.NETWORK_TYPE: network_type, api.PHYSICAL_NETWORK: phy_network, api.SEGMENTATION_ID: segmentation_id} model = type_vlan.VlanAllocation filters['physical_network'] = phy_network filters['vlan_id'] = segmentation_id else: segment_index = 1 model = type_vxlan.VxlanAllocation filters['vxlan_vni'] = segmentation_id LOG.debug("update network segments when new segment %(new_segment)s", {'new_segment': new_segment_db}) self.allocate_fully_specified_segment(session, network_type, model, **filters) db.add_network_segment(session, obj_id, new_segment_db, segment_index) except Exception: with excutils.save_and_reraise_exception(): LOG.error(_LE("update network segments error on " "%(object_id)s"), {'object_id': obj_id})