o
    íìg  ã                   @   sZ   d dl Z d dlmZmZmZmZ G dd„ deƒZG dd„ deeeƒZG dd„ deeƒZdS )	é    N)ÚPluginÚRedHatPluginÚDebianPluginÚUbuntuPluginc                   @   s@   e Zd ZdZdZdZdZdZdZdZ	dd	„ Z
d
d„ Zdd„ ZdS )ÚOpenStackPlacementzOpenStack PlacementÚopenstack_placement)Ú	openstackÚopenstack_controller)ú.*placement_apiz//var/lib/config-data/puppet-generated/placementzopenstack-placement-apiNc           	   	      s\  |   d¡}|  | j¡s|rpd}|rd| j d }| jd| d dd� d	d
„ dD ƒ}dd
„ dD ƒ}t|ƒr9t|ƒs@| j d¡ n0|  	d¡}|d dkrp|d }| 
¡ dd… D ]}| ¡ d ‰ g d¢}|  ‡ fdd
„|D ƒ¡ qW|  d¡r„|  dddd| j› d�g¡ n|  ddd d| j› d!�g¡ |  d| jd | jd" | jd# | jd$ | jd% g¡ d S )&Nr
   Ú z--config-dir z/etc/placement/zplacement-manage z db versionzplacement-manage_db_version)Úsuggest_filenamec                 S   ó   g | ]}|t jv ‘qS © ©ÚosÚenviron©Ú.0Úpr   r   úH/usr/lib/python3/dist-packages/sos/report/plugins/openstack_placement.pyÚ
<listcomp>,   ó    z,OpenStackPlacement.setup.<locals>.<listcomp>)ÚOS_USERNAMEÚOS_PASSWORDc                 S   r   r   r   r   r   r   r   r   /   r   )ÚOS_TENANT_NAMEÚOS_PROJECT_NAMEz}Not all environment variables set. Source the environment file for the user intended to connect to the OpenStack environment.z openstack resource provider listÚstatusr   Úoutputé   éÿÿÿÿé   )Ú	inventoryÚtraitÚ	aggregatec                    s   g | ]
}d |› dˆ › �‘qS )zopenstack resource provider z list r   )r   Úsub_cmd©Úres_providerr   r   r   E   s    þÿÿÚall_logsz/var/log/placement/z/var/log/containers/placement/z(/var/log/containers/httpd/placement-api/z	/var/log/z*/placement*z/var/log/placement/*.logz#/var/log/containers/placement/*.logz,/var/log/containers/httpd/placement-api/*logz*/placement*.logz/etc/my.cnf.d/tripleo.cnfz/etc/httpd/conf/z/etc/httpd/conf.d/z /etc/httpd/conf.modules.d/*.conf)Úcontainer_existsÚis_service_runningÚservice_nameÚvar_puppet_genÚadd_cmd_outputÚallÚanyÚsoslogÚwarningÚcollect_cmd_outputÚ
splitlinesÚsplitÚ
get_optionÚadd_copy_specÚ	apachepkg)	ÚselfÚin_containerÚplacement_configÚvars_allÚvars_anyÚresÚresource_provider_listÚproviderÚsub_cmdsr   r%   r   Úsetup   s^   
ÿ
þÿ
ý
üü
úzOpenStackPlacement.setupc                 C   s&   |   d||¡ |   | jd ||¡ dS )z Apply regex substitution z/etc/placement/*N)Údo_path_regex_subr+   )r7   ÚregexpÚsubstr   r   r   Úapply_regex_subc   s
   þz"OpenStackPlacement.apply_regex_subc                 C   sL   g d¢}g d¢}d  |¡}|  dd  |¡› d�d¡ |  d|› d�d¡ d S )	N)ÚpasswordÚmemcache_secret_keyÚNOVA_API_PASSÚPLACEMENT_PASS)Údatabase_connectionÚslave_connectionÚ
connectionú|z(^\s*(z)\s*=\s*)(.*)z\1*********z!)\s*=\s*(.*)://(\w*):)(.*)(@(.*))z\1*********\6)ÚjoinrD   )r7   Úprotect_keysÚconnection_keysÚjoin_con_keysr   r   r   Úpostprock   s   
þ
þzOpenStackPlacement.postproc)Ú__name__Ú
__module__Ú__qualname__Ú
short_descÚplugin_nameÚprofilesÚ
containersr+   r*   r6   r@   rD   rQ   r   r   r   r   r      s    Ir   c                   @   ó   e Zd ZdZdZdS )ÚDebianPlacementÚapache2)zplacement-commonzplacement-apizpython3-placementN©rR   rS   rT   r6   Úpackagesr   r   r   r   rZ   „   ó    rZ   c                   @   rY   )ÚRedHatPlacementÚhttpd)zopenstack-selinuxNr\   r   r   r   r   r_   Ž   r^   r_   )	r   Úsos.report.pluginsr   r   r   r   r   rZ   r_   r   r   r   r   Ú<module>   s
   
u
