From ca4ac9c9a6d0447bab972a9e6d945ec9234cec21 Mon Sep 17 00:00:00 2001 From: Adeodato Simo <dato@google.com> Date: Wed, 5 Jan 2011 12:04:15 +0000 Subject: [PATCH] =?UTF-8?q?Convert=20=E2=80=9Cgnt-group=20list=E2=80=9D=20?= =?UTF-8?q?to=20query2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Adeodato Simo <dato@google.com> Reviewed-by: Michael Hanselmann <hansmi@google.com> --- lib/client/gnt_group.py | 65 ++++++++++++++--------------------------- man/gnt-group.rst | 7 +++++ 2 files changed, 29 insertions(+), 43 deletions(-) diff --git a/lib/client/gnt_group.py b/lib/client/gnt_group.py index d3b477bec..f4578aac8 100644 --- a/lib/client/gnt_group.py +++ b/lib/client/gnt_group.py @@ -25,7 +25,7 @@ # W0614: Unused import %s from wildcard import (since we need cli) from ganeti.cli import * -from ganeti import compat +from ganeti import constants from ganeti import opcodes from ganeti import utils @@ -34,15 +34,6 @@ from ganeti import utils _LIST_DEF_FIELDS = ["name", "node_cnt", "pinst_cnt", "alloc_policy"] -#: headers (and full field list) for L{ListGroups} -_LIST_HEADERS = { - "name": "Group", "uuid": "UUID", "alloc_policy": "AllocPolicy", - "node_cnt": "Nodes", "node_list": "NodeList", - "pinst_cnt": "Instances", "pinst_list": "InstanceList", - "ctime": "CTime", "mtime": "MTime", "serial_no": "SerialNo", -} - - def AddGroup(opts, args): """Add a node group to the cluster. @@ -70,40 +61,25 @@ def ListGroups(opts, args): """ desired_fields = ParseFields(opts.output, _LIST_DEF_FIELDS) + fmtoverride = dict.fromkeys(["node_list", "pinst_list"], (",".join, False)) - output = GetClient().QueryGroups(args, desired_fields, opts.do_locking) - - if opts.no_headers: - headers = None - else: - headers = _LIST_HEADERS - - int_type_fields = frozenset(["node_cnt", "pinst_cnt", "serial_no"]) - list_type_fields = frozenset(["node_list", "pinst_list"]) - date_type_fields = frozenset(["mtime", "ctime"]) - - for row in output: - for idx, field in enumerate(desired_fields): - val = row[idx] - - if field in list_type_fields: - val = ",".join(val) - elif opts.roman_integers and field in int_type_fields: - val = compat.TryToRoman(val) - elif field in date_type_fields: - val = utils.FormatTime(val) - elif val is None: - val = "?" + return GenericList(constants.QR_GROUP, desired_fields, args, None, + opts.separator, not opts.no_headers, + format_override=fmtoverride) - row[idx] = str(val) - data = GenerateTable(separator=opts.separator, headers=headers, - fields=desired_fields, data=output) +def ListGroupFields(opts, args): + """List node fields. - for line in data: - ToStdout(line) + @param opts: the command line options selected by the user + @type args: list + @param args: fields to list, or empty for all + @rtype: int + @return: the desired exit code - return 0 + """ + return GenericListFields(constants.QR_GROUP, args, opts.separator, + not opts.no_headers) def SetGroupParams(opts, args): @@ -174,11 +150,14 @@ commands = { "<group_name>", "Add a new node group to the cluster"), "list": ( ListGroups, ARGS_MANY_GROUPS, - [NOHDR_OPT, SEP_OPT, FIELDS_OPT, SYNC_OPT, ROMAN_OPT], + [NOHDR_OPT, SEP_OPT, FIELDS_OPT], "[<group_name>...]", - "Lists the node groups in the cluster. The available fields are (see" - " the man page for details): %s. The default list is (in order): %s." % - (utils.CommaJoin(_LIST_HEADERS), utils.CommaJoin(_LIST_DEF_FIELDS))), + "Lists the node groups in the cluster. The available fields can be shown" + " using the \"list-fields\" command (see the man page for details)." + " The default list is (in order): %s." % utils.CommaJoin(_LIST_DEF_FIELDS)), + "list-fields": ( + ListGroupFields, [ArgUnknown()], [NOHDR_OPT, SEP_OPT], "[fields...]", + "Lists all available fields for node groups"), "modify": ( SetGroupParams, ARGS_ONE_GROUP, [DRY_RUN_OPT, SUBMIT_OPT, ALLOC_POLICY_OPT, NODE_PARAMS_OPT], diff --git a/man/gnt-group.rst b/man/gnt-group.rst index 6d71f4b05..712d38cda 100644 --- a/man/gnt-group.rst +++ b/man/gnt-group.rst @@ -135,6 +135,13 @@ serial_no If no group names are given, then all groups are included. Otherwise, only the named groups will be listed. +LIST-FIELDS +~~~~~~~~~~~ + +**list-fields** [field...] + +List available fields for node groups. + RENAME ~~~~~~ -- GitLab