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                   @   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 NetworkingZopenstack_neutron)Z	openstackZopenstack_controllerZopenstack_computeZ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 | jdd	d
 | | jr~| j}nd}| d}g }ddddddg}zbt|dddJ}|  D ]6}|sq|	d}|d 
 |kr||d 
  qW 5 Q R X W n: tk
r< } z| d| d|  W 5 d }~X Y nX | | dd dD }	dd dD }
t|	rxt|
s| jd  nd!d"d#d$d%d&d'd(g}|D ]l}| d)| d*}|d+ dkr|d, }| d-d. D ],}|	 d }d)| d/| }| | qڐq| d0d1d2 d S )3NZ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/lockT)	recursive z%/etc/neutron/plugins/ml2/ml2_conf.iniZovn_nb_private_keyZovn_nb_certificateZovn_nb_ca_certZovn_sb_private_keyZovn_sb_certificateZovn_sb_ca_certrzUTF-8)encoding=r      zCould not open conf file z: c                 S   s   g | ]}|t jkqS  osenviron.0pr   r   F/usr/lib/python3/dist-packages/sos/report/plugins/openstack_neutron.py
<listcomp>O   s     z*OpenStackNeutron.setup.<locals>.<listcomp>)ZOS_USERNAMEZOS_PASSWORDc                 S   s   g | ]}|t jkqS r   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subnetZportZrouterznetwork agentZnetwork	extensionzfloating ipzsecurity groupz
openstack z listZstatusoutput   z show Zneutronml2_confZneutron_server_log)z'.*/etc/neutron/plugins/ml2/ml2_conf.iniz/var/log/neutron/server.log)Z
get_optionadd_copy_specvar_puppet_genZadd_forbidden_pathZadd_dir_listingZpath_existsopenread
splitlinessplitstripappendIOErrorZ
_log_errorallanyZsoslogZwarningZcollect_cmd_outputZadd_cmd_outputZadd_file_tags)selfZml2_preZml2_conf_fileZ	ml2_certsZml2_cert_keyscfilelineZwordserrorZvars_allZvars_anyZcmdscmdresZneutron_itemsitemZshow_cmdr   r   r   setup   s    



	
"(
zOpenStackNeutron.setupc                 C   s&   |  d|| |  | jd || dS )z Apply regex substitution z/etc/neutron/*N)Zdo_path_regex_subr   )r%   ZregexpZsubstr   r   r   apply_regex_subt   s     z OpenStackNeutron.apply_regex_subc                 C   sr   ddddddddd	d
ddddddddddddg}dg}d |}| dd | dd | d| dd d S )NZrabbit_passwordZqpid_passwordZnova_admin_passwordZxenapi_connection_passwordZpasswordZserver_authZadmin_passwordZmetadata_proxy_shared_secretZeapi_passwordZcrd_passwordZprimary_l3_host_passwordZ
serverauthZucsm_passwordZha_vrrp_auth_passwordZssl_key_passwordZnsx_passwordZvcenter_passwordZedge_appliance_passwordZtenant_admin_passwordZapic_passwordZtransport_urlZmemcache_secret_keyZ
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   postproc|   sB                  


zOpenStackNeutron.postprocN)
__name__
__module____qualname__Z
short_descZplugin_nameZprofilesr   r,   r-   r0   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 )Nr5   )Zis_installedr%   r   r   r   check_enabled   s    zDebianNeutron.check_enabledc                    s   t    | d d S )Nz/etc/sudoers.d/neutron_sudoers)superr,   r   r6   	__class__r   r   r,      s    
zDebianNeutron.setup)r1   r2   r3   packagesr7   r,   __classcell__r   r   r9   r   r4      s   r4   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/)r8   r,   r   var_ansible_genr6   r9   r   r   r,      s    
zRedHatNeutron.setup)r1   r2   r3   r;   r>   r,   r<   r   r   r9   r   r=      s   r=   )	r   Zsos.report.pluginsr   r   r   r   r   r4   r=   r   r   r   r   <module>   s
    