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                   @   sN   e Zd ZdZdZdZdZed Zdddd	d
ddddddgZdd Z	dd Z
dS )OpenStackOctaviazOpenstack OctaviaZopenstack_octavia)Z	openstackZopenstack_controllerz/var/lib/config-dataz/puppet-generated/octaviaZamphoraZavailabilityzoneZavailabilityzoneprofileZflavorZflavorprofileZhealthmonitorZl7policyZlistenerZpoolproviderZ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r|  dg n|  dg dd dD }dd dD }t|rt|s| ds| ds| j	
d n| jddd | jD ]v}| jd| d|d d| d}| |}|d dkr|d  D ],}| d }| jd| d | |d q8qd!}| |}|d dkr|d  D ]&}| d }| jd"| d#d qd 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.confZoctavia_confz/etc/octavia/certsall_logsz/var/log/octavia/*z/var/log/octavia/*.logc                 S   s   g | ]}|t jkqS  osenviron.0pr
   r
   F/usr/lib/python3/dist-packages/sos/report/plugins/openstack_octavia.py
<listcomp>E   s     z*OpenStackOctavia.setup.<locals>.<listcomp>)ZOS_USERNAMEZOS_PASSWORDc                 S   s   g | ]}|t jkqS r
   r   r   r
   r
   r   r   H   s     )ZOS_TENANT_NAMEZOS_PROJECT_NAMEzpython2-octaviaclientzpython3-octaviaclientzNot 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 listZloadbalancer)Zsubdirzopenstack loadbalancer z listz list -f value -c idZstatusr   outputz show z5openstack loadbalancer provider list -f value -c namez0openstack loadbalancer provider capability list Zprovider_capability)add_copy_specvar_config_datavar_puppet_genZadd_file_tagsZadd_forbidden_path
get_optionallanyZis_installedZsoslogZwarningZadd_cmd_output	resourcesZexec_cmd
splitlinessplit)selfZvars_allZvars_anyrescmdZretZentr   r
   r
   r   setup$   sr     




zOpenStackOctavia.setupc                 C   sJ   dddddddg}dd	 | d
}| d|d | | jd |d d S )NZca_private_key_passphraseZheartbeat_keyZpasswordZ
connectionZtransport_urlZserver_certs_key_passphraseZmemcache_secret_keyz(^\s*(|z)\s*=\s*)(.*)r   z\1*********)joinZdo_path_regex_subr   )r   Zprotect_keysZregexpr
   r
   r   postprocr   s         zOpenStackOctavia.postprocN)__name__
__module____qualname__Z
short_descZplugin_nameZprofilesr   r   r   r    r#   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                    s2   t    | dr"| dg n| dg d S )Nr	   z/var/log/apache2/octavia*z/var/log/apache2/octavia*.log)superr    r   r   )r   	__class__r
   r   r       s    

zDebianOctavia.setup)r$   r%   r&   packagesr    __classcell__r
   r
   r)   r   r'      s   r'   c                   @   s   e Zd ZdZdS )RedHatOctavia)zopenstack-selinuxN)r$   r%   r&   r+   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