Skip to content

Commit 7f20efc

Browse files
Jenkinsopenstack-gerrit
authored andcommitted
Merge "Add provider network options to osc network set"
2 parents 4d05851 + aa1495e commit 7f20efc

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)