Пример #1
0
    def test_get_dynamic_segment(self):
        net_id = uuidutils.generate_uuid()
        segment1 = {
            api.NETWORK_TYPE: 'vlan',
            api.PHYSICAL_NETWORK: 'physnet1',
            api.SEGMENTATION_ID: 1
        }

        self._create_segments([segment1],
                              is_seg_dynamic=True,
                              network_id=net_id)

        segs1 = segments_db.get_dynamic_segment(self.ctx, net_id)
        self.assertEqual('vlan', segs1[api.NETWORK_TYPE])
        self.assertEqual('physnet1', segs1[api.PHYSICAL_NETWORK])
        self.assertEqual(1, segs1[api.SEGMENTATION_ID])

        segs2 = segments_db.get_dynamic_segment(self.ctx,
                                                net_id,
                                                physical_network='physnet1')
        self.assertEqual('vlan', segs2[api.NETWORK_TYPE])
        self.assertEqual('physnet1', segs2[api.PHYSICAL_NETWORK])
        self.assertEqual(1, segs2[api.SEGMENTATION_ID])

        segs3 = segments_db.get_dynamic_segment(self.ctx,
                                                net_id,
                                                segmentation_id=1)
        self.assertEqual('vlan', segs3[api.NETWORK_TYPE])
        self.assertEqual('physnet1', segs3[api.PHYSICAL_NETWORK])
        self.assertEqual(1, segs3[api.SEGMENTATION_ID])
Пример #2
0
    def test_get_dynamic_segment(self):
        net_id = uuidutils.generate_uuid()
        segment1 = {api.NETWORK_TYPE: 'vlan',
                    api.PHYSICAL_NETWORK: 'physnet1',
                    api.SEGMENTATION_ID: 1}

        self._create_segments(
            [segment1], is_seg_dynamic=True, network_id=net_id)

        segs1 = segments_db.get_dynamic_segment(
            self.ctx, net_id)
        self.assertEqual('vlan', segs1[api.NETWORK_TYPE])
        self.assertEqual('physnet1', segs1[api.PHYSICAL_NETWORK])
        self.assertEqual(1, segs1[api.SEGMENTATION_ID])

        segs2 = segments_db.get_dynamic_segment(
            self.ctx, net_id, physical_network='physnet1')
        self.assertEqual('vlan', segs2[api.NETWORK_TYPE])
        self.assertEqual('physnet1', segs2[api.PHYSICAL_NETWORK])
        self.assertEqual(1, segs2[api.SEGMENTATION_ID])

        segs3 = segments_db.get_dynamic_segment(
            self.ctx, net_id, segmentation_id=1)
        self.assertEqual('vlan', segs3[api.NETWORK_TYPE])
        self.assertEqual('physnet1', segs3[api.PHYSICAL_NETWORK])
        self.assertEqual(1, segs3[api.SEGMENTATION_ID])
Пример #3
0
    def delete_network_precommit(self, context):
        plugin_context = context._plugin_context
        network = context.current
        # release dynamic segment id
        dynamic_segment = segments_db.get_dynamic_segment(
            plugin_context, network['id'], PHYSICAL_NET)
        if not dynamic_segment:
            return

        context._plugin.type_manager.release_dynamic_segment(
            plugin_context, dynamic_segment['id'])
Пример #4
0
    def allocate_dynamic_segment(self, session, network_id, segment):
        """Allocate a dynamic segment using a partial or full segment dict."""
        dynamic_segment = segments_db.get_dynamic_segment(
            session, network_id, segment.get(api.PHYSICAL_NETWORK),
            segment.get(api.SEGMENTATION_ID))

        if dynamic_segment:
            return dynamic_segment

        driver = self.drivers.get(segment.get(api.NETWORK_TYPE))
        dynamic_segment = driver.obj.reserve_provider_segment(session, segment)
        segments_db.add_network_segment(session, network_id, dynamic_segment,
                                        is_dynamic=True)
        return dynamic_segment
 def rest_delete_network(self, mech_context):
     try:
         from neutron.db import segments_db as db
     except Exception:
         from neutron.plugins.ml2 import db
     session = mech_context._plugin_context.session
     network_id = mech_context.current['id']
     if self.hierarchical == "True":
         dynamic_segment = db.get_dynamic_segment(session, network_id)
         LOG.info(_("delete_network dynamic_segment = %s"), dynamic_segment)
         if dynamic_segment:
             db.delete_network_segment(session,
                                       dynamic_segment[api.SEGMENTATION_ID])
     data = self.construct_network_info(mech_context, 'DELETE')
     resource = 'del-' + NETWORK
     err_str = _("Unable to delete remote network: %s")
     self.rest_action('POST', resource, data, err_str)
Пример #6
0
    def allocate_dynamic_segment(self, context, network_id, segment):
        """Allocate a dynamic segment using a partial or full segment dict."""
        dynamic_segment = segments_db.get_dynamic_segment(
            context, network_id, segment.get(ml2_api.PHYSICAL_NETWORK),
            segment.get(ml2_api.SEGMENTATION_ID))

        if dynamic_segment:
            return dynamic_segment

        driver = self.drivers.get(segment.get(ml2_api.NETWORK_TYPE))
        if isinstance(driver.obj, api.TypeDriver):
            dynamic_segment = driver.obj.reserve_provider_segment(
                context.session, segment)
        else:
            dynamic_segment = driver.obj.reserve_provider_segment(
                context, segment)
        segments_db.add_network_segment(context, network_id, dynamic_segment,
                                        is_dynamic=True)
        return dynamic_segment