LGTM, thanks
On Wed, Apr 3, 2013 at 6:02 PM, Bernardo Dal Seno <[email protected]>wrote: > The code is more modular, and the output is YAML-compliant. QA has been > updated to reflect the new format. > > Signed-off-by: Bernardo Dal Seno <[email protected]> > --- > lib/client/gnt_node.py | 71 > ++++++++++++++++++++++++++------------------------ > qa/qa_utils.py | 18 ++----------- > 2 files changed, 39 insertions(+), 50 deletions(-) > > diff --git a/lib/client/gnt_node.py b/lib/client/gnt_node.py > index e893b5e..8fd28df 100644 > --- a/lib/client/gnt_node.py > +++ b/lib/client/gnt_node.py > @@ -1,7 +1,7 @@ > # > # > > -# Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Google Inc. > +# Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Google Inc. > # > # This program is free software; you can redistribute it and/or modify > # it under the terms of the GNU General Public License as published by > @@ -40,7 +40,6 @@ from ganeti import netutils > from ganeti import pathutils > from ganeti import ssh > from ganeti import compat > -from cStringIO import StringIO > > from ganeti import confd > from ganeti.confd import client as confd_client > @@ -517,6 +516,38 @@ def MigrateNode(opts, args): > return rcode > > > +def _FormatNodeInfo(node_info): > + """Format node information for L{cli.PrintGenericInfo()}. > + > + """ > + (name, primary_ip, secondary_ip, pinst, sinst, is_mc, drained, offline, > + master_capable, vm_capable, powered, ndparams, ndparams_custom) = > node_info > + info = [ > + ("Node name", name), > + ("primary ip", primary_ip), > + ("secondary ip", secondary_ip), > + ("master candidate", is_mc), > + ("drained", drained), > + ("offline", offline), > + ] > + if powered is not None: > + info.append(("powered", powered)) > + info.extend([ > + ("master_capable", master_capable), > + ("vm_capable", vm_capable), > + ]) > + if vm_capable: > + info.extend([ > + ("primary for instances", > + [iname for iname in utils.NiceSort(pinst)]), > + ("secondary for instances", > + [iname for iname in utils.NiceSort(sinst)]), > + ]) > + info.append(("node parameters", > + FormatParamsDictInfo(ndparams_custom, ndparams))) > + return info > + > + > def ShowNodeConfig(opts, args): > """Show node information. > > @@ -536,38 +567,10 @@ def ShowNodeConfig(opts, args): > "master_capable", "vm_capable", > "powered", > "ndparams", "custom_ndparams"], > names=args, use_locking=False) > - > - for (name, primary_ip, secondary_ip, pinst, sinst, is_mc, drained, > offline, > - master_capable, vm_capable, powered, ndparams, > - ndparams_custom) in result: > - ToStdout("Node name: %s", name) > - ToStdout(" primary ip: %s", primary_ip) > - ToStdout(" secondary ip: %s", secondary_ip) > - ToStdout(" master candidate: %s", is_mc) > - ToStdout(" drained: %s", drained) > - ToStdout(" offline: %s", offline) > - if powered is not None: > - ToStdout(" powered: %s", powered) > - ToStdout(" master_capable: %s", master_capable) > - ToStdout(" vm_capable: %s", vm_capable) > - if vm_capable: > - if pinst: > - ToStdout(" primary for instances:") > - for iname in utils.NiceSort(pinst): > - ToStdout(" - %s", iname) > - else: > - ToStdout(" primary for no instances") > - if sinst: > - ToStdout(" secondary for instances:") > - for iname in utils.NiceSort(sinst): > - ToStdout(" - %s", iname) > - else: > - ToStdout(" secondary for no instances") > - ToStdout(" node parameters:") > - buf = StringIO() > - FormatParameterDict(buf, ndparams_custom, ndparams, level=2) > - ToStdout(buf.getvalue().rstrip("\n")) > - > + PrintGenericInfo([ > + _FormatNodeInfo(node_info) > + for node_info in result > + ]) > return 0 > > > diff --git a/qa/qa_utils.py b/qa/qa_utils.py > index 7f49675..e8b49bd 100644 > --- a/qa/qa_utils.py > +++ b/qa/qa_utils.py > @@ -434,20 +434,6 @@ def BackupFile(node, path): > return result > > > -def _ResolveName(cmd, key): > - """Helper function. > - > - """ > - master = qa_config.GetMasterNode() > - > - output = GetCommandOutput(master.primary, utils.ShellQuoteArgs(cmd)) > - for line in output.splitlines(): > - (lkey, lvalue) = line.split(":", 1) > - if lkey == key: > - return lvalue.lstrip() > - raise KeyError("Key not found") > - > - > def ResolveInstanceName(instance): > """Gets the full name of an instance. > > @@ -463,8 +449,8 @@ def ResolveNodeName(node): > """Gets the full name of a node. > > """ > - return _ResolveName(["gnt-node", "info", node.primary], > - "Node name") > + info = GetObjectInfo(["gnt-node", "info", node.primary]) > + return info[0]["Node name"] > > > def GetNodeInstances(node, secondaries=False): > -- > 1.8.1.3 > >
