Skip to content

Commit 67f8b89

Browse files
author
reedip
committed
Add external network options to osc network set
The following patch adds the options "--external" & "--internal" and the suboptions to "external": "--default" & "--no-default", to "osc network set" CLI to provide the user an option to set a network as an external network or remove the setting. Change-Id: I3a7f2cb249bc8101cbb01322d7732e913237d6cd Partial-Bug: #1545537
1 parent be6027e commit 67f8b89

4 files changed

Lines changed: 62 additions & 11 deletions

File tree

doc/source/command-objects/network.rst

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,7 @@ Set network properties
171171
[--name <name>]
172172
[--enable | --disable]
173173
[--share | --no-share]
174+
[--external [--default | --no-default] | --internal]
174175
<network>
175176
176177
.. option:: --name <name>
@@ -193,6 +194,24 @@ Set network properties
193194
194195
Do not share the network between projects
195196
197+
.. option:: --external
198+
199+
Set this network as an external network.
200+
Requires the "external-net" extension to be enabled.
201+
202+
.. option:: --internal
203+
204+
Set this network as an internal network
205+
206+
.. option:: --default
207+
208+
Specify if this network should be used as
209+
the default external network
210+
211+
.. option:: --no-default
212+
213+
Do not use the network as the default external network.
214+
196215
.. _network_set-network:
197216
.. describe:: <network>
198217

openstackclient/network/v2/network.py

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,16 @@ def _get_attrs(client_manager, parsed_args):
7676
parsed_args.availability_zone_hints is not None:
7777
attrs['availability_zone_hints'] = parsed_args.availability_zone_hints
7878

79+
# update_external_network_options
80+
if parsed_args.internal:
81+
attrs['router:external'] = False
82+
if parsed_args.external:
83+
attrs['router:external'] = True
84+
if parsed_args.no_default:
85+
attrs['is_default'] = False
86+
if parsed_args.default:
87+
attrs['is_default'] = True
88+
7989
return attrs
8090

8191

@@ -197,14 +207,6 @@ def update_parser_compute(self, parser):
197207

198208
def take_action_network(self, client, parsed_args):
199209
attrs = _get_attrs(self.app.client_manager, parsed_args)
200-
if parsed_args.internal:
201-
attrs['router:external'] = False
202-
if parsed_args.external:
203-
attrs['router:external'] = True
204-
if parsed_args.no_default:
205-
attrs['is_default'] = False
206-
if parsed_args.default:
207-
attrs['is_default'] = True
208210
if parsed_args.provider_network_type:
209211
attrs['provider:network_type'] = parsed_args.provider_network_type
210212
if parsed_args.physical_network:
@@ -379,6 +381,26 @@ def get_parser(self, prog_name):
379381
action='store_true',
380382
help='Do not share the network between projects',
381383
)
384+
external_router_grp = parser.add_mutually_exclusive_group()
385+
external_router_grp.add_argument(
386+
'--external',
387+
action='store_true',
388+
help='Set this network as an external network. '
389+
'Requires the "external-net" extension to be enabled.')
390+
external_router_grp.add_argument(
391+
'--internal',
392+
action='store_true',
393+
help='Set this network as an internal network')
394+
default_router_grp = parser.add_mutually_exclusive_group()
395+
default_router_grp.add_argument(
396+
'--default',
397+
action='store_true',
398+
help='Specify if this network should be used as '
399+
'the default external network')
400+
default_router_grp.add_argument(
401+
'--no-default',
402+
action='store_true',
403+
help='Do not use the network as the default external network.')
382404
return parser
383405

384406
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
@@ -482,12 +482,16 @@ def test_set_this(self):
482482
'--enable',
483483
'--name', 'noob',
484484
'--share',
485+
'--external',
486+
'--default',
485487
]
486488
verifylist = [
487489
('network', self._network.name),
488490
('enable', True),
489491
('name', 'noob'),
490492
('share', True),
493+
('external', True),
494+
('default', True),
491495
]
492496

493497
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -497,6 +501,8 @@ def test_set_this(self):
497501
'name': 'noob',
498502
'admin_state_up': True,
499503
'shared': True,
504+
'router:external': True,
505+
'is_default': True,
500506
}
501507
self.network.update_network.assert_called_once_with(
502508
self._network, **attrs)
@@ -507,11 +513,13 @@ def test_set_that(self):
507513
self._network.name,
508514
'--disable',
509515
'--no-share',
516+
'--internal',
510517
]
511518
verifylist = [
512519
('network', self._network.name),
513520
('disable', True),
514521
('no_share', True),
522+
('internal', True),
515523
]
516524

517525
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -520,6 +528,7 @@ def test_set_that(self):
520528
attrs = {
521529
'admin_state_up': False,
522530
'shared': False,
531+
'router:external': False,
523532
}
524533
self.network.update_network.assert_called_once_with(
525534
self._network, **attrs)

releasenotes/notes/bug-1545537-7a66219d263bb1e5.yaml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
features:
33
- |
44
Add external network options ``--external|--internal`` and ``--external``
5-
suboptions ``--default|--no-default`` to the ``network create`` command.
6-
These options are available for Networkv2 only.
7-
[Bug `1545537 <https://bugs.launchpad.net/bugs/1545537>`_]
5+
suboptions ``--default|--no-default`` to the ``network create`` and
6+
``network set`` commands.
7+
These options are available for Network version 2 only.
8+
[Bug `1545537 <https://bugs.launchpad.net/bugs/1545537>`_]

0 commit comments

Comments
 (0)