diff --git a/neutron_lib/api/definitions/__init__.py b/neutron_lib/api/definitions/__init__.py index dfa72429b..634640919 100644 --- a/neutron_lib/api/definitions/__init__.py +++ b/neutron_lib/api/definitions/__init__.py @@ -31,6 +31,7 @@ from neutron_lib.api.definitions import firewallrouterinsertion from neutron_lib.api.definitions import ip_allocation from neutron_lib.api.definitions import l2_adjacency from neutron_lib.api.definitions import l3 +from neutron_lib.api.definitions import l3_ext_gw_mode from neutron_lib.api.definitions import logging from neutron_lib.api.definitions import logging_resource from neutron_lib.api.definitions import network @@ -76,6 +77,7 @@ _ALL_API_DEFINITIONS = { ip_allocation, l2_adjacency, l3, + l3_ext_gw_mode, logging, logging_resource, network, diff --git a/neutron_lib/api/definitions/l3_ext_gw_mode.py b/neutron_lib/api/definitions/l3_ext_gw_mode.py new file mode 100644 index 000000000..0a73b5481 --- /dev/null +++ b/neutron_lib/api/definitions/l3_ext_gw_mode.py @@ -0,0 +1,59 @@ +# Copyright 2013 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 neutron_lib.api import converters +from neutron_lib.api.definitions import l3 + + +ALIAS = 'ext-gw-mode' +IS_SHIM_EXTENSION = False +IS_STANDARD_ATTR_EXTENSION = False +NAME = 'Neutron L3 Configurable external gateway mode' +API_PREFIX = '' +DESCRIPTION = ('Extension of the router abstraction for specifying whether ' + 'SNAT should occur on the external gateway') +UPDATED_TIMESTAMP = '2013-03-28T10:00:00-00:00' +RESOURCE_NAME = l3.ROUTER +COLLECTION_NAME = l3.ROUTERS +RESOURCE_ATTRIBUTE_MAP = { + COLLECTION_NAME: { + l3.EXTERNAL_GW_INFO: { + 'allow_post': True, + 'allow_put': True, + 'is_visible': True, + 'default': None, + 'enforce_policy': True, + 'validate': { + 'type:dict_or_nodata': { + 'network_id': {'type:uuid': None, 'required': True}, + 'enable_snat': {'type:boolean': None, 'required': False, + 'convert_to': + converters.convert_to_boolean}, + 'external_fixed_ips': { + 'convert_list_to': converters.convert_kvp_list_to_dict, + 'type:fixed_ips': None, + 'default': None, + 'required': False + } + } + } + } + } +} +SUB_RESOURCE_ATTRIBUTE_MAP = {} +ACTION_MAP = {} +REQUIRED_EXTENSIONS = [l3.ALIAS] +OPTIONAL_EXTENSIONS = [] +ACTION_STATUS = {} diff --git a/neutron_lib/tests/unit/api/definitions/test_l3_ext_gw_mode.py b/neutron_lib/tests/unit/api/definitions/test_l3_ext_gw_mode.py new file mode 100644 index 000000000..17e85d731 --- /dev/null +++ b/neutron_lib/tests/unit/api/definitions/test_l3_ext_gw_mode.py @@ -0,0 +1,19 @@ +# 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_lib.api.definitions import l3_ext_gw_mode +from neutron_lib.tests.unit.api.definitions import base + + +class L3ExtendedGatewayModeDefinitionTestCase(base.DefinitionBaseTestCase): + extension_module = l3_ext_gw_mode + extension_attributes = ('external_gateway_info',) diff --git a/releasenotes/notes/rehome-l3extgwmode-apidef-8f83e0f6cf0515e7.yaml b/releasenotes/notes/rehome-l3extgwmode-apidef-8f83e0f6cf0515e7.yaml new file mode 100644 index 000000000..262e3b7d5 --- /dev/null +++ b/releasenotes/notes/rehome-l3extgwmode-apidef-8f83e0f6cf0515e7.yaml @@ -0,0 +1,4 @@ +--- +features: + - The API defintion for the ``ext-gw-mode`` extension is now available in + ``neutron_lib.api.definitions.l3_ext_gw_mode``.