o
    id                      @   sd   d dl mZmZmZmZ d dlmZ d dlZG dd deZG dd deeZ	G dd	 d	eeZ
dS )
    )PluginRedHatPluginUbuntuPlugin	PluginOpt)	translateNc                	   @   sj   e Zd ZdZdZdZeddddeddd	ded
dddeddeddgZdZ	dd Z
dd Zdd ZdS )
Kubernetesz+Kubernetes container orchestration platform
kubernetes)	containerallFz'collect all namespace output separately)defaultdescdescribez(collect describe output of all resourcespodlogsz$capture stdout/stderr logs from podspodlogs-filter z1only collect logs from pods matching this pattern)r   val_typer   kubectlc                    s   t  fdd jD S )Nc                    s   g | ]}  |qS  )path_exists).0fselfr   ?/usr/lib/python3/dist-packages/sos/report/plugins/kubernetes.py
<listcomp>&   s    z.Kubernetes.check_is_master.<locals>.<listcomp>)anyfilesr   r   r   r   check_is_master%   s   zKubernetes.check_is_masterc                    s8    d   d  g d g d}|D ]} j|d q  s&d S d}dD ]} d j|f  q* d	 j }|d
  dd  }dd |D }g d}g d}	  fdd|	D   d j }
|
d dkr|
d
  dd  D ]}| }|sq||d } jd j|f dd q| d j   	dr|
ddg  d |D ]}d| } drd j||f } d|  |D ]} jd||f |d q͈ d r%d j|f }|D ]:} d!||f }|d dkr$d"d |d
  dd  D }|D ]}d j|f } jd#|||f |d qq d$r{d j|f } d%| }|d dkr{d&d |d
  dd  D } d'r\t d'nd }|D ]}|rnt||snq` jd(||f d)d q`q dsd* j }|D ]} jd||f |d qd S d S )+Nz/etc/kubernetesz/run/flannel)
KUBECONFIGKUBERNETES_HTTP_PROXYKUBERNETES_HTTPS_PROXYKUBERNETES_NO_PROXY)
kubeletzkube-apiserverz
kube-proxyzkube-schedulerzkube-controller-managerzsnap.kubelet.daemonzsnap.kube-apiserver.daemonzsnap.kube-proxy.daemonzsnap.kube-scheduler.daemonz#snap.kube-controller-manager.daemonunitszget -o json )versionzconfig viewz%s %sz%s get namespacesoutput   c                 S   s(   g | ]}|rt | r| d  qS r   )lensplit)r   nr   r   r   r   O   s   ( z$Kubernetes.setup.<locals>.<listcomp>)
deployments	ingresseslimitrangespodspoliciespvcrcresourcequotasroutesservices)
namespacesprojectspvsc                    s   g | ]	}d  j |f qS )	%s get %s)kube_cmd)r   resr   r   r   r   d   s    z%s get nodesstatusr   z%s describe node %snodes)subdirz%s get --raw /metricszkubevirt-virtctlvmsvmiszvirtctl versionz--namespace=%sr
   z%s %s %sz	%s eventsr   r9   c                 S      g | ]}|  d  qS r(   r*   )r   kr   r   r   r          z%s describe %s %sr   z%s get podsc                 S   rA   r(   rB   )r   pr   r   r   r      rD   r   z
%s logs %sr/   z%s get --all-namespaces=true)add_copy_specadd_env_varadd_journalr   add_cmd_outputr:   collect_cmd_output
splitlinesr*   is_installedextend
get_optionexec_cmdr   rematch)r   svcssvckube_get_cmdsubcmdkn	kn_outputknsps	resourcesglobal_resourcesr=   linewordsnoder+   knspk_cmdr;   rk_listrC   r/   regpodr   r   r   setup(   s   







zKubernetes.setupc                 C   s    d}|  d|d | d d S )NzX(?P<var>{\s*"name":\s*[^,]*(pass|pwd|key|token|cred|PASS|PWD|KEY)[^,]*,\s*"value":)[^}]*r   z\g<var> "********")do_cmd_output_subdo_cmd_private_sub)r   
env_regexpr   r   r   postproc   s
   zKubernetes.postprocN)__name__
__module____qualname__
short_descplugin_nameprofilesr   stroption_listr:   r   rd   rh   r   r   r   r   r      s,     r   c                       (   e Zd ZdZdZdZ fddZ  ZS )RedHatKubernetes)r   zkubernetes-masterzatomic-openshift-master)#/etc/origin/master/admin.kubeconfigz(/etc/origin/node/pods/master-config.yamlr   c                    s"   |  drd| _tt|   d S )Nrs   oc)r   r:   superrr   rd   r   	__class__r   r   rd      s   
zRedHatKubernetes.setup)ri   rj   rk   packagesr   r:   rd   __classcell__r   r   rv   r   rr      s
    rr   c                       rq   )UbuntuKubernetes)r   )z#/root/cdk/cdk_addons_kubectl_configz/etc/kubernetes/admin.conf)zcdk.master.auth-webhookc                    sV   | j D ]}| |r|  jd| 7  _ nq| jD ]}| j|d qtt|   d S )Nz --kubeconfig=%sr#   )r   r   r:   r5   rH   ru   rz   rd   )r   _kconfrS   rv   r   r   rd      s   


zUbuntuKubernetes.setup)ri   rj   rk   rx   r   r5   rd   ry   r   r   rv   r   rz      s
    rz   )sos.report.pluginsr   r   r   r   fnmatchr   rP   r   rr   rz   r   r   r   r   <module>   s    *