Skip to content

Commit

Permalink
Support the neutron lib decomposition
Browse files Browse the repository at this point in the history
From recent neutron release (since newton), a reusable library code for
neutron names 'neutron-lib' was introduced to stabalize some of the
common interfaces. That patch permits to support that new library.

Change-Id: I6fbaf11589ea5362ed8b9aecceefcd88c9d9f414
Closes-Bug: #1650339
  • Loading branch information
Édouard Thuleau committed Dec 15, 2016
1 parent f380004 commit 5d2b97f
Show file tree
Hide file tree
Showing 9 changed files with 92 additions and 34 deletions.
5 changes: 4 additions & 1 deletion neutron_plugin_contrail/extensions/contrail.py
@@ -1,4 +1,7 @@
from neutron.api import extensions
try:
from neutron_lib.api import extensions
except ImportError:
from neutron.api import extensions


EXTENDED_ATTRIBUTES_2_0 = {
Expand Down
19 changes: 14 additions & 5 deletions neutron_plugin_contrail/extensions/ipam.py
@@ -1,9 +1,18 @@
from abc import abstractmethod

from neutron.api.v2 import attributes as attr
try:
from neutron_lib import constants
except ImportError:
from neutron.api.v2 import attributes as constants
from neutron.api.v2 import base
from neutron.common import exceptions as qexception
from neutron.api import extensions
try:
from neutron_lib import exceptions as exc
except ImportError:
from neutron.common import exceptions as exc
try:
from neutron_lib.api import extensions
except ImportError:
from neutron.api import extensions
from neutron import manager

try:
Expand All @@ -13,14 +22,14 @@


# Ipam Exceptions
class IpamNotFound(qexception.NotFound):
class IpamNotFound(exc.NotFound):
message = _("IPAM %(id)s could not be found")

# Attribute Map
RESOURCE_ATTRIBUTE_MAP = {
'ipams': {
'id': {'allow_post': False, 'allow_put': False,
'validate': {'type:regex': attr.UUID_PATTERN},
'validate': {'type:regex': constants.UUID_PATTERN},
'is_visible': True},
'name': {'allow_post': True, 'allow_put': False,
'is_visible': True, 'default': ''},
Expand Down
24 changes: 20 additions & 4 deletions neutron_plugin_contrail/extensions/loadbalancercustomattributes.py
@@ -1,5 +1,7 @@
from neutron.api.v2 import attributes as attr
from neutron.api import extensions
try:
from neutron_lib.api import extensions
except ImportError:
from neutron.api import extensions

def _validate_custom_attributes(data, valid_values=None):
if not isinstance(data, list):
Expand All @@ -9,14 +11,28 @@ def _validate_custom_attributes(data, valid_values=None):
def convert_none_to_empty_list(value):
return [] if value is None else value

attr.validators['type:customattributes'] = _validate_custom_attributes
try:
from neutron_lib import constants
ATTR_NOT_SPECIFIED = constants.ATTR_NOT_SPECIFIED
except ImportError:
from neutron.api.v2 import attributes
ATTR_NOT_SPECIFIED = attributes.ATTR_NOT_SPECIFIED

try:
from neutron_lib.api import validators
from neutron.api.v2 import attributes as attr
validators.add_validator('type:customattributes',
_validate_custom_attributes)
except ImportError:
from neutron.api.v2 import attributes as attr
attr.validators['type:customattributes'] = _validate_custom_attributes

# Extended_Attribute MAP
EXTENDED_ATTRIBUTES_2_0 = {
'pools': {
'custom_attributes': {'allow_post': True, 'allow_put': True,
'convert_to': convert_none_to_empty_list,
'default': attr.ATTR_NOT_SPECIFIED,
'default': ATTR_NOT_SPECIFIED,
'validate': {'type:customattributes': None},
'is_visible': True},
}
Expand Down
19 changes: 14 additions & 5 deletions neutron_plugin_contrail/extensions/policy.py
@@ -1,9 +1,18 @@
from abc import abstractmethod

from neutron.api.v2 import attributes as attr
try:
from neutron_lib import constants
except ImportError:
from neutron.api.v2 import attributes as constants
from neutron.api.v2 import base
from neutron.common import exceptions as qexception
from neutron.api import extensions
try:
from neutron_lib import exceptions as exc
except ImportError:
from neutron.common import exceptions as exc
try:
from neutron_lib.api import extensions
except ImportError:
from neutron.api import extensions
from neutron import manager

try:
Expand All @@ -13,14 +22,14 @@


# Policy Exceptions
class PolicyNotFound(qexception.NotFound):
class PolicyNotFound(exc.NotFound):
message = _("Policy %(id)s could not be found")

# Attribute Map
RESOURCE_ATTRIBUTE_MAP = {
'policys': {
'id': {'allow_post': False, 'allow_put': False,
'validate': {'type:regex': attr.UUID_PATTERN},
'validate': {'type:regex': constants.UUID_PATTERN},
'is_visible': True},
'name': {'allow_post': True, 'allow_put': False,
'is_visible': True, 'default': ''},
Expand Down
13 changes: 10 additions & 3 deletions neutron_plugin_contrail/extensions/serviceinterface.py
@@ -1,11 +1,18 @@
from neutron.api.v2 import attributes as attr
from neutron.api import extensions
#from neutron.api.v2 import attributes as attr
try:
from neutron_lib import constants
except ImportError:
from neutron.api.v2 import attributes as constants
try:
from neutron_lib.api import extensions
except ImportError:
from neutron.api import extensions

EXTENDED_ATTRIBUTES_2_0 = {
'ports': {
'binding:service_interface_type': {'allow_post': True,
'allow_put': False,
'default': attr.ATTR_NOT_SPECIFIED,
'default': constants.ATTR_NOT_SPECIFIED,
'is_visible': True},
},
}
Expand Down
18 changes: 13 additions & 5 deletions neutron_plugin_contrail/extensions/vfbinding.py
Expand Up @@ -13,16 +13,24 @@
# under the License.
#

from neutron.api.v2 import attributes as attr
from neutron.api import extensions
try:
from neutron_lib.api import converters
from neutron_lib import constants
ATTR_NOT_SPECIFIED = constants.ATTR_NOT_SPECIFIED
except ImportError:
from neutron.api.v2 import attributes as converters
ATTR_NOT_SPECIFIED = converters.ATTR_NOT_SPECIFIED
try:
from neutron_lib.api import extensions
except ImportError:
from neutron.api import extensions

EXTENDED_ATTRIBUTES_2_0 = {
'ports': {
'binding:vf': {'allow_post': True,
'allow_put': True,
'convert_list_to':
attr.convert_kvp_list_to_dict,
'default': attr.ATTR_NOT_SPECIFIED,
'convert_list_to': converters.convert_kvp_list_to_dict,
'default': ATTR_NOT_SPECIFIED,
'is_visible': True},
},
}
Expand Down
12 changes: 9 additions & 3 deletions neutron_plugin_contrail/extensions/vpcroutetable.py
Expand Up @@ -23,10 +23,16 @@
except ImportError:
from oslo_config import cfg

from neutron.api import extensions
try:
from neutron_lib.api import extensions
except ImportError:
from neutron.api import extensions
from neutron.api.v2 import attributes as attr
from neutron.api.v2 import base
from neutron.common import exceptions as qexception
try:
from neutron_lib import exceptions as exc
except ImportError:
from neutron.common import exceptions as exc
from neutron import manager
try:
from neutron.quota import resource_registry as quota
Expand All @@ -39,7 +45,7 @@
from oslo_utils import uuidutils

# Route table Exceptions
class RouteTableNotFound(qexception.NotFound):
class RouteTableNotFound(exc.NotFound):
message = _("Route table %(id)s does not exist")

# Attribute Map
Expand Down
Expand Up @@ -16,7 +16,10 @@
import requests

from neutron.api.v2 import attributes as attr
from neutron.common import exceptions as exc
try:
from neutron_lib import exceptions as exc
except ImportError:
from neutron.common import exceptions as exc
from neutron.common.config import cfg
from neutron.db import portbindings_base
from neutron.db import quota_db # noqa
Expand Down
Expand Up @@ -18,7 +18,10 @@
import os.path as path

from neutron.api.v2 import attributes as attr
from neutron.common import exceptions as exc
try:
from neutron_lib import exceptions as exc
except ImportError:
from neutron.common import exceptions as exc
from neutron.common.config import cfg
from neutron.db import portbindings_base
from neutron.db import quota_db # noqa
Expand All @@ -40,10 +43,6 @@
except ImportError:
from oslo_log import log as logging

try:
from neutron_lib import exceptions as libexc
except ImportError:
libexc = None

# Constant for max length of network interface names
# eg 'bridge' in the Network class or 'devname' in
Expand Down Expand Up @@ -106,8 +105,6 @@ def _raise_contrail_error(info, obj_name):
raise getattr(securitygroup, exc_name)(**info)
if hasattr(allowedaddresspairs, exc_name):
raise getattr(allowedaddresspairs, exc_name)(**info)
if libexc and hasattr(libexc, exc_name):
raise getattr(libexc, exc_name)(**info)
raise exc.NeutronException(**info)


Expand Down

0 comments on commit 5d2b97f

Please sign in to comment.