+def _FormatGroupInfo(group):
+ (name, ndparams, custom_ndparams, diskparams, custom_diskparams,
+ ipolicy, custom_ipolicy) = group
+ return [
+ ("Node group", name),
+ ("Node parameters", FormatParamsDictInfo(custom_ndparams, ndparams)),
+ ("Disk parameters", FormatParamsDictInfo(custom_diskparams, diskparams)),
+ ("Instance policy", FormatPolicyInfo(custom_ipolicy, ipolicy, False)),
+ ]
+
+
+def GroupInfo(_, args):
+ """Shows info about node group.
+
+ """
+ cl = GetClient(query=True)
+ selected_fields = ["name",
+ "ndparams", "custom_ndparams",
+ "diskparams", "custom_diskparams",
+ "ipolicy", "custom_ipolicy"]
+ result = cl.QueryGroups(names=args, fields=selected_fields,
+ use_locking=False)
+
+ PrintGenericInfo([
+ _FormatGroupInfo(group) for group in result
+ ])
+
+
+def _GetCreateCommand(group):
+ (name, ipolicy) = group
+ buf = StringIO()
+ buf.write("gnt-group add")
+ PrintIPolicyCommand(buf, ipolicy, True)
+ buf.write(" ")
+ buf.write(name)
+ return buf.getvalue()
+
+
+def ShowCreateCommand(opts, args):
+ """Shows the command that can be used to re-create a node group.
+
+ Currently it works only for ipolicy specs.
+
+ """
+ cl = GetClient(query=True)
+ selected_fields = ["name"]
+ if opts.include_defaults:
+ selected_fields += ["ipolicy"]
+ else:
+ selected_fields += ["custom_ipolicy"]
+ result = cl.QueryGroups(names=args, fields=selected_fields,
+ use_locking=False)
+
+ for group in result:
+ ToStdout(_GetCreateCommand(group))
+
+