diff --git a/neutron_lib/api/definitions/__init__.py b/neutron_lib/api/definitions/__init__.py index 0686665ef..80d05d308 100644 --- a/neutron_lib/api/definitions/__init__.py +++ b/neutron_lib/api/definitions/__init__.py @@ -63,6 +63,7 @@ from neutron_lib.api.definitions import subnet_onboard from neutron_lib.api.definitions import subnetpool from neutron_lib.api.definitions import trunk from neutron_lib.api.definitions import trunk_details +from neutron_lib.api.definitions import vlantransparent _ALL_API_DEFINITIONS = { @@ -118,5 +119,6 @@ _ALL_API_DEFINITIONS = { subnet_onboard, subnetpool, trunk, - trunk_details + trunk_details, + vlantransparent } diff --git a/neutron_lib/api/definitions/vlantransparent.py b/neutron_lib/api/definitions/vlantransparent.py new file mode 100644 index 000000000..67159c333 --- /dev/null +++ b/neutron_lib/api/definitions/vlantransparent.py @@ -0,0 +1,60 @@ +# Copyright (c) 2015 Cisco Systems, 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 network +from neutron_lib.api import validators +from neutron_lib import constants + + +VLANTRANSPARENT = 'vlan_transparent' + + +def get_vlan_transparent(network): + """Get the value of vlan_transparent from a network if set. + + :param network: The network dict to retrieve the value of vlan_transparent + from. + :returns: The value of vlan_transparent from the network dict if set in + the dict, otherwise False is returned. + """ + return (network[VLANTRANSPARENT] + if (VLANTRANSPARENT in network and + validators.is_attr_set(network[VLANTRANSPARENT])) + else False) + + +ALIAS = 'vlan-transparent' +IS_SHIM_EXTENSION = False +IS_STANDARD_ATTR_EXTENSION = False +NAME = 'Vlantransparent' +API_PREFIX = '' +DESCRIPTION = 'Provides Vlan Transparent Networks' +UPDATED_TIMESTAMP = '2015-03-23T09:00:00-00:00' +RESOURCE_ATTRIBUTE_MAP = { + network.COLLECTION_NAME: { + VLANTRANSPARENT: { + 'allow_post': True, + 'allow_put': False, + 'convert_to': converters.convert_to_boolean, + 'default': constants.ATTR_NOT_SPECIFIED, + 'is_visible': True + } + } +} +SUB_RESOURCE_ATTRIBUTE_MAP = {} +ACTION_MAP = {} +REQUIRED_EXTENSIONS = [] +OPTIONAL_EXTENSIONS = [] +ACTION_STATUS = {} diff --git a/neutron_lib/exceptions/vlantransparent.py b/neutron_lib/exceptions/vlantransparent.py new file mode 100644 index 000000000..212d5fb54 --- /dev/null +++ b/neutron_lib/exceptions/vlantransparent.py @@ -0,0 +1,21 @@ +# Copyright (c) 2015 Cisco Systems, 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._i18n import _ +from neutron_lib import exceptions + + +class VlanTransparencyDriverError(exceptions.NeutronException): + """Vlan Transparency not supported by all mechanism drivers.""" + message = _("Backend does not support VLAN Transparency.") diff --git a/neutron_lib/tests/unit/api/definitions/test_vlantransparent.py b/neutron_lib/tests/unit/api/definitions/test_vlantransparent.py new file mode 100644 index 000000000..6925f8bbf --- /dev/null +++ b/neutron_lib/tests/unit/api/definitions/test_vlantransparent.py @@ -0,0 +1,28 @@ +# 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 vlantransparent +from neutron_lib.tests.unit.api.definitions import base + + +class VlantransparentDefinitionTestCase(base.DefinitionBaseTestCase): + extension_module = vlantransparent + extension_resources = () + extension_attributes = (vlantransparent.VLANTRANSPARENT,) + + def test_get_vlan_transparent(self): + self.assertTrue(vlantransparent.get_vlan_transparent( + {vlantransparent.VLANTRANSPARENT: True, 'vlan': '1'})) + + def test_get_vlan_transparent_not_set(self): + self.assertFalse(vlantransparent.get_vlan_transparent( + {'vlanxtx': True, 'vlan': '1'})) diff --git a/releasenotes/notes/rehome-vlantransp-apidef-1cd7d3ace9042686.yaml b/releasenotes/notes/rehome-vlantransp-apidef-1cd7d3ace9042686.yaml new file mode 100644 index 000000000..4fb0b057b --- /dev/null +++ b/releasenotes/notes/rehome-vlantransp-apidef-1cd7d3ace9042686.yaml @@ -0,0 +1,6 @@ +--- +features: + - The ``vlan-transparent`` extension's API definition is now available in + ``neutron_lib.api.definitions.vlantransparent``. + - The ``get_vlan_transparent`` function from the ``vlan-transparent`` + extension is available in ``neutron_lib.api.definitions.vlantransparent``.