summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/source/command-objects/network.rst22
-rw-r--r--openstackclient/network/v2/network.py24
-rw-r--r--openstackclient/tests/network/v2/test_network.py6
-rw-r--r--releasenotes/notes/add-vlan-transparent-option-4fa72fbfbbe3f31e.yaml9
4 files changed, 57 insertions, 4 deletions
diff --git a/doc/source/command-objects/network.rst b/doc/source/command-objects/network.rst
index 5d534c59..bb8947e3 100644
--- a/doc/source/command-objects/network.rst
+++ b/doc/source/command-objects/network.rst
@@ -21,6 +21,7 @@ Create new network
[--provider-network-type <provider-network-type>]
[--provider-physical-network <provider-physical-network>]
[--provider-segment <provider-segment>]
+ [--transparent-vlan | --no-transparent-vlan]
<name>
.. option:: --project <project>
@@ -116,6 +117,18 @@ Create new network
*Network version 2 only*
+.. option:: --transparent-vlan
+
+ Make the network VLAN transparent
+
+ *Network version 2 only*
+
+.. option:: --no-transparent-vlan
+
+ Do not make the network VLAN transparent
+
+ *Network version 2 only*
+
.. _network_create-name:
.. describe:: <name>
@@ -175,6 +188,7 @@ Set network properties
[--provider-network-type <provider-network-type>]
[--provider-physical-network <provider-physical-network>]
[--provider-segment <provider-segment>]
+ [--transparent-vlan | --no-transparent-vlan]
<network>
.. option:: --name <name>
@@ -227,6 +241,14 @@ Set network properties
VLAN ID for VLAN networks or Tunnel ID for GRE/VXLAN networks
+.. option:: --transparent-vlan
+
+ Make the network VLAN transparent
+
+.. option:: --no-transparent-vlan
+
+ Do not make the network VLAN transparent
+
.. _network_set-network:
.. describe:: <network>
diff --git a/openstackclient/network/v2/network.py b/openstackclient/network/v2/network.py
index 4b77971a..dab20b74 100644
--- a/openstackclient/network/v2/network.py
+++ b/openstackclient/network/v2/network.py
@@ -93,11 +93,17 @@ def _get_attrs(client_manager, parsed_args):
attrs['provider:physical_network'] = parsed_args.physical_network
if parsed_args.segmentation_id:
attrs['provider:segmentation_id'] = parsed_args.segmentation_id
+ # Update VLAN Transparency for networks
+ if parsed_args.transparent_vlan:
+ attrs['vlan_transparent'] = True
+ if parsed_args.no_transparent_vlan:
+ attrs['vlan_transparent'] = False
return attrs
-def _add_provider_network_options(parser):
- # Add provider network options
+def _add_additional_network_options(parser):
+ # Add additional network options
+
parser.add_argument(
'--provider-network-type',
metavar='<provider-network-type>',
@@ -119,6 +125,16 @@ def _add_provider_network_options(parser):
help=_("VLAN ID for VLAN networks or Tunnel ID for GRE/VXLAN "
"networks"))
+ vlan_transparent_grp = parser.add_mutually_exclusive_group()
+ vlan_transparent_grp.add_argument(
+ '--transparent-vlan',
+ action='store_true',
+ help=_("Make the network VLAN transparent"))
+ vlan_transparent_grp.add_argument(
+ '--no-transparent-vlan',
+ action='store_true',
+ help=_("Do not make the network VLAN transparent"))
+
def _get_attrs_compute(client_manager, parsed_args):
attrs = {}
@@ -209,7 +225,7 @@ class CreateNetwork(common.NetworkAndComputeShowOne):
help=_("Do not use the network as the default external network. "
"(default)")
)
- _add_provider_network_options(parser)
+ _add_additional_network_options(parser)
return parser
def update_parser_compute(self, parser):
@@ -413,7 +429,7 @@ class SetNetwork(command.Command):
action='store_true',
help=_("Do not use the network as the default external network")
)
- _add_provider_network_options(parser)
+ _add_additional_network_options(parser)
return parser
def take_action(self, parsed_args):
diff --git a/openstackclient/tests/network/v2/test_network.py b/openstackclient/tests/network/v2/test_network.py
index a1b0aec9..93450e23 100644
--- a/openstackclient/tests/network/v2/test_network.py
+++ b/openstackclient/tests/network/v2/test_network.py
@@ -149,6 +149,7 @@ class TestCreateNetworkIdentityV3(TestNetwork):
"--provider-network-type", "vlan",
"--provider-physical-network", "physnet1",
"--provider-segment", "400",
+ "--transparent-vlan",
self._network.name,
]
verifylist = [
@@ -162,6 +163,7 @@ class TestCreateNetworkIdentityV3(TestNetwork):
('provider_network_type', 'vlan'),
('physical_network', 'physnet1'),
('segmentation_id', '400'),
+ ('transparent_vlan', True),
('name', self._network.name),
]
@@ -179,6 +181,7 @@ class TestCreateNetworkIdentityV3(TestNetwork):
'provider:network_type': 'vlan',
'provider:physical_network': 'physnet1',
'provider:segmentation_id': '400',
+ 'vlan_transparent': True,
})
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, data)
@@ -487,6 +490,7 @@ class TestSetNetwork(TestNetwork):
'--provider-network-type', 'vlan',
'--provider-physical-network', 'physnet1',
'--provider-segment', '400',
+ '--no-transparent-vlan',
]
verifylist = [
('network', self._network.name),
@@ -498,6 +502,7 @@ class TestSetNetwork(TestNetwork):
('provider_network_type', 'vlan'),
('physical_network', 'physnet1'),
('segmentation_id', '400'),
+ ('no_transparent_vlan', True),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -512,6 +517,7 @@ class TestSetNetwork(TestNetwork):
'provider:network_type': 'vlan',
'provider:physical_network': 'physnet1',
'provider:segmentation_id': '400',
+ 'vlan_transparent': False,
}
self.network.update_network.assert_called_once_with(
self._network, **attrs)
diff --git a/releasenotes/notes/add-vlan-transparent-option-4fa72fbfbbe3f31e.yaml b/releasenotes/notes/add-vlan-transparent-option-4fa72fbfbbe3f31e.yaml
new file mode 100644
index 00000000..508fb81c
--- /dev/null
+++ b/releasenotes/notes/add-vlan-transparent-option-4fa72fbfbbe3f31e.yaml
@@ -0,0 +1,9 @@
+---
+features:
+ - |
+ ``network create`` and ``network set`` now support
+ ``--transparent-vlan`` and ``--no-transparent-vlan``
+ options to add/remove VLAN transparency attributes
+ from networks.
+ This option is available in Network V2 only.
+ [Bug `1545537 <https://bugs.launchpad.net/bugs/1545537>`_] \ No newline at end of file