summaryrefslogtreecommitdiff
path: root/novaclient
diff options
context:
space:
mode:
authorAndrey Kurilin <akurilin@mirantis.com>2016-04-01 18:48:58 +0300
committerAndrey Kurilin <akurilin@mirantis.com>2016-04-14 12:05:57 +0300
commitfd23ff900093525543e345656cbbe9b4c520c95a (patch)
tree2d3e9cf05b8400723b685bac11acd95fb0d31cf0 /novaclient
parentd00a47323883e6a381062c7be6783a18d0c32f6d (diff)
downloadpython-novaclient-fd23ff900093525543e345656cbbe9b4c520c95a.tar.gz
Use common find_server from v2.shell
- extend v2.shell._find_server with raise_if_notfound param - reuse v2.shell._find_server for instance_action extension - fix instance-action-list on v2.21 (it was unable to work with deleted instances) Change-Id: I7b538124c6ab0ee00164822b324aaf2d37c8c2af
Diffstat (limited to 'novaclient')
-rw-r--r--novaclient/v2/contrib/instance_action.py31
-rw-r--r--novaclient/v2/shell.py22
2 files changed, 28 insertions, 25 deletions
diff --git a/novaclient/v2/contrib/instance_action.py b/novaclient/v2/contrib/instance_action.py
index d5bd4762..05b847c2 100644
--- a/novaclient/v2/contrib/instance_action.py
+++ b/novaclient/v2/contrib/instance_action.py
@@ -15,13 +15,11 @@
import pprint
-import six
-
from novaclient import api_versions
from novaclient import base
-from novaclient import exceptions
from novaclient.i18n import _
from novaclient import utils
+from novaclient.v2 import shell
class InstanceActionManager(base.ManagerWithFind):
@@ -44,23 +42,6 @@ class InstanceActionManager(base.ManagerWithFind):
base.getid(server), 'instanceActions')
-@api_versions.wraps("2.0", "2.20")
-def _find_server(cs, args):
- return utils.find_resource(cs.servers, args.server)
-
-
-@api_versions.wraps("2.21")
-def _find_server(cs, args):
- try:
- return utils.find_resource(cs.servers, args.server,
- wrap_exception=False)
- except exceptions.NoUniqueMatch as e:
- raise exceptions.CommandError(six.text_type(e))
- except exceptions.NotFound:
- # The server can be deleted
- return args.server
-
-
@utils.arg(
'server',
metavar='<server>',
@@ -78,7 +59,10 @@ def _find_server(cs, args):
help=_('Request ID of the action to get.'))
def do_instance_action(cs, args):
"""Show an action."""
- server = _find_server(cs, args)
+ if cs.api_version < api_versions.APIVersion("2.21"):
+ server = shell._find_server(cs, args.server)
+ else:
+ server = shell._find_server(cs, args.server, raise_if_notfound=False)
action_resource = cs.instance_action.get(server, args.request_id)
action = action_resource._info
if 'events' in action:
@@ -99,7 +83,10 @@ def do_instance_action(cs, args):
start_version="2.21")
def do_instance_action_list(cs, args):
"""List actions on a server."""
- server = _find_server(cs, args)
+ if cs.api_version < api_versions.APIVersion("2.21"):
+ server = shell._find_server(cs, args.server)
+ else:
+ server = shell._find_server(cs, args.server, raise_if_notfound=False)
actions = cs.instance_action.list(server)
utils.print_list(actions,
['Action', 'Request_ID', 'Message', 'Start_Time'],
diff --git a/novaclient/v2/shell.py b/novaclient/v2/shell.py
index 769725e4..84468267 100644
--- a/novaclient/v2/shell.py
+++ b/novaclient/v2/shell.py
@@ -2156,9 +2156,25 @@ def do_delete(cs, args):
_("Unable to delete the specified server(s)."))
-def _find_server(cs, server, **find_args):
- """Get a server by name or ID."""
- return utils.find_resource(cs.servers, server, **find_args)
+def _find_server(cs, server, raise_if_notfound=True, **find_args):
+ """Get a server by name or ID.
+
+ :param cs: NovaClient's instance
+ :param server: identifier of server
+ :param raise_if_notfound: raise an exception if server is not found
+ :param find_args: argument to search server
+ """
+ if raise_if_notfound:
+ return utils.find_resource(cs.servers, server, **find_args)
+ else:
+ try:
+ return utils.find_resource(cs.servers, server,
+ wrap_exception=False)
+ except exceptions.NoUniqueMatch as e:
+ raise exceptions.CommandError(six.text_type(e))
+ except exceptions.NotFound:
+ # The server can be deleted
+ return server
def _find_image(cs, image):