Ejemplo n.º 1
0
 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'])
Ejemplo n.º 2
0
 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'])
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
    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'])
Ejemplo n.º 6
0
 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)
Ejemplo n.º 7
0
 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 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'])
Ejemplo n.º 9
0
 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})