U
    -_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 PlacementZopenstack_placement)Z	openstackZopenstack_controller).*placement_apiz//var/lib/config-data/puppet-generated/placementzopenstack-placement-apiNc           	   	      s`  |  d}| | js|rd}|r0d| j d }| jd| d dd d	d
 dD }dd
 dD }t|rrt|s| jd nb| 	d}|d dkr|d }|
 dd D ]2}| d  dddg}|  fdd
|D  q| 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)Zsuggest_filenamec                 S   s   g | ]}|t jkqS  osenviron.0pr	   r	   H/usr/lib/python3/dist-packages/sos/report/plugins/openstack_placement.py
<listcomp>,   s     z,OpenStackPlacement.setup.<locals>.<listcomp>)ZOS_USERNAMEZOS_PASSWORDc                 S   s   g | ]}|t jkqS r	   r
   r   r	   r	   r   r   /   s     )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 resource provider listZstatusr   output      Z	inventoryZtraitZ	aggregatec                    s   g | ]}d | d  qS )zopenstack resource provider z list r	   )r   Zsub_cmdZres_providerr	   r   r   E   s   Z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)Zcontainer_existsZis_service_runningservice_namevar_puppet_genZadd_cmd_outputallanyZsoslogZwarningZcollect_cmd_output
splitlinessplitZ
get_optionZadd_copy_spec	apachepkg)	selfZin_containerZplacement_configZvars_allZvars_anyresZresource_provider_listZproviderZsub_cmdsr	   r   r   setup   sd    


zOpenStackPlacement.setupc                 C   s&   |  d|| |  | jd || dS )z Apply regex substitution z/etc/placement/*N)Zdo_path_regex_subr   )r   ZregexpZsubstr	   r	   r   apply_regex_subc   s     z"OpenStackPlacement.apply_regex_subc                 C   sR   ddddg}dddg}d |}| d	d | d
d | d	| dd d S )NZpasswordZmemcache_secret_keyZNOVA_API_PASSZPLACEMENT_PASSZdatabase_connectionZslave_connectionZ
connection|z(^\s*(z)\s*=\s*)(.*)z\1*********z!)\s*=\s*(.*)://(\w*):)(.*)(@(.*))z\1*********\6)joinr!   )r   Zprotect_keysZconnection_keysZjoin_con_keysr	   r	   r   postprock   s$    

zOpenStackPlacement.postproc)__name__
__module____qualname__Z
short_descZplugin_nameZprofilesZ
containersr   r   r   r    r!   r$   r	   r	   r	   r   r      s   Ir   c                   @   s   e Zd ZdZdZdS )DebianPlacementZapache2)zplacement-commonzplacement-apizpython3-placementNr%   r&   r'   r   Zpackagesr	   r	   r	   r   r(      s   r(   c                   @   s   e Zd ZdZdZdS )RedHatPlacementZhttpd)zopenstack-selinuxNr)   r	   r	   r	   r   r*      s   r*   )	r   Zsos.report.pluginsr   r   r   r   r   r(   r*   r	   r	   r	   r   <module>   s   u
