
    ~ g1                         S SK Jr  S SKrS SKrS SKrS SKJrJrJrJ	r	J
r
  SrSrSr " S S\5      r " S	 S
\\5      r " S S\\	\5      rg)    )	translateN)PluginRedHatPluginDebianPluginUbuntuPlugin	PluginOpt)kubelet
kubernetes)r	   zkube-apiserverz
kube-proxyzkube-schedulerzkube-controller-manager)z/etc/kubernetes/admin.confc                       \ rS rSrSrSrSrSr/ SQrS/r	/ SQr
/ S	Qr/ S
Qr\" SSSS9\" 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S rS rS rS rS  rS!rg")#
Kubernetes&   z+Kubernetes container orchestration platformr
   )	containeri  )z/etc/kubernetesz/run/flannelz/var/lib/kubelet/config.yamlz"/var/lib/kubelet/kubeadm-flags.envz /var/lib/kubelet/*_manager_statez/etc/kubernetes/pki)z /var/log/pods/kube-system_etcd-*z*/var/log/pods/kube-system_kube-apiserver-*z3/var/log/pods/kube-system_kube-controller-manager-*z*/var/log/pods/kube-system_kube-scheduler-*)eventsdeployments	ingressespodspvcservices
daemonsetsreplicasets	endpointsstatefulsets
configmapsserviceaccountssecretsjobscronjobsclusterrolesclusterrolebindingslimitrangesresourcequotas)scpvrolesrolebindingsallFz'collect all namespace output separately)defaultdescdescribez(collect describe output of all resourceskubelogsz4copy some kube-system pod logs without using the APIpodlogsz2capture stdout/stderr logs from pods using the APIpodlogs-filter z1only collect logs from pods matching this pattern)r'   val_typer(   kubectlc                     [         R                  R                  S5      (       a  g U R                   H3  nU R	                  U5      (       d  M  U =R
                  SU 3-  sl          g    g )N
KUBECONFIGz --kubeconfig=)osenvirongetfilespath_existskube_cmd)self_kconfs     ?/usr/lib/python3/dist-packages/sos/report/plugins/kubernetes.pyset_kubeconfigKubernetes.set_kubeconfigk   sO    ::>>,''jjF''>&!:: !    c                 B   ^  [        U 4S jT R                   5       5      $ )z!Check if this is the master node c              3   F   >#    U  H  nTR                  U5      v   M     g 7fN)r6   ).0fr8   s     r:   	<genexpr>-Kubernetes.check_is_master.<locals>.<genexpr>u   s     ;
14##A&&
s   !)anyr5   )r8   s   `r:   check_is_masterKubernetes.check_is_masters   s    ;

;;;r=   c                    U R                  U R                  5        U R                  U R                  5        U R	                  S5      (       a  U R                  U R
                  5        U R                  / SQ5        U R                  5       (       d  g S H"  nU R                  U R                   SU 3SS9  M$     U R	                  S5      (       a;  U R                  U R                   Vs/ s H  nU R                   SU 3PM     snSS9  O:U R                  U R                   Vs/ s H  nU R                   S	U 3PM     snSS9  U R                  U R                   S
3SS9nUS   S:X  ap  U R	                  S5      (       aZ  US   R                  5       SS   H@  nUR                  5       nU(       d  M  US   nU R                  U R                   SU 3SS9  MB     U R                  U R                   S3/SS9  U R                  U R                   S3SS9  U R                  S5      (       a.  U R                  R!                  SS/5        U R                  S5        U R#                  5         U R%                  5         g s  snf s  snf )Nr*   )r1   KUBERNETES_HTTP_PROXYKUBERNETES_HTTPS_PROXYKUBERNETES_NO_PROXY)versionzconfig view cluster-infosubdirr&    get -o json  get z
 get nodesstatusr   r)   output   z describe node z get -o json nodesz get --raw /metricszkubevirt-virtctlvmsvmiszvirtctl version)add_copy_specconfig_filesadd_forbidden_pathforbidden_paths
get_optionkube_system_logsadd_env_varrF   add_cmd_outputr7   global_resourcescollect_cmd_output
splitlinessplitis_installed	resourcesextendcollect_per_resource_detailscollect_all_resources)r8   subcmdresnodeslinewordsnodes          r:   setupKubernetes.setupw   s   4,,- 4 45??:&&t445 
 	 ##%%0F==/6(+%    1 ??5!!00!0C ==/se40! %   &
 00!0C ==/se,0! %   & ''4==/(D/= ( ??aDOOJ$?$?h224QR8

Qx##}}o_TF;) $  9 	}}o/0
  	 	"
 	}}o01! 	 	
 /00NN!!5&/2 12))+""$S!
!s   (I:#I?c           
         U R                  U R                   S3SS9nUS   R                  5       SS nU Vs/ s H>  o3(       d  M  [        UR	                  5       5      (       d  M+  UR	                  5       S   PM@     nnU GHV  nSU 3nU R                  S	5      (       a<  U R                   S
U 3nU R                   H  nU R                  U SU 3SU 3S9  M     U R                  S5      (       a  U R                   SU 3nU R                   H  nUS:X  a  M  U R                  U SU 35      n	U	S   S:X  d  M,  U	S   R                  5       SS  V
s/ s H  oR	                  5       S   PM     nn
U H2  nU R                   SU 3nU R                  U SU SU 3SU SU 3S9  M4     M     U R                  S5      (       d  GME  U R                  U5        GMY     gs  snf s  sn
f )z6Collect details about each resource in all namespaces z get namespacesrN   rO   rT   rU   Nr   z--namespace=r&   rQ   rM   cluster-info/r)   r   rR   rS   z
 describe /r+   )
ra   r7   rb   lenrc   r\   re   r_   exec_cmd_get_pod_logs)r8   kns	kn_outputnknspsnspaceknspk_cmdrj   retkk_listitems                r:   rg   'Kubernetes.collect_per_resource_details   s    %%&G-; & = M,,.qr2	'0Iy!A#aggi.1yIF!&*Du%%==/tf=>>C'' '3%(!.vh7 (  * z**==/4&1>>Ch --5'se(<=C8})"%h-":":"<QR"@"B"@ 45'')A,"@  "B$*D'+}}oQtf$=E //#('C5$ @)6vhau'E 0  %+ * y))""4(;  J*"Bs   
GG&GG"c                    U R                    SU 3nU R                  U S35      nUS   S:X  Ga,  [        R                  " US   5      nU R	                  S5      (       a  [        U R	                  S5      5      OS nUS    H  nU(       a#  [        R                  " XVS   S	   5      (       d  M-  S
US   S    SUS   S	    3nSUS   ;   aA  US   S    H5  nUS   S	   n	US	   n
U R                  U R                    SU SU	 SU
 3US9  M7     SUS   ;   d  M  US   S    H5  nUS   S	   n	US	   n
U R                  U R                    SU SU	 SU
 3US9  M7     M     g g )NrQ   z podsrS   r   rT   r,   itemsmetadatanamerr   	namespacez	/podlogs/
containersspecrM   z logs z -c rO   initContainers)	r7   ru   jsonloadsr\   r   rematchr_   )r8   r   r}   r~   r   regpod_subdircontpod_name	cont_names              r:   rv   Kubernetes._get_pod_logs   s   ==/yk:mmugUO,x=A::c(m,D ??#344 T__-=>?:> G}rxx_V-DEE*!*ok:;9!*of568  3v;. #FL 9#&z?6#:$(L	++#}}oQyk'jYK9#* ,  !: $s6{2 #F,< =#&z?6#:$(L	++#}}oQyk'jYK9#* ,  !>! % r=   c                     U R                  S5      (       d8  U R                   S3nU R                   H  nU R                  U SU 3SS9  M     gg)z$Collect details about all resources r&   z get --all-namespaces=truerM   rN   rO   N)r\   r7   re   r_   )r8   r}   rj   s      r:   rh    Kubernetes.collect_all_resources  sY    u%%}}o%?@E~~##gQse$) $  & &r=   c                 n   SnU R                  U R                  US5        U R                  U R                  5        SSR                  U R                  5       S3nU R                  U5        SnSnSSR                  [        U R                  5      U R                  -   5       S3nU R                  X#U5        g )NzX(?P<var>{\s*"name":\s*[^,]*(pass|pwd|key|token|cred|PASS|PWD|KEY)[^,]*,\s*"value":)[^}]*z\g<var> "********"z^(|)zLS0tLS1CRUdJ[A-Za-z0-9+/=]+z***** SCRUBBED BASE64 PEM *****)	do_cmd_output_subr7   do_cmd_private_subjoinrY   do_file_private_sublistr5   do_path_regex_sub)r8   
env_regexppathexpregexpsubsts        r:   postprocKubernetes.postproc  s    
M
t}}j4	6
 	.!2!234A6  ) 01djj!1$2C2C!CDEQGw6r=    N)__name__
__module____qualname____firstlineno__
short_descplugin_nameprofilesplugin_timeoutrY   r[   r]   re   r`   r   stroption_listr7   r;   rF   ro   rg   rv   rh   r   __static_attributes__r   r=   r:   r   r   &   s    >JKHNL 	OI. 	%@	B*eA	C*eM	O)UK	M"BJ	LK H<C%J&)PB7r=   r   c                   @   ^  \ rS rSr\r\r\r	U 4S jr
U 4S jrSrU =r$ )RedHatKubernetesi'  c                 N   > U R                  S5      (       a  g[        TU ]	  5       $ )Nzopenshift-hyperkubeF)rd   supercheck_enabledr8   	__class__s    r:   r   RedHatKubernetes.check_enabled/  s&    233w$&&r=   c                 B   > U R                  5         [        TU ]	  5         g r@   )r;   r   ro   r   s    r:   ro   RedHatKubernetes.setup5  s    r=   r   )r   r   r   r   KUBE_PACKAGESpackagesKUBECONFIGSr5   	KUBE_SVCSr   r   ro   r   __classcell__r   s   @r:   r   r   '  s!    HEH' r=   r   c                   X   ^  \ rS rSr\S-   r\S-   r\S-   r	U 4S jr
S rU 4S jrSrU =r$ )	UbuntuKubernetesi:  )k8s)z#/root/cdk/cdk_addons_kubectl_configz4/var/snap/microk8s/current/credentials/client.config)zsnap.kubelet.daemonzsnap.kube-apiserver.daemonzsnap.kube-proxy.daemonzsnap.kube-scheduler.daemonz#snap.kube-controller-manager.daemonzcdk.master.auth-webhookc                   > U R                  5         U R                  S5      (       a  SU l        O-U R                  S5      (       a  SU l        U R                  5         U R                  R                  SS/5        [        TU ]  5         g )Nmicrok8szmicrok8s kubectlr   zk8s kubectlz/root/cdk/kubelet/config.yamlz!/root/cdk/audit/audit-policy.yaml)r;   rd   r7   _canonical_kubernetesrY   rf   r   ro   r   s    r:   ro   UbuntuKubernetes.setupO  su    Z((.DMu%%)DM&&(  +/"
 	 	r=   c           
          U R                  SS9  SnSnSS/nU R                  U S3U S3U S	3U S
