Current File : //usr/lib/python3/dist-packages/sos/report/plugins/__pycache__/kubernetes.cpython-312.pyc
�

-�_g�1���ddlmZddlZddlZddlZddlmZmZmZm	Z	m
Z
dZdZdZ
Gd�de�ZGd	�d
ee�ZGd�dee	e�Zy)
�)�	translateN)�Plugin�RedHatPlugin�DebianPlugin�UbuntuPlugin�	PluginOpt)�kubelet�
kubernetes)r	zkube-apiserverz
kube-proxyzkube-schedulerzkube-controller-manager)z/etc/kubernetes/admin.confc
���eZdZdZdZdZdZgd�ZdgZgd�Z	gd�Z
gd	�Zed
dd�
�eddd�
�eddd�
�eddd�
�edde
d��gZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Zy )!�
Kubernetesz+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��tjjd�ry|jD]-}|j	|�s�|xj
d|��z
c_yy)N�
KUBECONFIGz --kubeconfig=)�os�environ�get�files�path_exists�kube_cmd)�self�_kconfs  �?/usr/lib/python3/dist-packages/sos/report/plugins/kubernetes.py�set_kubeconfigzKubernetes.set_kubeconfigksN��
�:�:�>�>�,�'���j�j�	�F�����'��
�
�>�&��!:�:�
��	�c�@��t�fd��jD��S)z" Check if this is the master node c3�@�K�|]}�j|����y�w�N)r5)�.0�fr7s  �r9�	<genexpr>z-Kubernetes.check_is_master.<locals>.<genexpr>us�����;�1�4�#�#�A�&�;�s�)�anyr4)r7s`r9�check_is_masterzKubernetes.check_is_masterss����;��
�
�;�;�;r;c���|j|j�|j|j�|j	d�r|j|j
�|j
gd��|j�sydD]$}|j|j�d|��d���&|j	d�r;|j|jD�cgc]}|j�d|����c}d��n:|j|jD�cgc]}|j�d	|����c}d��|j|j�d
�d��}|ddk(rf|j	d
�rU|dj�ddD]<}|j�}|s�|d}|j|j�d|��d���>|j|j�d�gd��|j|j�d�d��|jd�r.|jj!ddg�|jd�|j#�|j%�ycc}wcc}w)Nr))r0�KUBERNETES_HTTP_PROXY�KUBERNETES_HTTPS_PROXY�KUBERNETES_NO_PROXY)�versionzconfig view� �cluster-info��subdirr%�
 get -o json � get z
 get nodes�statusrr(�output�z describe node z get -o json nodesz get --raw /metricszkubevirt-virtctl�vms�vmiszvirtctl version)�
add_copy_spec�config_files�add_forbidden_path�forbidden_paths�
get_option�kube_system_logs�add_env_varrC�add_cmd_outputr6�global_resources�collect_cmd_output�
splitlines�split�is_installed�	resources�extend�collect_per_resource_details�collect_all_resources)r7�subcmd�res�nodes�line�words�nodes       r9�setupzKubernetes.setupws������4�,�,�-����� 4� 4�5��?�?�:�&����t�4�4�5����
�	��#�#�%��0�	�F�����=�=�/��6�(�+�%�
 �
�	��?�?�5�!�����0�0�!���=�=�/��s�e�4�!�%�
 �
&�

����0�0�!���=�=�/��s�e�,�!�%�
 �
&��'�'�4�=�=�/��(D�/=�(�?����?�a��D�O�O�J�$?��h��2�2�4�Q�R�8�	
���
�
������Q�x���#�#��}�}�o�_�T�F�;�)�$��
	
�	
����}�}�o�/�0�
� �	�	"�
	
