diff --git a/neutron_lib/api/definitions/__init__.py b/neutron_lib/api/definitions/__init__.py index a251fc347..f96759fba 100644 --- a/neutron_lib/api/definitions/__init__.py +++ b/neutron_lib/api/definitions/__init__.py @@ -39,6 +39,7 @@ from neutron_lib.api.definitions import firewall_v2 from neutron_lib.api.definitions import firewallrouterinsertion from neutron_lib.api.definitions import flavors from neutron_lib.api.definitions import floating_ip_port_forwarding +from neutron_lib.api.definitions import floatingip_pools from neutron_lib.api.definitions import flowclassifier from neutron_lib.api.definitions import ip_allocation from neutron_lib.api.definitions import ip_substring_port_filtering @@ -119,6 +120,7 @@ _ALL_API_DEFINITIONS = { fip_port_details, flavors, floating_ip_port_forwarding, + floatingip_pools, ip_allocation, ip_substring_port_filtering, l2_adjacency, diff --git a/neutron_lib/api/definitions/base.py b/neutron_lib/api/definitions/base.py index 840411785..4490425c3 100644 --- a/neutron_lib/api/definitions/base.py +++ b/neutron_lib/api/definitions/base.py @@ -94,6 +94,7 @@ KNOWN_EXTENSIONS = ( 'fip-port-details', 'flavors', 'floating-ip-port-forwarding', + 'floatingip-pools', 'ip-substring-filtering', 'l3-ha', 'l3_agent_scheduler', diff --git a/neutron_lib/api/definitions/floatingip_pools.py b/neutron_lib/api/definitions/floatingip_pools.py new file mode 100644 index 000000000..6d7de4650 --- /dev/null +++ b/neutron_lib/api/definitions/floatingip_pools.py @@ -0,0 +1,51 @@ +# 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 +from neutron_lib.db import constants as db_const + + +FLOATINGIP_POOLS = 'floatingip_pools' + +ALIAS = 'floatingip-pools' +IS_SHIM_EXTENSION = False +IS_STANDARD_ATTR_EXTENSION = False +NAME = 'Floating IP Pools Extension' +API_PREFIX = '/floatingip_pools' +DESCRIPTION = 'Provides a floating IP pools API.' +UPDATED_TIMESTAMP = '2018-03-21T10:00:00-00:00' +COLLECTION_NAME = FLOATINGIP_POOLS +RESOURCE_ATTRIBUTE_MAP = { + COLLECTION_NAME: { + 'subnet_id': {'allow_post': False, 'allow_put': False, + 'validate': {'type:uuid': None}, + 'is_visible': True}, + 'subnet_name': {'allow_post': False, 'allow_put': False, + 'validate': {'type:string': db_const.NAME_FIELD_SIZE}, + 'is_visible': True}, + 'network_id': {'allow_post': False, 'allow_put': False, + 'validate': {'type:uuid': None}, + 'is_visible': True}, + 'cidr': {'allow_post': False, 'allow_put': False, + 'validate': {'type:subnet_or_none': None}, + 'is_visible': True}, + 'project_id': {'allow_post': False, 'allow_put': False, + 'validate': { + 'type:string': db_const.PROJECT_ID_FIELD_SIZE}, + 'is_visible': True}, + }, +} +SUB_RESOURCE_ATTRIBUTE_MAP = {} +ACTION_MAP = {} +REQUIRED_EXTENSIONS = [l3.ALIAS] +OPTIONAL_EXTENSIONS = [] +ACTION_STATUS = {} diff --git a/neutron_lib/plugins/constants.py b/neutron_lib/plugins/constants.py index 62c89937d..4459a9689 100644 --- a/neutron_lib/plugins/constants.py +++ b/neutron_lib/plugins/constants.py @@ -24,3 +24,4 @@ CORE = 'CORE' L3 = 'L3_ROUTER_NAT' LOG_API = "LOGGING" PORTFORWARDING = "PORTFORWARDING" +FLOATINGIPPOOL = "FLOATINGIPPOOL" diff --git a/neutron_lib/tests/unit/api/definitions/test_floatingip_pools.py b/neutron_lib/tests/unit/api/definitions/test_floatingip_pools.py new file mode 100644 index 000000000..f3be93bdd --- /dev/null +++ b/neutron_lib/tests/unit/api/definitions/test_floatingip_pools.py @@ -0,0 +1,20 @@ +# 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 floatingip_pools +from neutron_lib.tests.unit.api.definitions import base + + +class FloatingIPPoolDefinitionTestCase(base.DefinitionBaseTestCase): + extension_module = floatingip_pools + extension_resources = (floatingip_pools.FLOATINGIP_POOLS,) + extension_attributes = ('subnet_id', 'subnet_name',) diff --git a/releasenotes/notes/add-floatingip-pools-extension-17a1ee5c7eafc989.yaml b/releasenotes/notes/add-floatingip-pools-extension-17a1ee5c7eafc989.yaml new file mode 100644 index 000000000..b846fb9bd --- /dev/null +++ b/releasenotes/notes/add-floatingip-pools-extension-17a1ee5c7eafc989.yaml @@ -0,0 +1,5 @@ +--- +features: + - | + Add ``floatingip-pools`` API extension. This extension provides + API endpoint for listing floatingip pools.