Skip to content

Commit 467ed54

Browse files
Jenkinsopenstack-gerrit
authored andcommitted
Merge "Make "flavor show" command to show a private flavor properly"
2 parents 5df1884 + 681d6dc commit 467ed54

3 files changed

Lines changed: 37 additions & 21 deletions

File tree

openstackclient/compute/v2/flavor.py

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,29 @@
1818
import six
1919

2020
from openstackclient.common import command
21+
from openstackclient.common import exceptions
2122
from openstackclient.common import parseractions
2223
from openstackclient.common import utils
2324

2425

26+
def _find_flavor(compute_client, flavor):
27+
try:
28+
return compute_client.flavors.get(flavor)
29+
except Exception as ex:
30+
if type(ex).__name__ == 'NotFound':
31+
pass
32+
else:
33+
raise
34+
try:
35+
return compute_client.flavors.find(name=flavor, is_public=None)
36+
except Exception as ex:
37+
if type(ex).__name__ == 'NotFound':
38+
msg = "No flavor with a name or ID of '%s' exists." % flavor
39+
raise exceptions.CommandError(msg)
40+
else:
41+
raise
42+
43+
2544
class CreateFlavor(command.ShowOne):
2645
"""Create new flavor"""
2746

@@ -132,8 +151,7 @@ def get_parser(self, prog_name):
132151

133152
def take_action(self, parsed_args):
134153
compute_client = self.app.client_manager.compute
135-
flavor = utils.find_resource(compute_client.flavors,
136-
parsed_args.flavor)
154+
flavor = _find_flavor(compute_client, parsed_args.flavor)
137155
compute_client.flavors.delete(flavor.id)
138156

139157

@@ -239,8 +257,7 @@ def get_parser(self, prog_name):
239257

240258
def take_action(self, parsed_args):
241259
compute_client = self.app.client_manager.compute
242-
flavor = utils.find_resource(compute_client.flavors,
243-
parsed_args.flavor)
260+
flavor = _find_flavor(compute_client, parsed_args.flavor)
244261
flavor.set_keys(parsed_args.property)
245262

246263

@@ -258,8 +275,7 @@ def get_parser(self, prog_name):
258275

259276
def take_action(self, parsed_args):
260277
compute_client = self.app.client_manager.compute
261-
resource_flavor = utils.find_resource(compute_client.flavors,
262-
parsed_args.flavor)
278+
resource_flavor = _find_flavor(compute_client, parsed_args.flavor)
263279
flavor = resource_flavor._info.copy()
264280
flavor.pop("links", None)
265281

@@ -290,6 +306,5 @@ def get_parser(self, prog_name):
290306

291307
def take_action(self, parsed_args):
292308
compute_client = self.app.client_manager.compute
293-
flavor = utils.find_resource(compute_client.flavors,
294-
parsed_args.flavor)
309+
flavor = _find_flavor(compute_client, parsed_args.flavor)
295310
flavor.unset_keys(parsed_args.property)

openstackclient/tests/compute/v2/test_flavor.py

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -433,7 +433,7 @@ def setUp(self):
433433
super(TestFlavorSet, self).setUp()
434434

435435
self.flavors_mock.find.return_value = self.flavor
436-
436+
self.flavors_mock.get.side_effect = exceptions.NotFound(None)
437437
self.cmd = flavor.SetFlavor(self.app, None)
438438

439439
def test_flavor_set(self):
@@ -448,10 +448,8 @@ def test_flavor_set(self):
448448
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
449449

450450
result = self.cmd.take_action(parsed_args)
451-
try:
452-
self.flavors_mock.find.assert_called_with(name=parsed_args.flavor)
453-
except Exception:
454-
self.flavors_mock.get.assert_called_with(parsed_args.flavor)
451+
self.flavors_mock.find.assert_called_with(name=parsed_args.flavor,
452+
is_public=None)
455453
self.assertIsNone(result)
456454

457455

@@ -491,9 +489,9 @@ class TestFlavorShow(TestFlavor):
491489
def setUp(self):
492490
super(TestFlavorShow, self).setUp()
493491

494-
# Return value of utils.find_resource()
495-
self.flavors_mock.get.return_value = self.flavor
496-
492+
# Return value of _find_resource()
493+
self.flavors_mock.find.return_value = self.flavor
494+
self.flavors_mock.get.side_effect = exceptions.NotFound(None)
497495
self.cmd = flavor.ShowFlavor(self.app, None)
498496

499497
def test_show_no_options(self):
@@ -529,7 +527,7 @@ def setUp(self):
529527
super(TestFlavorUnset, self).setUp()
530528

531529
self.flavors_mock.find.return_value = self.flavor
532-
530+
self.flavors_mock.get.side_effect = exceptions.NotFound(None)
533531
self.cmd = flavor.UnsetFlavor(self.app, None)
534532

535533
def test_flavor_unset(self):
@@ -544,8 +542,6 @@ def test_flavor_unset(self):
544542
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
545543

546544
result = self.cmd.take_action(parsed_args)
547-
try:
548-
self.flavors_mock.find.assert_called_with(name=parsed_args.flavor)
549-
except Exception:
550-
self.flavors_mock.get.assert_called_with(parsed_args.flavor)
545+
self.flavors_mock.find.assert_called_with(name=parsed_args.flavor,
546+
is_public=None)
551547
self.assertIsNone(result)
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
fixes:
3+
- Fixed ``flavor show/delete/set/unset`` command to properly
4+
find a private flavor by flavor name.
5+
[Bug `1575478 <https://bugs.launchpad.net/bugs/1575478>`_]

0 commit comments

Comments
 (0)