8c77175ee9
A new configuration variable nsx_extension_drivers has been added. This is in the DEFAULT section. This enable us to code support to add via configurations extensions, for example dns_integration. Co-authored-by: Shih-Hao Li <shihli@vmware.com> Change-Id: Iea4715522d9c7cf327b7f1a751b78f14d5e06e75
158 lines
6.5 KiB
Python
158 lines
6.5 KiB
Python
# Copyright (c) 2013 OpenStack Foundation
|
|
# 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.
|
|
|
|
import abc
|
|
|
|
import six
|
|
|
|
|
|
@six.add_metaclass(abc.ABCMeta)
|
|
class ExtensionDriver(object):
|
|
"""Define stable abstract interface for extension drivers.
|
|
An extension driver extends the core resources implemented by the
|
|
plugin with additional attributes. Methods that process create
|
|
and update operations for these resources validate and persist
|
|
values for extended attributes supplied through the API. Other
|
|
methods extend the resource dictionaries returned from the API
|
|
operations with the values of the extended attributes.
|
|
"""
|
|
|
|
@abc.abstractmethod
|
|
def initialize(self):
|
|
"""Perform driver initialization.
|
|
Called after all drivers have been loaded and the database has
|
|
been initialized. No abstract methods defined below will be
|
|
called prior to this method being called.
|
|
"""
|
|
pass
|
|
|
|
@property
|
|
def extension_alias(self):
|
|
"""Supported extension alias.
|
|
Return the alias identifying the core API extension supported
|
|
by this driver. Do not declare if API extension handling will
|
|
be left to a service plugin, and we just need to provide
|
|
core resource extension and updates.
|
|
"""
|
|
pass
|
|
|
|
def process_create_network(self, plugin_context, data, result):
|
|
"""Process extended attributes for create network.
|
|
:param plugin_context: plugin request context
|
|
:param data: dictionary of incoming network data
|
|
:param result: network dictionary to extend
|
|
Called inside transaction context on plugin_context.session to
|
|
validate and persist any extended network attributes defined by this
|
|
driver. Extended attribute values must also be added to
|
|
result.
|
|
"""
|
|
pass
|
|
|
|
def process_create_subnet(self, plugin_context, data, result):
|
|
"""Process extended attributes for create subnet.
|
|
:param plugin_context: plugin request context
|
|
:param data: dictionary of incoming subnet data
|
|
:param result: subnet dictionary to extend
|
|
Called inside transaction context on plugin_context.session to
|
|
validate and persist any extended subnet attributes defined by this
|
|
driver. Extended attribute values must also be added to
|
|
result.
|
|
"""
|
|
pass
|
|
|
|
def process_create_port(self, plugin_context, data, result):
|
|
"""Process extended attributes for create port.
|
|
:param plugin_context: plugin request context
|
|
:param data: dictionary of incoming port data
|
|
:param result: port dictionary to extend
|
|
Called inside transaction context on plugin_context.session to
|
|
validate and persist any extended port attributes defined by this
|
|
driver. Extended attribute values must also be added to
|
|
result.
|
|
"""
|
|
pass
|
|
|
|
def process_update_network(self, plugin_context, data, result):
|
|
"""Process extended attributes for update network.
|
|
:param plugin_context: plugin request context
|
|
:param data: dictionary of incoming network data
|
|
:param result: network dictionary to extend
|
|
Called inside transaction context on plugin_context.session to
|
|
validate and update any extended network attributes defined by this
|
|
driver. Extended attribute values, whether updated or not,
|
|
must also be added to result.
|
|
"""
|
|
pass
|
|
|
|
def process_update_subnet(self, plugin_context, data, result):
|
|
"""Process extended attributes for update subnet.
|
|
:param plugin_context: plugin request context
|
|
:param data: dictionary of incoming subnet data
|
|
:param result: subnet dictionary to extend
|
|
Called inside transaction context on plugin_context.session to
|
|
validate and update any extended subnet attributes defined by this
|
|
driver. Extended attribute values, whether updated or not,
|
|
must also be added to result.
|
|
"""
|
|
pass
|
|
|
|
def process_update_port(self, plugin_context, data, result):
|
|
"""Process extended attributes for update port.
|
|
:param plugin_context: plugin request context
|
|
:param data: dictionary of incoming port data
|
|
:param result: port dictionary to extend
|
|
Called inside transaction context on plugin_context.session to
|
|
validate and update any extended port attributes defined by this
|
|
driver. Extended attribute values, whether updated or not,
|
|
must also be added to result.
|
|
"""
|
|
pass
|
|
|
|
def extend_network_dict(self, session, base_model, result):
|
|
"""Add extended attributes to network dictionary.
|
|
:param session: database session
|
|
:param base_model: network model data
|
|
:param result: network dictionary to extend
|
|
Called inside transaction context on session to add any
|
|
extended attributes defined by this driver to a network
|
|
dictionary to be used for driver calls and/or
|
|
returned as the result of a network operation.
|
|
"""
|
|
pass
|
|
|
|
def extend_subnet_dict(self, session, base_model, result):
|
|
"""Add extended attributes to subnet dictionary.
|
|
:param session: database session
|
|
:param base_model: subnet model data
|
|
:param result: subnet dictionary to extend
|
|
Called inside transaction context on session to add any
|
|
extended attributes defined by this driver to a subnet
|
|
dictionary to be used for driver calls and/or
|
|
returned as the result of a subnet operation.
|
|
"""
|
|
pass
|
|
|
|
def extend_port_dict(self, session, base_model, result):
|
|
"""Add extended attributes to port dictionary.
|
|
:param session: database session
|
|
:param base_model: port model data
|
|
:param result: port dictionary to extend
|
|
Called inside transaction context on session to add any
|
|
extended attributes defined by this driver to a port
|
|
dictionary to be used for driver calls
|
|
and/or returned as the result of a port operation.
|
|
"""
|
|
pass
|