
    ~ gp                     :    S SK r S SKJr  S SKJr   " S S\5      rg)    N)quote)Clusterc                   r    \ rS rSrSrSrSrS/rSr/ SQr	Sr
S	rS
\S\4S jrS\S\4S jrS\4S jrS rSrg)	saltstack   z\
The saltstack cluster profile is intended to be used on saltstack
clusters (Salt Project).
	Saltstack)zsalt-master
saltmasterT))compound z+Filter node list to those matching compound)globr   z/Filter node list to those matching glob pattern)grainr   z-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.)	nodegroupr   z,Filter node list to those matching nodegroup)pillarr   z.Filter node list to those with matching pillar)subnetr   z#Filter node list to those in subnetFz#salt-run --out=pprint manage.statusoutputreturnc                     / n[         R                  " UR                  SS5      5      nUR                  5        H  u  pEUR	                  U5        M     U$ )N'")jsonloadsreplaceitemsextend)selfr   nodessalt_json_output_values         B/usr/lib/python3/dist-packages/sos/collector/clusters/saltstack.py_parse_manage_statussaltstack._parse_manage_status(   sG    ::fnnS#&>?(..0HALL 1    manage_statusc                    / nUR                  5        Hs  u  p4US:X  a(  U R                  SU S35        UR                  U5        M3  U H:  nSU S3nUR                  U R	                  U5      S   R                  5       5        M<     Mu     U$ )NdownzNode(s) z are status down.zsalt --out=newline_values_only z grains.get fqdnr   )r   log_warnr   appendexec_primary_cmdstrip)r   r%   	hostnamesstatusminionsminionnode_cmds          r!   _get_hostnames_from_grain#saltstack._get_hostnames_from_grain/   s    	,224OF	1BCD  )%F9& B* +  $$--h7AGGI &  5 r$   c                 (   U R                  U R                  5      nUS   S:w  a  [        S5      eU R                  S5      (       a:  [        R
                  " US   R                  SS5      5      nU R                  U5      $ U R                  US   5      $ )Nr-   r   z-Node enumeration did not return usable outputr   r   r   r   )	r*   r0   	Exception
get_optionr   r   r   r1   r"   )r   resr-   s      r!   
_get_nodessaltstack._get_nodes@   s    ##DMM2x=AKLL??344ZZH 5 5c3 ?@F11&99((X77r$   c                    U R                    Ha  nUS   S:w  d  M  U R                  US   5      nU(       d  M+  U =R                  S[        U5       SUS    3-  sl          U R	                  5       $    U R	                  5       $ )Nr   r   z tgt=z
 tgt_type=)option_listr5   r0   r   r7   )r   optionopts      r!   	get_nodessaltstack.get_nodesI   sx    &&Fay44oofQi03MMuU3ZL
6!9+%NNM   '   r$    N)__name__
__module____qualname____firstlineno____doc__cluster_namepackagessos_pluginsstrict_node_listr:   targetedr0   strlistr"   dictr1   r7   r=   __static_attributes__r?   r$   r!   r   r      sj    
 LH.K	K H4H3 4 t  "8D 8!r$   r   )r   shlexr   sos.collector.clustersr   r   r?   r$   r!   <module>rP      s      *A! A!r$   