o
    *b                     @   s^   d dl mZmZmZmZmZ d dlZG dd deZG dd deeeZG dd deeZ	dS )	    )PluginRedHatPluginDebianPluginUbuntuPlugin	PluginOptNc                   @   sD   e Zd ZdZdZdZeddddgZdZd	d
 Z	dd Z
dd ZdS )OpenStackKeystonezOpenStack KeystoneZopenstack_keystone)Z	openstackZopenstack_controllerZnopwTz!do not collect keystone passwords)defaultZdescz./var/lib/config-data/puppet-generated/keystonec                 C   s   |  dddd| jd | jd | jd | jd | jd	 | jd
 | jd g | dr1|  dg n|  dg | d}|d | _|d dksM| | jsPd| _|  | j dd dD }dd dD }t|rlt|st| j	d d S | 
d | 
d d S )Nz'/etc/keystone/default_catalog.templatesz/etc/keystone/keystone.confz/etc/keystone/logging.confz/etc/keystone/policy.jsonz/etc/keystone/*.confz/etc/keystone/*.jsonz/etc/httpd/conf/z/etc/httpd/conf.d/z /etc/httpd/conf.modules.d/*.confz/var/spool/cron/z/etc/my.cnf.d/tripleo.cnfall_logsz/var/log/keystone/z/var/log/keystone/*.logzDcrudini --get /etc/keystone/keystone.conf identity domain_config_diroutputstatusr   z/etc/keystone/domainsc                 S      g | ]}|t jv qS  osenviron.0pr   r   G/usr/lib/python3/dist-packages/sos/report/plugins/openstack_keystone.py
<listcomp>@       z+OpenStackKeystone.setup.<locals>.<listcomp>)ZOS_USERNAMEZOS_PASSWORDc                 S   r   r   r   r   r   r   r   r   C   r   )ZOS_TENANT_NAMEZOS_PROJECT_NAMEz}Not all environment variables set. Source the environment file for the user intended to connect to the OpenStack environment.zopenstack endpoint listzopenstack catalog list)add_copy_specvar_puppet_gen
get_optionZcollect_cmd_outputdomain_config_dirZ
path_isdirallanyZsoslogZwarningZadd_cmd_output)selfZexec_outZvars_allZvars_anyr   r   r   setup   sF   



zOpenStackKeystone.setupc                 C   s&   |  d|| |  | jd || d S )Nz/etc/keystone/*)do_path_regex_subr   )r   Zregexpsubstr   r   r   apply_regex_subN   s
   z!OpenStackKeystone.apply_regex_subc                 C   sN   g d}dg}|  dd| d |  dd| d | | jdd d S )	N)ZpasswordZqpid_passwordZrabbit_passwordZssl_key_passwordZldap_dns_passwordZneutron_admin_passwordZhost_passwordZadmin_passwordZadmin_tokenZca_passwordZtransport_urlZ
connectionz((?m)^\s*(%s)\s*=\s*)(.*)|z\1*********z-((?m)^\s*(%s)\s*=\s*(.*)://(\w*):)(.*)(@(.*))z\1*********\6z
\1********)r!   joinr   r   )r   Zprotect_keysZconnection_keysr   r   r   postprocU   s   zOpenStackKeystone.postprocN)__name__
__module____qualname__Z
short_descZplugin_nameZprofilesr   Zoption_listr   r   r!   r$   r   r   r   r   r      s    1r   c                   @   s   e Zd ZdZdS )DebianKeystone)Zkeystonezpython-keystonezpython-keystoneclientN)r%   r&   r'   packagesr   r   r   r   r(   l   s    r(   c                       s    e Zd ZdZ fddZ  ZS )RedHatKeystone)zopenstack-selinuxc                    s4   t t|   | dr| d d S | d d S )Nr	   z/var/log/httpd/keystone*z/var/log/httpd/keystone*.log)superr*   r   r   r   )r   	__class__r   r   r   y   s   
zRedHatKeystone.setup)r%   r&   r'   r)   r   __classcell__r   r   r,   r   r*   u   s    r*   )
Zsos.report.pluginsr   r   r   r   r   r   r   r(   r*   r   r   r   r   <module>   s
   [	