summaryrefslogtreecommitdiff
path: root/novaclient/v2
diff options
context:
space:
mode:
authorYongli He <yongli.he@intel.com>2019-07-15 16:36:09 +0800
committerMatt Riedemann <mriedem.os@gmail.com>2019-09-06 17:24:17 -0400
commitaae95dcc7a79be019fc304ced76a351c16382ede (patch)
treebb2fa94b9ff6dab6da11c762060a515e8c8d45ce /novaclient/v2
parente43596ca5ce076ecbb53a6788349b46f2b3f5c39 (diff)
downloadpython-novaclient-aae95dcc7a79be019fc304ced76a351c16382ede.tar.gz
Microversion 2.78 - show server topology
Add support microversion 2.78 which adds server topology information in the output of the following new command: nova server-topology Depends-on: https://review.opendev.org/#/c/621476/ Change-Id: I6467d52d2528a37348458baf4842b571a97f3ed2 Implements: blueprint show-server-numa-topology
Diffstat (limited to 'novaclient/v2')
-rw-r--r--novaclient/v2/servers.py18
-rw-r--r--novaclient/v2/shell.py11
2 files changed, 29 insertions, 0 deletions
diff --git a/novaclient/v2/servers.py b/novaclient/v2/servers.py
index acef7856..9870be0b 100644
--- a/novaclient/v2/servers.py
+++ b/novaclient/v2/servers.py
@@ -316,6 +316,11 @@ class Server(base.Resource):
"""Diagnostics -- Retrieve server diagnostics."""
return self.manager.diagnostics(self)
+ @api_versions.wraps("2.78")
+ def topology(self):
+ """Retrieve server topology."""
+ return self.manager.topology(self)
+
@api_versions.wraps("2.0", "2.55")
def migrate(self):
"""
@@ -1286,6 +1291,19 @@ class ServerManager(base.BootingManagerWithFind):
base.getid(server))
return base.TupleWithMeta((resp, body), resp)
+ @api_versions.wraps("2.78")
+ def topology(self, server):
+ """
+ Retrieve server topology.
+
+ :param server: The :class:`Server` (or its ID) for which
+ topology to be returned
+ :returns: An instance of novaclient.base.DictWithMeta
+ """
+ resp, body = self.api.client.get("/servers/%s/topology" %
+ base.getid(server))
+ return base.DictWithMeta(body, resp)
+
def _validate_create_nics(self, nics):
# nics are required with microversion 2.37+ and can be a string or list
if self.api_version > api_versions.APIVersion('2.36'):
diff --git a/novaclient/v2/shell.py b/novaclient/v2/shell.py
index a08c8674..acaf1783 100644
--- a/novaclient/v2/shell.py
+++ b/novaclient/v2/shell.py
@@ -2313,6 +2313,17 @@ def do_diagnostics(cs, args):
utils.print_dict(cs.servers.diagnostics(server)[1], wrap=80)
+@api_versions.wraps("2.78")
+@utils.arg('server', metavar='<server>', help=_('Name or ID of server.'))
+def do_server_topology(cs, args):
+ """Retrieve server topology."""
+ server = _find_server(cs, args.server)
+ # This prints a dict with only two properties: nodes and pagesize_kb
+ # nodes is a list of dicts so it does not print very well, it's just a
+ # json blob in the output.
+ utils.print_dict(cs.servers.topology(server), wrap=80)
+
+
@utils.arg(
'server', metavar='<server>',
help=_('Name or ID of a server for which the network cache should '