Merge "Allow the service plugin to import the extension"

This commit is contained in:
Jenkins 2016-05-28 01:03:32 +00:00 committed by Gerrit Code Review
commit d5eac3cfe0
4 changed files with 21 additions and 22 deletions

View File

@ -22,7 +22,7 @@ from neutron.api import extensions
from neutron.api.v2 import attributes
from neutron.api.v2 import base
from neutron.extensions import providernet
from neutron.services.segments import plugin
from neutron import manager
SEGMENT = 'segment'
SEGMENTS = '%ss' % SEGMENT
@ -103,7 +103,7 @@ class Segment(extensions.ExtensionDescriptor):
controller = base.create_resource(
SEGMENTS,
SEGMENT,
plugin.Plugin.get_instance(),
manager.NeutronManager.get_service_plugins()[SEGMENTS],
resource_attributes)
return [extensions.ResourceExtension(SEGMENTS,
controller,
@ -210,3 +210,9 @@ class SegmentPluginBase(object):
value. Each result returned by this function will have
matched one of the values for each key in filters.
"""
def get_plugin_description(self):
return "Network Segments"
def get_plugin_type(self):
return SEGMENTS

View File

@ -30,6 +30,7 @@ from neutron.api.v2 import attributes
from neutron.db import common_db_mixin
from neutron.db import model_base
from neutron.db import segments_db as db
from neutron.extensions import segment as extension
from neutron.services.segments import exceptions
@ -91,12 +92,11 @@ class SegmentDbMixin(common_db_mixin.CommonDbMixin):
segment_id = segment.get('id') or uuidutils.generate_uuid()
with context.session.begin(subtransactions=True):
network_id = segment['network_id']
# FIXME couldn't use constants because of a circular import problem
physical_network = segment['physical_network']
physical_network = segment[extension.PHYSICAL_NETWORK]
if physical_network == constants.ATTR_NOT_SPECIFIED:
physical_network = None
network_type = segment['network_type']
segmentation_id = segment['segmentation_id']
network_type = segment[extension.NETWORK_TYPE]
segmentation_id = segment[extension.SEGMENTATION_ID]
if segmentation_id == constants.ATTR_NOT_SPECIFIED:
segmentation_id = None
args = {'id': segment_id,

View File

@ -15,10 +15,11 @@
# under the License.
from neutron.extensions import segment
from neutron.services.segments import db
class Plugin(db.SegmentDbMixin):
class Plugin(db.SegmentDbMixin, segment.SegmentPluginBase):
_instance = None
@ -29,9 +30,3 @@ class Plugin(db.SegmentDbMixin):
if cls._instance is None:
cls._instance = cls()
return cls._instance
def get_plugin_description(self):
return "Network Segments"
def get_plugin_type(self):
return "segments"

View File

@ -29,8 +29,9 @@ from neutron.services.segments import db
from neutron.tests.common import helpers
from neutron.tests.unit.db import test_db_base_plugin_v2
DB_PLUGIN_KLASS = ('neutron.tests.unit.extensions.test_segment.'
'SegmentTestPlugin')
SERVICE_PLUGIN_KLASS = 'neutron.services.segments.plugin.Plugin'
TEST_PLUGIN_KLASS = (
'neutron.tests.unit.extensions.test_segment.SegmentTestPlugin')
class SegmentTestExtensionManager(object):
@ -53,9 +54,10 @@ class SegmentTestExtensionManager(object):
class SegmentTestCase(test_db_base_plugin_v2.NeutronDbPluginV2TestCase):
def setUp(self, plugin=None, service_plugins=None):
def setUp(self, plugin=None):
if not plugin:
plugin = DB_PLUGIN_KLASS
plugin = TEST_PLUGIN_KLASS
service_plugins = {'segments_plugin_name': SERVICE_PLUGIN_KLASS}
ext_mgr = SegmentTestExtensionManager()
super(SegmentTestCase, self).setUp(plugin=plugin, ext_mgr=ext_mgr,
service_plugins=service_plugins)
@ -285,11 +287,7 @@ class HostSegmentMappingTestCase(SegmentTestCase):
group='ml2')
if not plugin:
plugin = 'neutron.plugins.ml2.plugin.Ml2Plugin'
segments_plugin = ('neutron.tests.unit.extensions.test_segment.'
'SegmentTestPlugin')
service_plugins = {'segments_plugin_name': segments_plugin}
super(HostSegmentMappingTestCase, self).setUp(
plugin=plugin, service_plugins=service_plugins)
super(HostSegmentMappingTestCase, self).setUp(plugin=plugin)
def _get_segments_for_host(self, host):
ctx = context.get_admin_context()