
    ~ g                     @    S SK r S SKrS SKJrJrJr   " S S\\5      rg)    N)PluginUbuntuPlugin	PluginOptc            
       x    \ rS rSrSrSrSrSrSr\	" SS\
S	S
9\	" SS\SS
9\	" SS\SS
9\	" SS\SS
9/rS rS rSrg)Juju   a  The Juju plugin is aimed at collecting Juju-related logs,
configurations, and controller/model state(s).

Logs and agent configuration information (/var/log/juju and /var/lib/juju)
is collected by default since these are useful for troubleshooting.

The Juju state collection is disabled by default and can be enabled with
the 'juju-state' option. Collecting Juju state is safe in theory, but it
does act on the live controller(s)/model(s) and is therefore optional.

The default Juju state collection collects all controllers and models that
the 'juju-user' (default=ubuntu) has access to.

Specific controllers or models can be collected using the 'controllers'
and 'models' options.

Important: the string list is whitespace delimited, not colon delimited
(sos plugin standard). This is due to the underlying Juju CLI accepting
specific models in the format 'controller:model' and whitespaces are not
allowed in either controller and model names.

Example: models="controller_a:model_x controller_b:model_y"
zJuju orchestration tooljuju)virtsysmgmt)/var/log/juju
juju-stateFz Include Juju state in the report)defaultval_typedesc	juju-userubuntuzJuju client user.controllers z[Collect Juju state for specified controllers. Uses a             whitespace delimited list.modelszVCollect Juju state for specified models. Uses a whitespace             delimited list.c                 n   U R                  S5       H%  nU R                  U5        U R                  U5        M'     U R                  / SQ5        U R	                  S5        U R                  SS/SS9  U R                  S5      (       a6  U R	                  / S	Q5        U R                  S
5        U R                  S5        OU R	                  S5        U R                  S5      (       d  g U R                  S5      n [        R                  " U5        U R                  S5      (       a(  U R                  S5      (       a  U R                  S5        g U R                  SUS9nUS   S:X  an  [        U R                  S5      R                  S5      5      nU(       a
  US1:w  a  UnO6[        [        R                   " US   5      S   R#                  5       5      nO0 nU R                  S5      (       a=  U R                  S5      R                  S5       H  nSU S3nU R                  XrS9  M     g U Hd  nU R%                  SU S3US9n	U	S   S:X  d  M"  [        R                   " U	S   5      S   n
U
 H   nUS   nSU SU S3nU R                  XrS9  M"     Mf     g ! [         a    U R                  SU S35         g f = f) Nzjuju*)
juju_engine_reportjuju_goroutinesjuju_heap_profilejuju_leasesjuju_metricsjuju_pubsub_reportjuju_presence_reportjuju_statepool_reportjuju_statetracker_reportjuju_unit_statusz!/var/lib/juju/agents/*/agent.confz/var/log/juju*z/var/lib/juju*T)	recursiveall_logs)r   z/var/lib/jujuz/var/lib/juju/**/.*z/var/lib/juju/kvmz/var/lib/juju/toolsz/var/log/juju/*.logr   r   zUser "z4" does not exist, will not collect Juju information.r   r   zWOptions: controllers, models are mutually exclusive. Will not collect Juju information.zjuju controllers --format=json)runasstatusr    r   outputzjuju status -m z --format=jsonzjuju models --all -c z
short-name:)get_service_namesadd_journaladd_service_statusadd_cmd_outputadd_copy_specadd_dir_listing
get_optionadd_forbidden_pathpwdgetpwnamKeyError	_log_warncollect_cmd_outputsetsplitjsonloadskeysexec_cmd)selfservice	juju_usercontrollers_jsondesired_controllersr   modelcommand
controllermodels_jsonr   
short_names               9/usr/lib/python3/dist-packages/sos/report/plugins/juju.pysetup
Juju.setupO   s    --g6GW%##G, 7 	 
 	 	>? 	
  	 	
 ??:&&    
 ##$78##$9: 45 |,,OOK0		LL# ??=))dooh.G.GNN5 22,I 3 
 H%*"%.44S9#
 #':rd'B1!JJ/9:%df K ??8$$288=+E7.A##G#= > *
"mm+J<~F# ,  x(A-!ZZH(=>xHF!'%*<%8
-j\:, G, -   ++G+E "( *W  	NN $5 5 	s   7J J43J4c                     Sn/ SQnSSR                  U5       S3nSnU R                  XU5        U R                  U5        U R                  S5        g )Nz/var/lib/juju/agents/*)sharedsecretapipasswordoldpasswordstatepasswordz(^\s*(|z)\s*:\s*)(.*)z\1*********zjuju controllers)joindo_path_regex_subdo_file_private_subdo_cmd_private_sub)r;   agents_pathprotect_keys
keys_regex	sub_regexs        rE   postprocJuju.postproc   sZ    .
 sxx56mD
"	{	B  - 23     N)__name__
__module____qualname____firstlineno____doc__
short_descplugin_nameprofilesfilesr   boolstroption_listrF   rV   __static_attributes__rY   rX   rE   r   r      s    0 +JK#H E 	3		
 	$		
 	(		
 			
)K:lF\4rX   r   )r0   r7   sos.report.pluginsr   r   r   r   rY   rX   rE   <module>rh      s#      > >|46< |4rX   