Merge "Make "flavor show" command to show a private flavor properly"

This commit is contained in:
Jenkins 2016-05-06 14:07:54 +00:00 committed by Gerrit Code Review
commit 467ed54d6d
3 changed files with 37 additions and 21 deletions

View File

@ -18,10 +18,29 @@
import six import six
from openstackclient.common import command from openstackclient.common import command
from openstackclient.common import exceptions
from openstackclient.common import parseractions from openstackclient.common import parseractions
from openstackclient.common import utils from openstackclient.common import utils
def _find_flavor(compute_client, flavor):
try:
return compute_client.flavors.get(flavor)
except Exception as ex:
if type(ex).__name__ == 'NotFound':
pass
else:
raise
try:
return compute_client.flavors.find(name=flavor, is_public=None)
except Exception as ex:
if type(ex).__name__ == 'NotFound':
msg = "No flavor with a name or ID of '%s' exists." % flavor
raise exceptions.CommandError(msg)
else:
raise
class CreateFlavor(command.ShowOne): class CreateFlavor(command.ShowOne):
"""Create new flavor""" """Create new flavor"""
@ -132,8 +151,7 @@ class DeleteFlavor(command.Command):
def take_action(self, parsed_args): def take_action(self, parsed_args):
compute_client = self.app.client_manager.compute compute_client = self.app.client_manager.compute
flavor = utils.find_resource(compute_client.flavors, flavor = _find_flavor(compute_client, parsed_args.flavor)
parsed_args.flavor)
compute_client.flavors.delete(flavor.id) compute_client.flavors.delete(flavor.id)
@ -239,8 +257,7 @@ class SetFlavor(command.Command):
def take_action(self, parsed_args): def take_action(self, parsed_args):
compute_client = self.app.client_manager.compute compute_client = self.app.client_manager.compute
flavor = utils.find_resource(compute_client.flavors, flavor = _find_flavor(compute_client, parsed_args.flavor)
parsed_args.flavor)
flavor.set_keys(parsed_args.property) flavor.set_keys(parsed_args.property)
@ -258,8 +275,7 @@ class ShowFlavor(command.ShowOne):
def take_action(self, parsed_args): def take_action(self, parsed_args):
compute_client = self.app.client_manager.compute compute_client = self.app.client_manager.compute
resource_flavor = utils.find_resource(compute_client.flavors, resource_flavor = _find_flavor(compute_client, parsed_args.flavor)
parsed_args.flavor)
flavor = resource_flavor._info.copy() flavor = resource_flavor._info.copy()
flavor.pop("links", None) flavor.pop("links", None)
@ -290,6 +306,5 @@ class UnsetFlavor(command.Command):
def take_action(self, parsed_args): def take_action(self, parsed_args):
compute_client = self.app.client_manager.compute compute_client = self.app.client_manager.compute
flavor = utils.find_resource(compute_client.flavors, flavor = _find_flavor(compute_client, parsed_args.flavor)
parsed_args.flavor)
flavor.unset_keys(parsed_args.property) flavor.unset_keys(parsed_args.property)

View File

@ -433,7 +433,7 @@ class TestFlavorSet(TestFlavor):
super(TestFlavorSet, self).setUp() super(TestFlavorSet, self).setUp()
self.flavors_mock.find.return_value = self.flavor self.flavors_mock.find.return_value = self.flavor
self.flavors_mock.get.side_effect = exceptions.NotFound(None)
self.cmd = flavor.SetFlavor(self.app, None) self.cmd = flavor.SetFlavor(self.app, None)
def test_flavor_set(self): def test_flavor_set(self):
@ -448,10 +448,8 @@ class TestFlavorSet(TestFlavor):
parsed_args = self.check_parser(self.cmd, arglist, verifylist) parsed_args = self.check_parser(self.cmd, arglist, verifylist)
result = self.cmd.take_action(parsed_args) result = self.cmd.take_action(parsed_args)
try: self.flavors_mock.find.assert_called_with(name=parsed_args.flavor,
self.flavors_mock.find.assert_called_with(name=parsed_args.flavor) is_public=None)
except Exception:
self.flavors_mock.get.assert_called_with(parsed_args.flavor)
self.assertIsNone(result) self.assertIsNone(result)
@ -491,9 +489,9 @@ class TestFlavorShow(TestFlavor):
def setUp(self): def setUp(self):
super(TestFlavorShow, self).setUp() super(TestFlavorShow, self).setUp()
# Return value of utils.find_resource() # Return value of _find_resource()
self.flavors_mock.get.return_value = self.flavor self.flavors_mock.find.return_value = self.flavor
self.flavors_mock.get.side_effect = exceptions.NotFound(None)
self.cmd = flavor.ShowFlavor(self.app, None) self.cmd = flavor.ShowFlavor(self.app, None)
def test_show_no_options(self): def test_show_no_options(self):
@ -529,7 +527,7 @@ class TestFlavorUnset(TestFlavor):
super(TestFlavorUnset, self).setUp() super(TestFlavorUnset, self).setUp()
self.flavors_mock.find.return_value = self.flavor self.flavors_mock.find.return_value = self.flavor
self.flavors_mock.get.side_effect = exceptions.NotFound(None)
self.cmd = flavor.UnsetFlavor(self.app, None) self.cmd = flavor.UnsetFlavor(self.app, None)
def test_flavor_unset(self): def test_flavor_unset(self):
@ -544,8 +542,6 @@ class TestFlavorUnset(TestFlavor):
parsed_args = self.check_parser(self.cmd, arglist, verifylist) parsed_args = self.check_parser(self.cmd, arglist, verifylist)
result = self.cmd.take_action(parsed_args) result = self.cmd.take_action(parsed_args)
try: self.flavors_mock.find.assert_called_with(name=parsed_args.flavor,
self.flavors_mock.find.assert_called_with(name=parsed_args.flavor) is_public=None)
except Exception:
self.flavors_mock.get.assert_called_with(parsed_args.flavor)
self.assertIsNone(result) self.assertIsNone(result)

View File

@ -0,0 +1,5 @@
---
fixes:
- Fixed ``flavor show/delete/set/unset`` command to properly
find a private flavor by flavor name.
[Bug `1575478 <https://bugs.launchpad.net/bugs/1575478>`_]