Skip to content

Commit 5e5b89f

Browse files
Zuulopenstack-gerrit
authored andcommitted
Merge "Router flavor_id can be a name"
2 parents 1ea2911 + 2e7ba5e commit 5e5b89f

3 files changed

Lines changed: 42 additions & 3 deletions

File tree

openstackclient/network/v2/router.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
"""Router action implementations"""
1515

16+
import argparse
1617
import collections
1718
import copy
1819
import json
@@ -198,6 +199,8 @@ def _get_external_gateway_attrs(client_manager, parsed_args):
198199

199200
def _get_attrs(client_manager, parsed_args):
200201
attrs = {}
202+
n_client = client_manager.network
203+
201204
if parsed_args.name is not None:
202205
attrs['name'] = parsed_args.name
203206
if parsed_args.enable:
@@ -229,7 +232,8 @@ def _get_attrs(client_manager, parsed_args):
229232

230233
# "router set" command doesn't support setting flavor_id.
231234
if 'flavor_id' in parsed_args and parsed_args.flavor_id is not None:
232-
attrs['flavor_id'] = parsed_args.flavor_id
235+
flavor = n_client.find_flavor(parsed_args.flavor_id)
236+
attrs['flavor_id'] = flavor.id
233237

234238
for attr in ('enable_default_route_bfd', 'enable_default_route_ecmp'):
235239
value = getattr(parsed_args, attr, None)
@@ -560,10 +564,15 @@ def get_parser(self, prog_name):
560564
action='store_false',
561565
help=_("Disable IPv6 NDP proxy on external gateway"),
562566
)
567+
parser.add_argument(
568+
'--flavor',
569+
metavar='<flavor-id>',
570+
help=_("Associate the router to a flavor (by name or ID"),
571+
)
563572
parser.add_argument(
564573
'--flavor-id',
565574
metavar='<flavor-id>',
566-
help=_("Associate the router to a flavor by ID"),
575+
help=argparse.SUPPRESS,
567576
)
568577
_parser_add_bfd_ecmp_arguments(parser)
569578

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

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -384,13 +384,15 @@ def test_create_with_tags(self):
384384
def test_create_with_no_tag(self):
385385
self._test_create_with_tag(add_tags=False)
386386

387-
def test_create_with_flavor_id(self):
387+
def test_create_with_flavor_id_or_name(self):
388388
_flavor = network_fakes.create_one_network_flavor()
389+
self.network_client.find_flavor = mock.Mock(return_value=_flavor)
389390
arglist = [
390391
self.new_router.name,
391392
'--flavor-id',
392393
_flavor.id,
393394
]
395+
arglist_with_name = [self.new_router.name, '--flavor-id', _flavor.name]
394396
verifylist = [
395397
('name', self.new_router.name),
396398
('enable', True),
@@ -410,6 +412,28 @@ def test_create_with_flavor_id(self):
410412
self.assertEqual(self.columns, columns)
411413
self.assertCountEqual(self.data, data)
412414

415+
self.network_client.create_router.reset_mock()
416+
verifylist_w_name = [
417+
('name', self.new_router.name),
418+
('enable', True),
419+
('distributed', False),
420+
('ha', False),
421+
('flavor_id', _flavor.name),
422+
]
423+
parsed_args_w_name = self.check_parser(
424+
self.cmd, arglist_with_name, verifylist_w_name
425+
)
426+
columns, data = self.cmd.take_action(parsed_args_w_name)
427+
self.network_client.create_router.assert_called_once_with(
428+
**{
429+
'admin_state_up': True,
430+
'name': self.new_router.name,
431+
'flavor_id': _flavor.id,
432+
}
433+
)
434+
self.assertEqual(self.columns, columns)
435+
self.assertCountEqual(self.data, data)
436+
413437
def test_create_with_enable_default_route_bfd(self):
414438
self.network_client.find_extension = mock.Mock(
415439
return_value=network_fakes.create_one_extension(
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
fixes:
3+
- |
4+
The ``router create --flavor-id`` parameter has been deprecated
5+
in favour of the ``--flavor`` parameter, which accepts both
6+
flavor names and flavor IDs.

0 commit comments

Comments
 (0)