Add host show CLI
Add host show CLI I cannot bump the api version to 1.5 as the unit test fail. seem pecan check the request version to all controller function which lead to unit test fail. Change-Id: I4662bde3737b6c0a4c1ea1d51ca67c072f6b3011 Partially-Implements: blueprint show-container-engine-info
This commit is contained in:
parent
544be4cb42
commit
ae8a0055de
@ -59,6 +59,7 @@ openstack.container.v1 =
|
|||||||
appcontainer_image_list = zunclient.osc.v1.images:ListImage
|
appcontainer_image_list = zunclient.osc.v1.images:ListImage
|
||||||
appcontainer_image_pull = zunclient.osc.v1.images:PullImage
|
appcontainer_image_pull = zunclient.osc.v1.images:PullImage
|
||||||
appcontainer_host_list = zunclient.osc.v1.hosts:ListHost
|
appcontainer_host_list = zunclient.osc.v1.hosts:ListHost
|
||||||
|
appcontainer_host_show = zunclient.osc.v1.hosts:ShowHost
|
||||||
|
|
||||||
[build_sphinx]
|
[build_sphinx]
|
||||||
source-dir = doc/source
|
source-dir = doc/source
|
||||||
|
@ -16,6 +16,11 @@ from osc_lib.command import command
|
|||||||
from osc_lib import utils
|
from osc_lib import utils
|
||||||
|
|
||||||
|
|
||||||
|
def _host_columns(host):
|
||||||
|
del host._info['links']
|
||||||
|
return host._info.keys()
|
||||||
|
|
||||||
|
|
||||||
def _get_client(obj, parsed_args):
|
def _get_client(obj, parsed_args):
|
||||||
obj.log.debug("take_action(%s)" % parsed_args)
|
obj.log.debug("take_action(%s)" % parsed_args)
|
||||||
return obj.app.client_manager.container
|
return obj.app.client_manager.container
|
||||||
@ -61,3 +66,25 @@ class ListHost(command.Lister):
|
|||||||
columns = ('uuid', 'hostname', 'mem_total', 'cpus', 'os', 'labels')
|
columns = ('uuid', 'hostname', 'mem_total', 'cpus', 'os', 'labels')
|
||||||
return (columns, (utils.get_item_properties(host, columns)
|
return (columns, (utils.get_item_properties(host, columns)
|
||||||
for host in hosts))
|
for host in hosts))
|
||||||
|
|
||||||
|
|
||||||
|
class ShowHost(command.ShowOne):
|
||||||
|
"""Show a host"""
|
||||||
|
|
||||||
|
log = logging.getLogger(__name__ + ".ShowHost")
|
||||||
|
|
||||||
|
def get_parser(self, prog_name):
|
||||||
|
parser = super(ShowHost, self).get_parser(prog_name)
|
||||||
|
parser.add_argument(
|
||||||
|
'host',
|
||||||
|
metavar='<host>',
|
||||||
|
help='ID or name of the host to show.')
|
||||||
|
return parser
|
||||||
|
|
||||||
|
def take_action(self, parsed_args):
|
||||||
|
client = _get_client(self, parsed_args)
|
||||||
|
host = parsed_args.host
|
||||||
|
host = client.hosts.get(host)
|
||||||
|
columns = _host_columns(host)
|
||||||
|
|
||||||
|
return columns, utils.get_item_properties(host, columns)
|
||||||
|
@ -74,3 +74,9 @@ class HostManager(base.Manager):
|
|||||||
return self._list_pagination(self._path(path),
|
return self._list_pagination(self._path(path),
|
||||||
"hosts",
|
"hosts",
|
||||||
limit=limit)
|
limit=limit)
|
||||||
|
|
||||||
|
def get(self, id):
|
||||||
|
try:
|
||||||
|
return self._list(self._path(id))[0]
|
||||||
|
except IndexError:
|
||||||
|
return None
|
||||||
|
@ -10,6 +10,9 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
|
import json
|
||||||
|
import yaml
|
||||||
|
|
||||||
from zunclient.common import cliutils as utils
|
from zunclient.common import cliutils as utils
|
||||||
from zunclient.common import utils as zun_utils
|
from zunclient.common import utils as zun_utils
|
||||||
|
|
||||||
@ -42,3 +45,25 @@ def do_host_list(cs, args):
|
|||||||
utils.print_list(hosts, columns,
|
utils.print_list(hosts, columns,
|
||||||
{'versions': zun_utils.print_list_field('versions')},
|
{'versions': zun_utils.print_list_field('versions')},
|
||||||
sortby_index=None)
|
sortby_index=None)
|
||||||
|
|
||||||
|
|
||||||
|
@utils.arg('host',
|
||||||
|
metavar='<host>',
|
||||||
|
help='ID or name of the host to show.')
|
||||||
|
@utils.arg('-f', '--format',
|
||||||
|
metavar='<format>',
|
||||||
|
action='store',
|
||||||
|
choices=['json', 'yaml', 'table'],
|
||||||
|
default='table',
|
||||||
|
help='Print representation of the host.'
|
||||||
|
'The choices of the output format is json,table,yaml.'
|
||||||
|
'Defaults to table.')
|
||||||
|
def do_host_show(cs, args):
|
||||||
|
"""Show details of a host."""
|
||||||
|
host = cs.hosts.get(args.host)
|
||||||
|
if args.format == 'json':
|
||||||
|
print(json.dumps(host._info, indent=4, sort_keys=True))
|
||||||
|
elif args.format == 'yaml':
|
||||||
|
print(yaml.safe_dump(host._info, default_flow_style=False))
|
||||||
|
elif args.format == 'table':
|
||||||
|
utils.print_dict(host._info)
|
||||||
|
Loading…
Reference in New Issue
Block a user