3U S3U S3U S3/5        U R                  U Vs/ s H	  oA SU 3PM     sn5        g s  snf )Nz
snap.k8s.*)unitsr   z/var/snap/k8s/commonrS   r4   z/argsz/var/lib/k8s-dqlite/info.yamlz /var/lib/k8s-dqlite/cluster.yamlz'/var/lib/k8sd/state/truststore/k8s.yamlz&/var/lib/k8sd/state/database/info.yamlz)/var/lib/k8sd/state/database/cluster.yamlz/var/lib/k8sd/state/daemon.yamlrM   )add_journalrX   r_   )r8   k8s_cmd
k8s_commonk8s_subcmdsri   s        r:   r   &UbuntuKubernetes._canonical_kubernetes^  s    |,+
 

 	l% l78l:;lABl@AlCDl9:
 	 	0;
0;fiq!
 	 
s   A,c                 D   > [         TU ]  5         U R                  S5        g )Nz;/var/snap/k8s/common/var/lib/k8sd/state/truststore/k8s.yaml)r   r   r   r   s    r:   r   UbuntuKubernetes.postprocw  s       I	Kr=   )r7   )r   r   r   r   r   r   r   r5   r   r   ro   r   r   r   r   r   s   @r:   r   r   :  sJ       H   E
   H2K Kr=   r   )fnmatchr   r   r   r2   sos.report.pluginsr   r   r   r   r   r   r   r   r   r   r   r   r=   r:   <module>r      sc     	  	9 9
	
~7 ~7Bz< &AKz< AKr=   