Revision c1912a48

b/lib/cli.py
315 315
  constants.ISPECS_STD: constants.VTYPE_INT,
316 316
  }
317 317

  
318
#: User-friendly names for query2 field types
319
_QFT_NAMES = {
320
  constants.QFT_UNKNOWN: "Unknown",
321
  constants.QFT_TEXT: "Text",
322
  constants.QFT_BOOL: "Boolean",
323
  constants.QFT_NUMBER: "Number",
324
  constants.QFT_UNIT: "Storage size",
325
  constants.QFT_TIMESTAMP: "Timestamp",
326
  constants.QFT_OTHER: "Custom",
327
  }
328

  
318 329

  
319 330
class _Argument:
320 331
  def __init__(self, min=0, max=None): # pylint: disable=W0622
......
3064 3075
  return constants.EXIT_SUCCESS
3065 3076

  
3066 3077

  
3078
def _FieldDescValues(fdef):
3079
  """Helper function for L{GenericListFields} to get query field description.
3080

  
3081
  @type fdef: L{objects.QueryFieldDefinition}
3082
  @rtype: list
3083

  
3084
  """
3085
  return [
3086
    fdef.name,
3087
    _QFT_NAMES.get(fdef.kind, fdef.kind),
3088
    fdef.title,
3089
    fdef.doc,
3090
    ]
3091

  
3092

  
3067 3093
def GenericListFields(resource, fields, separator, header, cl=None):
3068 3094
  """Generic implementation for listing fields for a resource.
3069 3095

  
......
3088 3114

  
3089 3115
  columns = [
3090 3116
    TableColumn("Name", str, False),
3117
    TableColumn("Type", str, False),
3091 3118
    TableColumn("Title", str, False),
3092 3119
    TableColumn("Description", str, False),
3093 3120
    ]
3094 3121

  
3095
  rows = [[fdef.name, fdef.title, fdef.doc] for fdef in response.fields]
3122
  rows = map(_FieldDescValues, response.fields)
3096 3123

  
3097 3124
  for line in FormatTable(rows, columns, header, separator):
3098 3125
    ToStdout(line)
b/test/ganeti.cli_unittest.py
1010 1010
                      ["test", "list"], cmd, aliases, set())
1011 1011

  
1012 1012

  
1013
class TestQftNames(unittest.TestCase):
1014
  def testComplete(self):
1015
    self.assertEqual(frozenset(cli._QFT_NAMES), constants.QFT_ALL)
1016

  
1017
  def testUnique(self):
1018
    lcnames = map(lambda s: s.lower(), cli._QFT_NAMES.values())
1019
    self.assertFalse(utils.FindDuplicates(lcnames))
1020

  
1021
  def testUppercase(self):
1022
    for name in cli._QFT_NAMES.values():
1023
      self.assertEqual(name[0], name[0].upper())
1024

  
1025

  
1026
class TestFieldDescValues(unittest.TestCase):
1027
  def testKnownKind(self):
1028
    fdef = objects.QueryFieldDefinition(name="aname",
1029
                                        title="Atitle",
1030
                                        kind=constants.QFT_TEXT,
1031
                                        doc="aaa doc aaa")
1032
    self.assertEqual(cli._FieldDescValues(fdef),
1033
                     ["aname", "Text", "Atitle", "aaa doc aaa"])
1034

  
1035
  def testUnknownKind(self):
1036
    kind = "#foo#"
1037

  
1038
    self.assertFalse(kind in constants.QFT_ALL)
1039
    self.assertFalse(kind in cli._QFT_NAMES)
1040

  
1041
    fdef = objects.QueryFieldDefinition(name="zname", title="Ztitle",
1042
                                        kind=kind, doc="zzz doc zzz")
1043
    self.assertEqual(cli._FieldDescValues(fdef),
1044
                     ["zname", kind, "Ztitle", "zzz doc zzz"])
1045

  
1046

  
1013 1047
if __name__ == "__main__":
1014 1048
  testutils.GanetiTestProgram()

Also available in: Unified diff