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                   @   s<   e Zd ZdZdZdZdZed Zg d¢Zdd„ Z	d	d
„ Z
dS )ÚOpenStackOctaviazOpenstack OctaviaÚopenstack_octavia)Ú	openstackÚopenstack_controllerz/var/lib/config-dataz/puppet-generated/octavia)ÚamphoraÚavailabilityzoneÚavailabilityzoneprofileÚflavorÚflavorprofileÚhealthmonitorÚl7policyÚlistenerÚpoolÚproviderÚquotac                 C   s¼  |   dddd| jd | jd | jd | jd g¡ |  d	d
i¡ |  d¡ |  | jd ¡ |  | jd ¡ |  d¡rA|   dg¡ n|   dg¡ dd„ dD ƒ}dd„ dD ƒ}t|ƒr]t|ƒso|  d¡so|  d¡so| j	 
d¡ d S | jddd� | jD ]:}| jd|› d�|d� d|› d�}|  |¡}|d dkr³|d  ¡ D ]}| ¡ d }| jd|› d |› �|d� q�qyd!}|  |¡}|d dkrÚ|d  ¡ D ]}| ¡ d }| jd"|› �d#d� qÇd S d S )$Nz*/etc/sysconfig/network-scripts/ifcfg-o-hm0z"/etc/logrotate.d/openstack-octaviaú/etc/octavia/*z/var/lib/octaviaz/octavia/etc/octaviaz/etc/octaviaz/etc/rsyslog.dz/etc/my.cnf.d/tripleo.cnfz.*/etc/octavia/octavia.confÚoctavia_confz/etc/octavia/certsÚall_logsz/var/log/octavia/*z/var/log/octavia/*.logc                 S   ó   g | ]}|t jv ‘qS © ©ÚosÚenviron©Ú.0Úpr   r   úF/usr/lib/python3/dist-packages/sos/report/plugins/openstack_octavia.pyÚ
<listcomp>E   ó    z*OpenStackOctavia.setup.<locals>.<listcomp>)ÚOS_USERNAMEÚOS_PASSWORDc                 S   r   r   r   r   r   r   r    r!   H   r"   )ÚOS_TENANT_NAMEÚOS_PROJECT_NAMEzpython2-octaviaclientzpython3-octaviaclientzÇNot all environment variables set or octavia client package not installed.Source the environment file for the user intended to connect to the OpenStack environment and install octavia client package.zopenstack loadbalancer listÚloadbalancer)Úsubdirzopenstack loadbalancer z listz list -f value -c idÚstatusr   Úoutputz show z5openstack loadbalancer provider list -f value -c namez0openstack loadbalancer provider capability list Úprovider_capability)Úadd_copy_specÚvar_config_dataÚvar_puppet_genÚadd_file_tagsÚadd_forbidden_pathÚ
get_optionÚallÚanyÚis_installedÚsoslogÚwarningÚadd_cmd_outputÚ	resourcesÚexec_cmdÚ
splitlinesÚsplit)ÚselfÚvars_allÚvars_anyÚresÚcmdÚretÚentr   r   r   r    Úsetup$   sz   øÿ

ÿÿÿþÿ
ÿ
þ€
ÿýýzOpenStackOctavia.setupc                 C   s@   g d¢}dd  |¡› d�}|  d|d¡ |  | jd |d¡ d S )N)Úca_private_key_passphraseÚheartbeat_keyÚpasswordÚ
connectionÚtransport_urlÚserver_certs_key_passphraseÚmemcache_secret_keyz(^\s*(ú|z)\s*=\s*)(.*)r   z\1*********)ÚjoinÚdo_path_regex_subr.   )r<   Úprotect_keysÚregexpr   r   r    Úpostprocr   s   þzOpenStackOctavia.postprocN)Ú__name__Ú
__module__Ú__qualname__Ú
short_descÚplugin_nameÚprofilesr-   r.   r8   rC   rP   r   r   r   r    r      s    Nr   c                       s    e Zd ZdZ‡ fdd„Z‡  ZS )ÚDebianOctavia)zoctavia-commonzoctavia-apizpython3-octaviac                    s4   t ƒ  ¡  |  d¡r|  dg¡ d S |  dg¡ d S )Nr   z/var/log/apache2/octavia*z/var/log/apache2/octavia*.log)ÚsuperrC   r1   r,   )r<   ©Ú	__class__r   r    rC   ‰   s   


ÿ
ÿzDebianOctavia.setup)rQ   rR   rS   ÚpackagesrC   Ú__classcell__r   r   rY   r    rW   �   s    rW   c                   @   s   e Zd ZdZdS )ÚRedHatOctavia)zopenstack-selinuxN)rQ   rR   rS   r[   r   r   r   r    r]   •   s    r]   )	r   Úsos.report.pluginsr   r   r   r   r   rW   r]   r   r   r   r    Ú<module>   s
   u