Skip to content

Commit 962efd9

Browse files
Hongbin Lustmcginnis
authored andcommitted
Disallow setting default on internal network
The ``--default`` option should be only used for external network. Default internal network is not currently supported so we disallow it for now. Change-Id: Ia9d39b40e1e041d7bda0f6a27d058e382b572e1a Closes-Bug: #1745658
1 parent ee01708 commit 962efd9

3 files changed

Lines changed: 48 additions & 1 deletion

File tree

openstackclient/network/v2/network.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
from cliff import columns as cliff_columns
1717
from osc_lib.cli import format_columns
1818
from osc_lib.command import command
19+
from osc_lib import exceptions
1920
from osc_lib import utils
2021
from osc_lib.utils import tags as _tag
2122

@@ -125,6 +126,9 @@ def _get_attrs_network(client_manager, parsed_args):
125126
attrs['is_default'] = False
126127
if parsed_args.default:
127128
attrs['is_default'] = True
129+
if attrs.get('is_default') and not attrs.get('router:external'):
130+
msg = _("Cannot set default for internal network")
131+
raise exceptions.CommandError(msg)
128132
# Update Provider network options
129133
if parsed_args.provider_network_type:
130134
attrs['provider:network_type'] = parsed_args.provider_network_type
@@ -702,7 +706,8 @@ def get_parser(self, prog_name):
702706
default_router_grp.add_argument(
703707
'--default',
704708
action='store_true',
705-
help=_("Set the network as the default external network")
709+
help=_("Set the network as the default external network "
710+
"(cannot be used with internal network).")
706711
)
707712
default_router_grp.add_argument(
708713
'--no-default',

openstackclient/tests/unit/network/v2/test_network.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,24 @@ def test_create_with_tags(self):
278278
def test_create_with_no_tag(self):
279279
self._test_create_with_tag(add_tags=False)
280280

281+
def test_create_default_internal(self):
282+
arglist = [
283+
self._network.name,
284+
"--default",
285+
]
286+
verifylist = [
287+
('name', self._network.name),
288+
('enable', True),
289+
('share', None),
290+
('project', None),
291+
('external', False),
292+
('default', True),
293+
]
294+
295+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
296+
self.assertRaises(exceptions.CommandError, self.cmd.take_action,
297+
parsed_args)
298+
281299

282300
class TestCreateNetworkIdentityV2(TestNetwork):
283301

@@ -1025,6 +1043,21 @@ def test_set_with_tags(self):
10251043
def test_set_with_no_tag(self):
10261044
self._test_set_tags(with_tags=False)
10271045

1046+
def test_set_default_internal(self):
1047+
arglist = [
1048+
self._network.name,
1049+
'--internal',
1050+
'--default',
1051+
]
1052+
verifylist = [
1053+
('internal', True),
1054+
('default', True),
1055+
]
1056+
1057+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
1058+
self.assertRaises(exceptions.CommandError, self.cmd.take_action,
1059+
parsed_args)
1060+
10281061

10291062
class TestShowNetwork(TestNetwork):
10301063

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
fixes:
3+
- |
4+
For ``network create`` the
5+
`--default`` option should be only used for external networks.
6+
After this release, we enforce this scenario. If a users attempts
7+
to create an internal default network or update a network to be
8+
internal default, the command will be denied.
9+
[Bug `1745658 <https://bugs.launchpad.net/bugs/1745658>`_]

0 commit comments

Comments
 (0)