o
    O6uf #  ã                   @   sb   d dl Z 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dZdZdZ	dd	„ Z
d
d„ Zdd„ ZdS )ÚOpenStackNovazOpenStack NovaÚopenstack_nova)Ú	openstackÚopenstack_controllerÚopenstack_computeÚopenstack_edpm)ú
.*nova_apiz*/var/lib/config-data/puppet-generated/novazopenstack-nova-api.serviceNc                    s@  ˆ   d¡}ˆ  ˆ j¡s|r®d}|rdˆ j d }ˆ jd| d dd� ˆ jd| d	 d
d� ˆ jd| d dd� ˆ jd| d dd� dd„ dD ƒ}dd„ dD ƒ}t|ƒrZt|ƒsaˆ j d¡ nMˆ  d¡ ˆ  d¡ ˆ  d¡ ˆ  d¡ ˆ  d¡ ˆ  d¡ ˆ  d¡ ˆ  	d¡}|d dkr®|d  }| 
¡ d!d"… D ]}| ¡ d# }d$|› �}ˆ  |¡ q›ˆ  d%¡rÁˆ  d&d'ˆ j› d(�d)g¡ n%d&}	g d*¢}
|
D ]}ˆ  ˆ  |	|¡¡ qÉˆ  d'ˆ j› d+�d'ˆ j› d,�g¡ g d-¢}g d.¢‰dd/ˆ jd0 ˆ jd1 ˆ jd2 ˆ jd3 ˆ jd4 gttt d5¡j‡ ‡fd6d„|D ƒƒƒ }ˆ  |¡ d S )7Nr   Ú z--config-dir ú
/etc/nova/znova-manage z db versionznova-manage_db_version)Úsuggest_filenamez fixed listznova-manage_fixed_listz floating listznova-manage_floating_listznova-status z upgrade checkznova-status_upgrade_checkc                 S   ó   g | ]}|t jv ‘qS © ©ÚosÚenviron©Ú.0Úpr   r   úC/usr/lib/python3/dist-packages/sos/report/plugins/openstack_nova.pyÚ
<listcomp>?   ó    z'OpenStackNova.setup.<locals>.<listcomp>)ÚOS_USERNAMEÚOS_PASSWORDc                 S   r   r   r   r   r   r   r   r   B   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 compute service listzopenstack flavor list --longzopenstack compute agent listznova version-listzopenstack hypervisor listzopenstack quota showzopenstack hypervisor stats showz$openstack server list --all-projectsÚstatusr   Úoutputé   éÿÿÿÿé   zopenstack server show Úall_logsz/var/log/nova/z	/var/log/z*/nova*z%/var/lib/nova/instances/*/console.log)znova-api.log*znova-compute.log*znova-conductor.log*znova-metadata-api.log*znova-manage.log*znova-placement-api.log*znova-scheduler.log*z*/nova*.logz*/placement*.log©r   Ú_libvirtÚ	_metadataÚ
_placement)r   z/etc/my.cnf.d/tripleo.cnfz/etc/httpd/conf/z/etc/httpd/conf.d/z /etc/httpd/conf.modules.d/*.confÚauthorized_keysz%/../memcached/etc/sysconfig/memcachedz/var/spool/cron/novaz_libvirt/etc/libvirt/z_libvirt/etc/nova/migration/z!_libvirt/var/lib/nova/.ssh/configz^((?!libvirt.+httpd).)*$c                    s(   g | ]}ˆD ]}ˆ j › |› |› �‘qqS r   )Úvar_puppet_gen)r   r   Ús©ÚselfÚsyspathsr   r   r   Š   s
    ÿÿ)Úcontainer_existsÚis_service_runningÚservice_namer*   Úadd_cmd_outputÚallÚanyÚsoslogÚwarningÚcollect_cmd_outputÚ
splitlinesÚsplitÚ
get_optionÚadd_copy_specÚ	apachepkgÚ	path_joinÚlistÚfilterÚreÚcompileÚmatch)r-   Úin_containerÚnova_configÚvars_allÚvars_anyÚresÚnova_instancesÚinstanceÚcmdÚnovadirÚnovalogsÚnovalogÚnpathsÚspecsr   r,   r   Úsetup!   s˜   
ÿ
þ
þ
þ
þ






ÿ

ý	þ	ùÿÿÿøzOpenStackNova.setupc                 C   s6   |   d||¡ dD ]}|   | j› |› d�||¡ q	dS )z Apply regex substitution z/etc/nova/*r%   N)Údo_path_regex_subr*   )r-   ÚregexpÚsubstÚnpathr   r   r   Úapply_regex_sub�   s   þÿzOpenStackNova.apply_regex_subc                 C   sL   g d¢}ddg}d  |¡}|  dd  |¡› d�d¡ |  d|› d�d	¡ d S )
N)Úldap_dns_passwordÚneutron_admin_passwordÚrabbit_passwordÚqpid_passwordÚpowervm_mgr_passwdÚvirtual_power_host_passÚxenapi_connection_passwordÚpasswordÚhost_passwordÚvnc_passwordÚadmin_passwordÚconnection_passwordÚmemcache_secret_keyÚs3_secret_keyÚmetadata_proxy_shared_secretÚ	fixed_keyÚtransport_urlÚrbd_secret_uuidÚ
connectionÚsql_connectionú|z(^\s*(z)\s*=\s*)(.*)z\1*********z!)\s*=\s*(.*)://(\w*):)(.*)(@(.*))z\1*********\6)ÚjoinrU   )r-   Úprotect_keysÚconnection_keysÚjoin_con_keysr   r   r   Úpostproc—   s   	
þ
þzOpenStackNova.postproc)Ú__name__Ú
__module__Ú__qualname__Ú
short_descÚplugin_nameÚprofilesÚ
containersr*   r1   r<   rP   rU   ro   r   r   r   r   r      s    nr   c                       s,   e Zd ZdZdZdZdZ‡ fdd„Z‡  ZS )Ú
DebianNovaÚapache2F)znova-api-ec2znova-api-metadataznova-api-os-computeznova-api-os-volumeznova-commonznova-computeznova-compute-kvmznova-compute-lxcznova-compute-qemuznova-compute-umlznova-compute-xcpznova-compute-xenznova-xcp-pluginsznova-consoleauthznova-networkznova-schedulerznova-volumeÚnovnczpython-novazpython-novnczpython3-novaznova-api.servicec                    s   t ƒ  ¡  |  ddg¡ d S )Nz/etc/sudoers.d/nova_sudoersz,/usr/share/polkit-1/rules.d/60-libvirt.rules)ÚsuperrP   r;   ©r-   ©Ú	__class__r   r   rP   Ì   s
   

þzDebianNova.setup)	rp   rq   rr   r<   ÚnovaÚpackagesr1   rP   Ú__classcell__r   r   r|   r   rw   ¯   s    rw   c                       s(   e Zd ZdZdZdZ‡ fdd„Z‡  ZS )Ú
RedHatNovaÚhttpdF)zopenstack-selinuxc                    sP   t ƒ  ¡  |  g d¢¡ |  d¡r|  ddg¡ n|  ddg¡ |  dg¡ d S )N)z/etc/logrotate.d/openstack-novaz4/etc/polkit-1/localauthority/50-local.d/50-nova.pklaz/etc/sudoers.d/novaz#/etc/security/limits.d/91-nova.confz(/etc/sysconfig/openstack-nova-novncproxyz/var/lib/openstack/config/novaz(/var/lib/openstack/containers/nova*.jsonr$   z/var/log/httpd/placement*z/var/log/containers/nova/*z/var/log/httpd/placement*.logz/var/log/containers/nova/*.logz-/var/lib/openstack/config/nova/ssh-privatekey)rz   rP   r;   r:   Úadd_forbidden_pathr{   r|   r   r   rP   Ú   s   


þþ
ÿzRedHatNova.setup)rp   rq   rr   r<   r~   r   rP   r€   r   r   r|   r   r�   Ô   s
    r�   )
r   r@   Úsos.report.pluginsr   r   r   r   r   rw   r�   r   r   r   r   Ú<module>   s    %