a >hp @s4ddlZddlmZddlmZGdddeZdS)N)quote)Clusterc@sheZdZdZdZdZdgZdZgdZdZ dZ e e d d d Z ee d d dZe dddZddZdS) saltstackzh The saltstack cluster profile is intended to be used on saltstack clusters (Salt Project). Z Saltstack)z salt-masterZ saltmasterT))Zcompoundz+Filter node list to those matching compound)globrz/Filter node list to those matching glob pattern)Zgrainrz-Filter node list to those with matching grain)minion_id_unresolvableFz\Returns the FQDN grain of each minion in the node list when the minion ID is not a hostname.)Z nodegrouprz,Filter node list to those matching nodegroup)Zpillarrz.Filter node list to those with matching pillar)Zsubnetrz#Filter node list to those in subnetFz#salt-run --out=pprint manage.status)outputreturncCs6g}t|dd}|D]\}}||q|S)N'")jsonloadsreplaceitemsextend)selfrZnodesZsalt_json_output_valuerD/usr/lib/python3.9/site-packages/sos/collector/clusters/saltstack.py_parse_manage_status(s  zsaltstack._parse_manage_status) manage_statusr cCsng}|D]\\}}|dkr:|d|d||q |D](}d|d}|||dq>q |S)NZdownzNode(s) z are status down.zsalt --out=newline_values_only z grains.get fqdnr)rZlog_warnrappendexec_primary_cmdstrip)rrZ hostnamesstatusZminionsZminionnode_cmdrrr_get_hostnames_from_grain/s  z#saltstack._get_hostnames_from_grain)r cCsX||j}|ddkr td|drJt|ddd}||S||dS)Nrrz-Node enumeration did not return usable outputrrr r ) rr Exception get_optionr r rrr)rresrrrr _get_nodes@s    zsaltstack._get_nodescCsX|jD]H}|ddkr||d}|r|jdt|d|d7_qPq|S)Nrrz tgt=z tgt_type=) option_listrrrr!)roptionoptrrr get_nodesIs  "zsaltstack.get_nodesN)__name__ __module__ __qualname____doc__Z cluster_nameZpackagesZ sos_pluginsZstrict_node_listr"Ztargetedrstrlistrdictrr!r%rrrrrs  r)r ZshlexrZsos.collector.clustersrrrrrr s