diff options
author | Yongli He <yongli.he@intel.com> | 2019-07-15 16:36:09 +0800 |
---|---|---|
committer | Matt Riedemann <mriedem.os@gmail.com> | 2019-09-06 17:24:17 -0400 |
commit | aae95dcc7a79be019fc304ced76a351c16382ede (patch) | |
tree | bb2fa94b9ff6dab6da11c762060a515e8c8d45ce /novaclient/v2 | |
parent | e43596ca5ce076ecbb53a6788349b46f2b3f5c39 (diff) | |
download | python-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.py | 18 | ||||
-rw-r--r-- | novaclient/v2/shell.py | 11 |
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 ' |