����}�}�o�0�1�!�	�	
����/�0��N�N�!�!�5�&�/�2���� 1�2��)�)�+��"�"�$��S!��
!s�I%�I*c
��|j|j�d�d��}|dj�dd}|D�cgc]2}|s�t|j	��s� |j	�d��4}}|D�]?}d|��}|jd	�r=|j�d
|��}|jD]}|j|�d|��d|�����|jd
�r�|j�d|��}|jD]�}|dk(r�	|j|�d|���}	|	ddk(s�(|	dj�ddD�
cgc]}
|
j	�d��}}
|D]4}|j�d|��}|j|�d|�d|��d|�d|�����6��|jd�s��/|j|���Bycc}wcc}
w)z7 Collect details about each resource in all namespaces z get namespacesrJrKrPrQNrz--namespace=r%rMrI�
cluster-info/r(rrNrOz
 describe �/r*)
r]r6r^�lenr_rXrar[�exec_cmd�
_get_pod_logs)
r7�kns�	kn_output�n�knsps�nspace�knsp�k_cmdrf�ret�k�k_list�items
             r9rcz'Kubernetes.collect_per_resource_details�s���%�%������&G�-;�&�=����M�,�,�.�q�r�2�	�'0�I�!�A�#�a�g�g�i�.�����1��I��I��	)�F�!�&��*�D����u�%��=�=�/��t�f�=���>�>��C��'�'� �'��3�%�(�!.�v�h�7�(������z�*��=�=�/��4�&�1���>�>��C��h�� ��-�-�5�'��s�e�(<�=�C��8�}��)�"%�h�-�":�":�"<�Q�R�"@�"B�1�!�'�'�)�A�,�"B��"B�$*��D�'+�}�}�o�Q�t�f�$=�E� �/�/�#(�'��C�5��$�� @�)6�v�h�a��u�'E�0�������y�)��"�"�4�(�;	)��J��*"Bs�F:�F:�F:�;F?c��|j�d|��}|j|�d��}|ddk(�rtj|d�}|j	d�rt|j	d��nd}|dD]�}|rt
j||dd	�s�"d
|dd�d|dd	��}d
|dvrB|dd
D]7}|dd	}	|d	}
|j|j�d|�d|	�d|
��|���9d|dvs��|ddD]7}|dd	}	|d	}
|j|j�d|�d|	�d|
��|���9��yy)NrMz podsrOrrPr+�items�metadata�namerm�	namespacez	/podlogs/�
containers�specrIz logs z -c rK�initContainers)	r6rp�json�loadsrXr�re�matchr[)r7r�rxryr�reg�pod�_subdir�cont�pod_name�	cont_names           r9rqzKubernetes._get_pod_logs�s����=�=�/��y�k�:���m�m�u�g�U�O�,���x�=�A���:�:�c�(�m�,�D��?�?�#3�4��T�_�_�-=�>�?�:>�
��G�}�
���r�x�x��S��_�V�-D�E��*�!�*�o�k�:�;�9�!�*�o�f�5�6�8�� �3�v�;�.� #�F��L� 9���#&�z�?�6�#:��$(��L�	��+�+�#�}�}�o�Q�y�k��'�j��Y�K�9�#*�,���$�s�6�{�2� #�F��,<� =���#&�z�?�6�#:��$(��L�	��+�+�#�}�}�o�Q�y�k��'�j��Y�K�9�#*�,���!
�r;c��|jd�s9|j�d�}|jD]}|j|�d|��d���yy)z% Collect details about all resources r%z get --all-namespaces=truerIrJrKN)rXr6rar[)r7rxrfs   r9rdz Kubernetes.collect_all_resourcess[�����u�%��}�}�o�%?�@�E��~�~�
���#�#��g�Q�s�e�$�)�$��
�&r;c�p�d}|j|j|d�|j|j�ddj|j��d�}|j|�d}d}ddjt
|j�|jz��d�}|j|||�y)NzX(?P<var>{\s*"name":\s*[^,]*(pass|pwd|key|token|cred|PASS|PWD|KEY)[^,]*,\s*"value":)[^}]*z\g<var> "********"z^(�|�)zLS0tLS1CRUdJ[A-Za-z0-9+/=]+z***** SCRUBBED BASE64 PEM *****)	�do_cmd_output_subr6�do_cmd_private_sub�joinrU�do_file_private_sub�listr4�do_path_regex_sub)r7�
env_regexp�pathexp�regexp�substs     r9�postproczKubernetes.postprocs���
M�
����t�}�}�j�4�	6�
	
