f70a8c4b8c
Change: Ib56ee8bfd182c031e468c503acb0cd75daea8c40 broke vmware-nsx L2 gateway plugin for master and mitaka release. Due to this the l2 gateway plugin for vmware-nsx would not load. This patch makes the required changes in vmware-nsx to load l2gw plugin. This patch also adds a README file to include steps to bring up L2 gateway plugin with devstack. Closes-Bug: #1573327 Change-Id: I433c7f51df80ff6ea4250e38c981ffb363cf1b17
72 lines
2.8 KiB
Python
72 lines
2.8 KiB
Python
# Copyright 2015 VMware, Inc.
|
|
#
|
|
# All Rights Reserved
|
|
#
|
|
# 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 networking_l2gw.db.l2gateway import l2gateway_db
|
|
from networking_l2gw.services.l2gateway.common import constants as l2gw_const
|
|
|
|
from oslo_config import cfg
|
|
from oslo_log import log as logging
|
|
from oslo_utils import importutils
|
|
|
|
from vmware_nsx.common import config # noqa
|
|
|
|
LOG = logging.getLogger(__name__)
|
|
|
|
|
|
class NsxL2GatewayPlugin(l2gateway_db.L2GatewayMixin):
|
|
|
|
"""Service plugin for VMware NSX to implement Neutron's L2 gateway API."""
|
|
|
|
supported_extension_aliases = ["l2-gateway", "l2-gateway-connection"]
|
|
_methods_to_delegate = ["create_l2_gateway", "get_l2_gateway",
|
|
"delete_l2_gateway", "get_l2_gateways",
|
|
"update_l2_gateway",
|
|
"create_l2_gateway_connection",
|
|
"get_l2_gateway_connection",
|
|
"get_l2_gateway_connections",
|
|
"update_l2_gateway_connection",
|
|
"delete_l2_gateway_connection"]
|
|
|
|
def __init__(self, plugin):
|
|
"""Initialize service plugin and load backend driver."""
|
|
super(NsxL2GatewayPlugin, self).__init__()
|
|
self._plugin = plugin
|
|
LOG.debug("Starting service plugin for NSX L2Gateway")
|
|
self._nsx_l2gw_driver = cfg.CONF.nsx_l2gw_driver
|
|
if not getattr(self, "_nsx_l2gw_driver"):
|
|
raise cfg.RequiredOptError("nsx_l2gw_driver")
|
|
self._driver = importutils.import_object(self._nsx_l2gw_driver)
|
|
|
|
@staticmethod
|
|
def get_plugin_type():
|
|
"""Get type of the plugin."""
|
|
return l2gw_const.L2GW
|
|
|
|
@staticmethod
|
|
def get_plugin_description():
|
|
"""Get description of the plugin."""
|
|
return l2gw_const.L2_GATEWAY_SERVICE_PLUGIN
|
|
|
|
def __getattribute__(self, name):
|
|
"""Delegate L2GW API calls to the driver class."""
|
|
methods = object.__getattribute__(self, "_methods_to_delegate")
|
|
if name in methods:
|
|
# If method is delegated, return the driver class method.
|
|
return getattr(object.__getattribute__(self, "_driver"), name)
|
|
else:
|
|
# Else return our own method.
|
|
return object.__getattribute__(self, name)
|