Skip to content

Commit aa1495e

Browse files
author
reedip
committed
Add provider network options to osc network set
The following patch adds the provider network options to OSC "network set". Change-Id: I23b617077eda25d16164172a8e280082750eaf18 Partial-Bug: #1545537
1 parent 3f2ed7d commit aa1495e

4 files changed

Lines changed: 62 additions & 35 deletions

File tree

doc/source/command-objects/network.rst

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,9 @@ Set network properties
172172
[--enable | --disable]
173173
[--share | --no-share]
174174
[--external [--default | --no-default] | --internal]
175+
[--provider-network-type <provider-network-type>]
176+
[--provider-physical-network <provider-physical-network>]
177+
[--provider-segment <provider-segment>]
175178
<network>
176179
177180
.. option:: --name <name>
@@ -211,6 +214,19 @@ Set network properties
211214
212215
Do not use the network as the default external network.
213216
217+
.. option:: --provider-network-type <provider-network-type>
218+
219+
The physical mechanism by which the virtual network is implemented.
220+
The supported options are: flat, gre, local, vlan, vxlan
221+
222+
.. option:: --provider-physical-network <provider-physical-network>
223+
224+
Name of the physical network over which the virtual network is implemented
225+
226+
.. option:: --provider-segment <provider-segment>
227+
228+
VLAN ID for VLAN networks or Tunnel ID for GRE/VXLAN networks
229+
214230
.. _network_set-network:
215231
.. describe:: <network>
216232

openstackclient/network/v2/network.py

Lines changed: 33 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -86,10 +86,40 @@ def _get_attrs(client_manager, parsed_args):
8686
attrs['is_default'] = False
8787
if parsed_args.default:
8888
attrs['is_default'] = True
89-
89+
# Update Provider network options
90+
if parsed_args.provider_network_type:
91+
attrs['provider:network_type'] = parsed_args.provider_network_type
92+
if parsed_args.physical_network:
93+
attrs['provider:physical_network'] = parsed_args.physical_network
94+
if parsed_args.segmentation_id:
95+
attrs['provider:segmentation_id'] = parsed_args.segmentation_id
9096
return attrs
9197

9298

99+
def _add_provider_network_options(parser):
100+
# Add provider network options
101+
parser.add_argument(
102+
'--provider-network-type',
103+
metavar='<provider-network-type>',
104+
choices=['flat', 'gre', 'local',
105+
'vlan', 'vxlan'],
106+
help=_("The physical mechanism by which the virtual network "
107+
"is implemented. The supported options are: "
108+
"flat, gre, local, vlan, vxlan"))
109+
parser.add_argument(
110+
'--provider-physical-network',
111+
metavar='<provider-physical-network>',
112+
dest='physical_network',
113+
help=_("Name of the physical network over which the virtual "
114+
"network is implemented"))
115+
parser.add_argument(
116+
'--provider-segment',
117+
metavar='<provider-segment>',
118+
dest='segmentation_id',
119+
help=_("VLAN ID for VLAN networks or Tunnel ID for GRE/VXLAN "
120+
"networks"))
121+
122+
93123
def _get_attrs_compute(client_manager, parsed_args):
94124
attrs = {}
95125
if parsed_args.name is not None:
@@ -100,7 +130,6 @@ def _get_attrs_compute(client_manager, parsed_args):
100130
attrs['share_address'] = False
101131
if parsed_args.subnet is not None:
102132
attrs['cidr'] = parsed_args.subnet
103-
104133
return attrs
105134

106135

@@ -180,29 +209,7 @@ def update_parser_network(self, parser):
180209
help=_("Do not use the network as the default external network. "
181210
"(default)")
182211
)
183-
parser.add_argument(
184-
'--provider-network-type',
185-
metavar='<provider-network-type>',
186-
choices=['flat', 'gre', 'local',
187-
'vlan', 'vxlan'],
188-
help=_("The physical mechanism by which the virtual network "
189-
"is implemented. The supported options are: "
190-
"flat, gre, local, vlan, vxlan")
191-
)
192-
parser.add_argument(
193-
'--provider-physical-network',
194-
metavar='<provider-physical-network>',
195-
dest='physical_network',
196-
help=_("Name of the physical network over which the virtual "
197-
"network is implemented")
198-
)
199-
parser.add_argument(
200-
'--provider-segment',
201-
metavar='<provider-segment>',
202-
dest='segmentation_id',
203-
help=_("VLAN ID for VLAN networks or Tunnel ID for GRE/VXLAN "
204-
"networks")
205-
)
212+
_add_provider_network_options(parser)
206213
return parser
207214

208215
def update_parser_compute(self, parser):
@@ -215,12 +222,6 @@ def update_parser_compute(self, parser):
215222

216223
def take_action_network(self, client, parsed_args):
217224
attrs = _get_attrs(self.app.client_manager, parsed_args)
218-
if parsed_args.provider_network_type:
219-
attrs['provider:network_type'] = parsed_args.provider_network_type
220-
if parsed_args.physical_network:
221-
attrs['provider:physical_network'] = parsed_args.physical_network
222-
if parsed_args.segmentation_id:
223-
attrs['provider:segmentation_id'] = parsed_args.segmentation_id
224225
obj = client.create_network(**attrs)
225226
columns = _get_columns(obj)
226227
data = utils.get_item_properties(obj, columns, formatters=_formatters)
@@ -412,6 +413,7 @@ def get_parser(self, prog_name):
412413
action='store_true',
413414
help=_("Do not use the network as the default external network")
414415
)
416+
_add_provider_network_options(parser)
415417
return parser
416418

417419
def take_action(self, parsed_args):

openstackclient/tests/network/v2/test_network.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -484,6 +484,9 @@ def test_set_this(self):
484484
'--share',
485485
'--external',
486486
'--default',
487+
'--provider-network-type', 'vlan',
488+
'--provider-physical-network', 'physnet1',
489+
'--provider-segment', '400',
487490
]
488491
verifylist = [
489492
('network', self._network.name),
@@ -492,6 +495,9 @@ def test_set_this(self):
492495
('share', True),
493496
('external', True),
494497
('default', True),
498+
('provider_network_type', 'vlan'),
499+
('physical_network', 'physnet1'),
500+
('segmentation_id', '400'),
495501
]
496502

497503
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -503,6 +509,9 @@ def test_set_this(self):
503509
'shared': True,
504510
'router:external': True,
505511
'is_default': True,
512+
'provider:network_type': 'vlan',
513+
'provider:physical_network': 'physnet1',
514+
'provider:segmentation_id': '400',
506515
}
507516
self.network.update_network.assert_called_once_with(
508517
self._network, **attrs)

releasenotes/notes/bug-1545537-12bbf01d2280dd2f.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
features:
33
- |
44
Add provider network options ``--provider-network-type``,
5-
``--provider-physical-network``, and ``--provider-segmentation-id``
6-
to the ``network create`` command.
7-
These options are available for Networkv2 only
8-
[Bug `1545537 <https://bugs.launchpad.net/bugs/1545537>`_]
5+
``--provider-physical-network`` and ``--provider-segment``
6+
to the ``network create`` and ``network set`` commands.
7+
These options are available for NetworkV2 only.
8+
[Bug `1545537 <https://bugs.launchpad.net/bugs/1545537>`_]

0 commit comments

Comments
 (0)