vmware-nsx/neutron/tests/unit/ml2/test_extension_driver_api.py
Nader Lahouti 0be7251b93 Support for extensions in ML2
The current ML2 plugin supports only extensions defined in the plugin and it
does not support any extensions in the mechanism drivers. The changes in this
commit allows mechanism drivers to define new extensions.

Change-Id: I28da19fabf6de2e9f0d687f875aaaa24c8bbc4f0
Implements: blueprint extensions-in-ml2
2014-08-31 05:43:01 -07:00

67 lines
2.4 KiB
Python

# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from neutron.api import extensions
from neutron.plugins.ml2 import config
from neutron.plugins.ml2 import driver_api as api
from neutron.tests.unit.ml2 import extensions as test_extensions
from neutron.tests.unit.ml2 import test_ml2_plugin
class ExtensionDriverTestCase(test_ml2_plugin.Ml2PluginV2TestCase):
_extension_drivers = ['test']
def setUp(self):
config.cfg.CONF.set_override('extension_drivers',
self._extension_drivers,
group='ml2')
super(ExtensionDriverTestCase, self).setUp()
def test_network_attr(self):
with self.network() as network:
ent = network['network'].get('network_extension')
self.assertIsNotNone(ent)
def test_subnet_attr(self):
with self.subnet() as subnet:
ent = subnet['subnet'].get('subnet_extension')
self.assertIsNotNone(ent)
def test_port_attr(self):
with self.port() as port:
ent = port['port'].get('port_extension')
self.assertIsNotNone(ent)
class TestExtensionDriver(api.ExtensionDriver):
_supported_extension_alias = 'test_extension'
def initialize(self):
self.network_extension = 'Test_Network_Extension'
self.subnet_extension = 'Test_Subnet_Extension'
self.port_extension = 'Test_Port_Extension'
extensions.append_api_extensions_path(test_extensions.__path__)
@property
def extension_alias(self):
return self._supported_extension_alias
def process_create_network(self, session, data, result):
result['network_extension'] = self.network_extension
def process_create_subnet(self, session, data, result):
result['subnet_extension'] = self.subnet_extension
def process_create_port(self, session, data, result):
result['port_extension'] = self.port_extension