o
    O6uf$  ã                   @   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                   @   s4   e Zd ZdZdZdZdZdd„ Zdd„ Zd	d
„ Z	dS )ÚOpenStackNeutronzOpenStack NetworkingÚopenstack_neutron)Ú	openstackÚopenstack_controllerÚopenstack_computeÚopenstack_edpmz-/var/lib/config-data/puppet-generated/neutronc              
   C   s  |   d¡r|  dg¡ n|  dg¡ |  d| jd | jd | jd g¡ |  d¡ |  d¡ |  d	¡ |  | j¡r=| j}nd
}|› d�}g }g d¢}z;t|ddd��*}| ¡  ¡ D ]}|s^qY| 	d¡}|d  
¡ |v rt| |d  
¡ ¡ qYW d   ƒ n1 sw   Y  W n ty¢ } z|  d|› d|› �¡ W Y d }~nd }~ww |  |¡ dd„ dD ƒ}	dd„ dD ƒ}
t|	ƒr¾t|
ƒsÅ| j d¡ n:g d¢}|D ]3}|  d|› d�¡}|d dkrþ|d }| ¡ d d!… D ]}| 	¡ d }d|› d"|› �}|  |¡ qèqË|  d#d$d%œ¡ d S )&NÚall_logsz/var/log/neutron/z/var/log/neutron/*.logz/etc/neutron/z/etc/default/neutron-serverz/etc/my.cnf.d/tripleo.cnfz/var/lib/neutron/z/var/lib/neutron/lockzls -laZR /var/lib/neutron/lockÚ z%/etc/neutron/plugins/ml2/ml2_conf.ini)Úovn_nb_private_keyÚovn_nb_certificateÚovn_nb_ca_certÚovn_sb_private_keyÚovn_sb_certificateÚovn_sb_ca_certÚrzUTF-8)Úencodingú=r   é   zCould not open conf file z: c                 S   ó   g | ]}|t jv ‘qS © ©ÚosÚenviron©Ú.0Úpr   r   úF/usr/lib/python3/dist-packages/sos/report/plugins/openstack_neutron.pyÚ
<listcomp>O   ó    z*OpenStackNeutron.setup.<locals>.<listcomp>)ÚOS_USERNAMEÚOS_PASSWORDc                 S   r   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.)ÚsubnetÚportÚrouterznetwork agentÚnetworkÚ	extensionzfloating ipzsecurity groupz
openstack z listÚstatusÚoutputé   éÿÿÿÿz show Úneutronml2_confÚneutron_server_log)z'.*/etc/neutron/plugins/ml2/ml2_conf.iniz/var/log/neutron/server.log)Ú
get_optionÚadd_copy_specÚvar_puppet_genÚadd_forbidden_pathÚadd_cmd_outputÚpath_existsÚopenÚreadÚ
splitlinesÚsplitÚstripÚappendÚIOErrorÚ
_log_errorÚallÚanyÚsoslogÚwarningÚcollect_cmd_outputÚadd_file_tags)ÚselfÚml2_preÚml2_conf_fileÚ	ml2_certsÚml2_cert_keysÚcfileÚlineÚwordsÚerrorÚvars_allÚvars_anyÚcmdsÚcmdÚresÚneutron_itemsÚitemÚshow_cmdr   r   r    Úsetup   sv   
ÿÿü



	
€ûÿ€ÿ€ÿ
€þzOpenStackNeutron.setupc                 C   s&   |   d||¡ |   | jd ||¡ dS )z Apply regex substitution z/etc/neutron/*N)Údo_path_regex_subr4   )rF   ÚregexpÚsubstr   r   r    Úapply_regex_subt   s
   þz OpenStackNeutron.apply_regex_subc                 C   sJ   g d¢}dg}d  |¡}|  dd  |¡› d�d¡ |  d|› d�d¡ d S )	N)Úrabbit_passwordÚqpid_passwordÚnova_admin_passwordÚxenapi_connection_passwordÚpasswordÚserver_authÚadmin_passwordÚmetadata_proxy_shared_secretÚeapi_passwordÚcrd_passwordÚprimary_l3_host_passwordÚ
serverauthÚucsm_passwordÚha_vrrp_auth_passwordÚssl_key_passwordÚnsx_passwordÚvcenter_passwordÚedge_appliance_passwordÚtenant_admin_passwordÚapic_passwordÚtransport_urlÚmemcache_secret_keyÚ
connectionú|z(^\s*(z)\s*=\s*)(.*)z\1*********z!)\s*=\s*(.*)://(\w*):)(.*)(@(.*))z\1*********\6)Újoinr[   )rF   Úprotect_keysÚconnection_keysÚjoin_con_keysr   r   r    Úpostproc|   s   

þ
þzOpenStackNeutron.postprocN)
Ú__name__Ú
__module__Ú__qualname__Ú
short_descÚplugin_nameÚprofilesr4   rW   r[   rx   r   r   r   r    r      s    [r   c                       s(   e Zd ZdZdd„ Z‡ fdd„Z‡  ZS )ÚDebianNeutron)úneutron-commonzneutron-plugin-ciscoz neutron-plugin-linuxbridge-agentzneutron-plugin-nicirazneutron-plugin-openvswitchz neutron-plugin-openvswitch-agentzneutron-plugin-ryuzneutron-plugin-ryu-agentzneutron-serverzpython-neutronzpython3-neutronc                 C   s
   |   d¡S )Nr€   )Úis_installed©rF   r   r   r    Úcheck_enabled¤   s   
zDebianNeutron.check_enabledc                    s   t ƒ  ¡  |  d¡ d S )Nz/etc/sudoers.d/neutron_sudoers)ÚsuperrW   r3   r‚   ©Ú	__class__r   r    rW   §   s   
zDebianNeutron.setup)ry   rz   r{   Úpackagesrƒ   rW   Ú__classcell__r   r   r…   r    r   •   s    r   c                       s$   e Zd ZdZdZ‡ fdd„Z‡  ZS )ÚRedHatNeutron)zopenstack-selinuxz'/var/lib/config-data/ansible-generated/c                    s2   t ƒ  ¡  |  d| jd | jd | jd g¡ d S )Nz/etc/sudoers.d/neutron-rootwrapz/neutron-dhcp-agent/z/neutron-dhcp-ovn/z/neutron-sriov-agent/)r„   rW   r3   Úvar_ansible_genr‚   r…   r   r    rW   ±   s   

üzRedHatNeutron.setup)ry   rz   r{   r‡   rŠ   rW   rˆ   r   r   r…   r    r‰   ¬   s    r‰   )	r   Úsos.report.pluginsr   r   r   r   r   r   r‰   r   r   r   r    Ú<module>   s    