o
    O6ufî  ã                   @   sb   d dl Z d dlZd dlZd dlmZmZ g d¢Zg d¢ZdZG dd„ deƒZ	G dd	„ d	e	eƒZ
dS )
é    N)ÚPluginÚRedHatPlugin)ú+/home/stack/.instack/install-undercloud.logú/home/stack/instackenv.jsonú/home/stack/undercloud.conf)z/var/log/heat-launcher/z/home/stack/ansible.logz/home/stack/config-download/z"/home/stack/install-undercloud.logz*/home/stack/undercloud-install-*.tar.bzip2ú/home/stack/.tripleo/historyz/var/lib/tripleo-config/z,/var/log/tripleo-container-image-prepare.logr   c                   @   s0   e Zd ZdZdZdZdd„ Zdd„ Zdd	„ Zd
S )ÚOpenStackInstackzOpenStack InstackÚopenstack_instack)Ú	openstackÚopenstack_undercloudc                    sZ  |   tt ¡ |  d¡r|   dg¡ n|   dg¡ |  ddi¡ dd„ dD ƒ}d	d„ d
D ƒ}|  ¡  t|ƒr:t|ƒsB| j 	d¡ d S d}|  
|¡d }t d|¡}|D ]R}|d }|  d|› �d|› �g¡ d|› �}|  |¡}	|	d  ¡ D ].‰ dˆ v r¤ddg}
t‡ fdd„|
D ƒƒsŒqvˆ  ¡ d }dˆ › �}d|› d�}| j||d� qvqS|  d¡ d S )NÚall_logsz/var/log/zaqar/z/var/log/zaqar/*.logz/var/log/mistral/executor.logÚmistral_executor_logc                 S   ó   g | ]}|t jv ‘qS © ©ÚosÚenviron©Ú.0Úpr   r   úF/usr/lib/python3/dist-packages/sos/report/plugins/openstack_instack.pyÚ
<listcomp>:   ó    z*OpenStackInstack.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 stack listÚoutputz(\|\s(((\w+-){4})\w+)\s\|)é   zopenstack stack show z$openstack stack resource list -n 10 z,openstack stack resource list -f value -n 5 ÚFAILEDzOS::Heat::StructuredDeploymentzOS::Heat::SoftwareDeploymentc                 3   s   � | ]}|ˆ v V  qd S )Nr   )r   Úx©Ú
deploymentr   r   Ú	<genexpr>\   s   € z)OpenStackInstack.setup.<locals>.<genexpr>z*openstack software deployment show --long zfailed-deployment-z.log)Úsuggest_filenamez>openstack object save tripleo-ui-logs tripleo-ui.logs --file -)Úadd_copy_specÚNON_CONTAINERIZED_DEPLOYÚCONTAINERIZED_DEPLOYÚ
get_optionÚadd_file_tagsÚcapture_undercloud_yamlsÚallÚanyÚsoslogÚwarningÚcollect_cmd_outputÚreÚfindallÚadd_cmd_outputÚexec_cmdÚ
splitlinesÚsplit)ÚselfÚvars_allÚvars_anyÚ
get_stacksÚstacksÚ	stack_idsÚ_sidÚsidÚcmdÚdeploymentsÚcheckÚdeployÚfnamer   r!   r   Úsetup*   sV   
ÿÿÿþ

þÿ€ôzOpenStackInstack.setupc                 C   sr   t  ¡ }z*| t¡ ddg}|D ]}| d|¡}|r+tj |¡s&|  d|¡}|  	|¡ qW dS  t
y8   Y dS w )z( capture yaml files to define overrides Úhieradata_overrideÚnet_config_overrideÚDEFAULTz/home/stackN)ÚconfigparserÚConfigParserÚreadÚUNDERCLOUD_CONF_PATHÚgetr   ÚpathÚisabsÚ	path_joinr%   Ú	Exception)r6   Ú	uc_configÚoverride_optsÚoptrL   r   r   r   r*   g   s   

€ûÿz)OpenStackInstack.capture_undercloud_yamlsc                 C   sp   g d¢}dd  |¡› d�}|  d|d¡ |  t|d¡ g d¢}dd  |¡› d	�}|  d
|d¡ |  ddd¡ d S )N)Úos_passwordÚundercloud_admin_passwordÚ%undercloud_ceilometer_metering_secretÚundercloud_ceilometer_passwordÚ$undercloud_ceilometer_snmpd_passwordÚundercloud_db_passwordÚundercloud_glance_passwordÚundercloud_heat_passwordÚ+undercloud_heat_stack_domain_admin_passwordÚundercloud_horizon_secret_keyÚundercloud_ironic_passwordÚundercloud_neutron_passwordÚundercloud_nova_passwordÚundercloud_rabbit_passwordÚundercloud_swift_passwordÚundercloud_tuskar_passwordz((ú|z)=)(.*)r   z\1*********)Úpm_passwordzssh-keyÚpasswordz("(z)": )(".*?")r   r   z(password=)\w+)ÚjoinÚdo_file_subrJ   )r6   Úprotected_keysÚregexpÚprotected_json_keysÚjson_regexpr   r   r   Úpostprocv   s   ÿÿþzOpenStackInstack.postprocN)	Ú__name__Ú
__module__Ú__qualname__Ú
short_descÚplugin_nameÚprofilesrC   r*   rl   r   r   r   r   r   $   s    =r   c                   @   s   e Zd ZdZdS )ÚRedHatRDOManager)zopenstack-selinuxN)rm   rn   ro   Úpackagesr   r   r   r   rs   ™   s    rs   )rG   r   r0   Úsos.report.pluginsr   r   r&   r'   rJ   r   rs   r   r   r   r   Ú<module>   s   
u