X-Git-Url: https://code.grnet.gr/git/ganeti-local/blobdiff_plain/45f8b50dd2b0a0e26bd1a3d07e96d7f9e81e4798..cf572b1378a61db132d84a5e03b0e5a157848caa:/lib/client/gnt_cluster.py diff --git a/lib/client/gnt_cluster.py b/lib/client/gnt_cluster.py index d1ecbd5..2fa42cd 100644 --- a/lib/client/gnt_cluster.py +++ b/lib/client/gnt_cluster.py @@ -52,6 +52,10 @@ GROUPS_OPT = cli_option("--groups", default=False, action="store_true", dest="groups", help="Arguments are node groups instead of nodes") +SHOW_MACHINE_OPT = cli_option("-M", "--show-machine-names", default=False, + action="store_true", + help="Show machine name for every line in output") + _EPO_PING_INTERVAL = 30 # 30 seconds between pings _EPO_PING_TIMEOUT = 1 # 1 second _EPO_REACHABLE_TIMEOUT = 15 * 60 # 15 minutes @@ -139,15 +143,16 @@ def InitCluster(opts, args): utils.ForceDictType(diskparams[templ], constants.DISK_DT_TYPES) # prepare ipolicy dict + ispecs_dts = opts.ipolicy_disk_templates # hate long var names ipolicy_raw = \ objects.CreateIPolicyFromOpts(ispecs_mem_size=opts.ispecs_mem_size, ispecs_cpu_count=opts.ispecs_cpu_count, ispecs_disk_count=opts.ispecs_disk_count, ispecs_disk_size=opts.ispecs_disk_size, - ispecs_nic_count=opts.ispecs_nic_count) - ipolicy = objects.FillDictOfDicts(constants.IPOLICY_DEFAULTS, ipolicy_raw) - for value in ipolicy.values(): - utils.ForceDictType(value, constants.ISPECS_PARAMETER_TYPES) + ispecs_nic_count=opts.ispecs_nic_count, + ipolicy_disk_templates=ispecs_dts, + fill_all=True) + ipolicy = objects.FillIPolicy(constants.IPOLICY_DEFAULTS, ipolicy_raw) if opts.candidate_pool_size is None: opts.candidate_pool_size = constants.MASTER_POOL_SIZE_DEFAULT @@ -461,6 +466,8 @@ def ShowClusterConfig(opts, args): for key in constants.IPOLICY_PARAMETERS: ToStdout(" - %s", key) _PrintGroupedParams(result["ipolicy"][key], roman=opts.roman_integers) + ToStdout(" - enabled disk templates: %s", + utils.CommaJoin(result["ipolicy"][constants.IPOLICY_DTS])) return 0 @@ -526,8 +533,12 @@ def RunClusterCommand(opts, args): for name in nodes: result = srun.Run(name, "root", command) ToStdout("------------------------------------------------") - ToStdout("node: %s", name) - ToStdout("%s", result.output) + if opts.show_machine_names: + for line in result.output.splitlines(): + ToStdout("%s: %s", name, line) + else: + ToStdout("node: %s", name) + ToStdout("%s", result.output) ToStdout("return code = %s", result.exit_code) return 0 @@ -984,12 +995,14 @@ def SetClusterParams(opts, args): if ndparams is not None: utils.ForceDictType(ndparams, constants.NDS_PARAMETER_TYPES) + ispecs_dts = opts.ipolicy_disk_templates ipolicy = \ objects.CreateIPolicyFromOpts(ispecs_mem_size=opts.ispecs_mem_size, ispecs_cpu_count=opts.ispecs_cpu_count, ispecs_disk_count=opts.ispecs_disk_count, ispecs_disk_size=opts.ispecs_disk_size, - ispecs_nic_count=opts.ispecs_nic_count) + ispecs_nic_count=opts.ispecs_nic_count, + ipolicy_disk_templates=ispecs_dts) mnh = opts.maintain_node_health @@ -1495,7 +1508,7 @@ commands = { "[-n node...] ", "Copies a file to all (or only some) nodes"), "command": ( RunClusterCommand, [ArgCommand(min=1)], - [NODE_LIST_OPT, NODEGROUP_OPT], + [NODE_LIST_OPT, NODEGROUP_OPT, SHOW_MACHINE_OPT], "[-n node...] ", "Runs a command on all (or only some) nodes"), "info": ( ShowClusterConfig, ARGS_NONE, [ROMAN_OPT],