("names", _EmptyList, _TListOf(_TNonEmptyString)),
]
REQ_BGL = False
+ _HID = "hidden"
+ _BLK = "blacklisted"
_FIELDS_STATIC = utils.FieldSet()
_FIELDS_DYNAMIC = utils.FieldSet("name", "valid", "node_status", "variants",
- "parameters", "api_versions")
+ "parameters", "api_versions", _HID, _BLK)
def CheckArguments(self):
if self.op.names:
node_data = self.rpc.call_os_diagnose(valid_nodes)
pol = self._DiagnoseByOS(node_data)
output = []
+ cluster = self.cfg.GetClusterInfo()
for os_name, os_data in pol.items():
row = []
params.intersection_update(node_params)
api_versions.intersection_update(node_api)
+ is_hid = os_name in cluster.hidden_oss
+ is_blk = os_name in cluster.blacklisted_oss
+ if ((self._HID not in self.op.output_fields and is_hid) or
+ (self._BLK not in self.op.output_fields and is_blk)):
+ continue
+
for field in self.op.output_fields:
if field == "name":
val = os_name
val = list(params)
elif field == "api_versions":
val = list(api_versions)
+ elif field == self._HID:
+ val = is_hid
+ elif field == self._BLK:
+ val = is_blk
else:
raise errors.ParameterError(field)
row.append(val)
<!-- Fill in your name for FIRSTNAME and SURNAME. -->
<!-- Please adjust the date whenever revising the manpage. -->
- <!ENTITY dhdate "<date>June 08, 2010</date>">
+ <!ENTITY dhdate "<date>September 20, 2010</date>">
<!-- SECTION should be 1-8, maybe w/ subsection other parameters are
allowed: see man(7), man(1). -->
<!ENTITY dhsection "<manvolnum>8</manvolnum>">
as an option.
</para>
+ <para>
+ Note that hidden or blacklisted OSes are not displayed by this
+ command, use <command>diagnose</command> for showing those.
+ </para>
+
<cmdsynopsis>
<command>diagnose</command>
</cmdsynopsis>
"""
op = opcodes.OpDiagnoseOS(output_fields=["name", "valid", "variants",
- "parameters", "api_versions"],
+ "parameters", "api_versions",
+ "blacklisted", "hidden"],
names=[])
result = SubmitOpCode(op, opts=opts)
do_filter = bool(args)
- for (name, valid, variants, parameters, api_versions) in result:
+ for (name, valid, variants, parameters, api_versions, blk, hid) in result:
if do_filter:
if name not in args:
continue
args.remove(name)
ToStdout("%s:", name)
ToStdout(" - valid: %s", valid)
+ ToStdout(" - hidden: %s", hid)
+ ToStdout(" - blacklisted: %s", blk)
if valid:
ToStdout(" - API versions:")
for version in sorted(api_versions):
"""
op = opcodes.OpDiagnoseOS(output_fields=["name", "valid", "variants",
- "node_status"], names=[])
+ "node_status", "hidden",
+ "blacklisted"], names=[])
result = SubmitOpCode(op, opts=opts)
if not result:
has_bad = False
- for os_name, _, os_variants, node_data in result:
+ for os_name, _, os_variants, node_data, hid, blk in result:
nodes_valid = {}
nodes_bad = {}
nodes_hidden = {}
else:
max_os_api = 0
fo_msg += " [no API versions declared]"
+
if max_os_api >= constants.OS_API_V15:
if fo_variants:
fo_msg += " [variants: %s]" % utils.CommaJoin(fo_variants)
for msg in nodes_hidden[node_name]:
ToStdout(msg)
- ToStdout("OS: %s [global status: %s]", os_name, status)
+ st_msg = "OS: %s [global status: %s]" % (os_name, status)
+ if hid:
+ st_msg += " [hidden]"
+ if blk:
+ st_msg += " [blacklisted]"
+ ToStdout(st_msg)
if os_variants:
ToStdout(" Variants: [%s]" % utils.CommaJoin(os_variants))
_OutputPerNodeOSStatus(nodes_valid)