����
�
�.������!2�!2�3�4�A�6��� � ��)�0��1�������d�j�j�!1�$�2C�2C�!C�D�E�Q�G�����w���6r;N)�__name__�
__module__�__qualname__�
short_desc�plugin_name�profiles�plugin_timeoutrUrWrYrar\r�str�option_listr6r:rCrkrcrqrdr��r;r9r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�4��eZdZeZeZeZ�fd�Z	�fd�Z
�xZS)�RedHatKubernetesc�D��|jd�ryt�|�	�S)Nzopenshift-hyperkubeF)r`�super�
check_enabled�r7�	__class__s �r9r�zRedHatKubernetes.check_enabled/s#������2�3���w�$�&�&r;c�B��|j�t�|�	�yr>)r:r�rkr�s �r9rkzRedHatKubernetes.setup5s�������
��
�r;)r�r�r��
KUBE_PACKAGES�packages�KUBECONFIGSr4�	KUBE_SVCSrr�rk�
__classcell__�r�s@r9r�r�'s!����H��E��H�'��r;r�c�L��eZdZedzZedzZedzZ�fd�Z	d�Z
�fd�Z�xZS)�UbuntuKubernetes)�k8s)z#/root/cdk/cdk_addons_kubectl_configz4/var/snap/microk8s/current/credentials/client.config)zsnap.kubelet.daemonzsnap.kube-apiserver.daemonzsnap.kube-proxy.daemonzsnap.kube-scheduler.daemonz#snap.kube-controller-manager.daemonzcdk.master.auth-webhookc���|j�|jd�rd|_n(|jd�rd|_|j�|jjddg�t�|��y)N�microk8szmicrok8s kubectlr�zk8s kubectlz/root/cdk/kubelet/config.yamlz!/root/cdk/audit/audit-policy.yaml)r:r`r6�_canonical_kubernetesrUrbr�rkr�s �r9rkzUbuntuKubernetes.setupOso����������Z�(�.�D�M�
�
�
�u�
%�)�D�M��&�&�(���� � �+�/�"
�	�	��
�r;c
���|jd��d}d}ddg}|j|�d�|�d�|�d	�|�d
�|�d�|�d�|�d
�g�|j|D�cgc]	}|�d|����c}�ycc}w)Nz
snap.k8s.*)�unitsr�z/var/snap/k8s/commonrOr3z/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.yamlrI)�add_journalrTr[)r7�k8s_cmd�
k8s_common�k8s_subcmdsres     r9r�z&UbuntuKubernetes._canonical_kubernetes^s������|��,���+�
�
��
��
	
����l�%� ��l�7�8��l�:�;��l�A�B��l�@�A��l�C�D��l�9�:�
�	�	
���0;�
�&,�w�i�q���!�
�	��
s�A-c�D��t�|��|jd�y)Nz;/var/snap/k8s/common/var/lib/k8sd/state/truststore/k8s.yaml)r�r�r�r�s �r9r�zUbuntuKubernetes.postprocws ���
����� � �I�	Kr;)
r�r�r�r�r�r�r4r�rrkr�r�r�r�s@r9r�r�:sJ���� ��H�
��
�E�
���H�
��2K�Kr;r�)�fnmatchrr�r�r1�sos.report.pluginsrrrrrr�r�r�rr�r�r�r;r9�<module>r�sc���	��	�9�9��
�

�	���
~7��~7�B�z�<��&AK�z�<��AKr;