U
    -_g #                     @   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 NovaZopenstack_nova)Z	openstackZopenstack_controllerZopenstack_computeZopenstack_edpm)
.*nova_apiz*/var/lib/config-data/puppet-generated/novazopenstack-nova-api.serviceNc                    s^    d}  js|rbd}|r2d 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|rt|sĈ jd n d  d  d  d  d  d  d  	d}|d dkrb|d  }|
 d!d" D ]&}| d# }d$| } | q: d%r d&d' j d(d)g nVd&}	d*d+d,d-d.d/d0g}
|
D ]}  |	| q d' j d1d' j d2g dd3d4d5g}dd6d7d8d9gdd: jd;  jd<  jd=  jd>  jd? gtttd@j fdAd|D  } | d S )BNr    z--config-dir z
/etc/nova/znova-manage z db versionznova-manage_db_version)Zsuggest_filenamez fixed listznova-manage_fixed_listz floating listznova-manage_floating_listznova-status z upgrade checkznova-status_upgrade_checkc                 S   s   g | ]}|t jkqS  osenviron.0pr	   r	   C/usr/lib/python3/dist-packages/sos/report/plugins/openstack_nova.py
<listcomp>?   s     z'OpenStackNova.setup.<locals>.<listcomp>)ZOS_USERNAMEZOS_PASSWORDc                 S   s   g | ]}|t jkqS r	   r
   r   r	   r	   r   r   B   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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-projectsZstatusr   output      zopenstack server show all_logsz/var/log/nova/z	/var/log/z*/nova*z%/var/lib/nova/instances/*/console.logz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_libvirt	_metadata
_placementz/etc/my.cnf.d/tripleo.cnfz/etc/httpd/conf/z/etc/httpd/conf.d/z /etc/httpd/conf.modules.d/*.confZ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selfZsyspathsr	   r   r      s     )Zcontainer_existsZis_service_runningservice_namer   Zadd_cmd_outputallanyZsoslogZwarningZcollect_cmd_output
splitlinessplit
get_optionadd_copy_spec	apachepkgZ	path_joinlistfilterrecompilematch)r   Zin_containerZnova_configZvars_allZvars_anyresZnova_instancesinstancecmdZnovadirZnovalogsZnovalogZnpathsZ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   r   r   r   N)Zdo_path_regex_subr   )r   ZregexpZsubstZnpathr	   r	   r   apply_regex_sub   s     zOpenStackNova.apply_regex_subc                 C   sl   ddddddddd	d
ddddddddg}ddg}d |}| dd | dd | d| dd d S )NZldap_dns_passwordZneutron_admin_passwordZrabbit_passwordZqpid_passwordZpowervm_mgr_passwdZvirtual_power_host_passZxenapi_connection_passwordZpasswordZhost_passwordZvnc_passwordZadmin_passwordZconnection_passwordZmemcache_secret_keyZs3_secret_keyZmetadata_proxy_shared_secretZ	fixed_keyZtransport_urlZrbd_secret_uuidZ
connectionZsql_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   s:               	

zOpenStackNova.postproc)__name__
__module____qualname__Z
short_descZplugin_nameZprofilesZ
containersr   r   r%   r.   r/   r2   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 )
DebianNovaZ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-volumeZ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)superr.   r$   r   	__class__r	   r   r.      s
    
zDebianNova.setup)	r3   r4   r5   r%   novapackagesr   r.   __classcell__r	   r	   r9   r   r6      s
   r6   c                       s(   e Zd ZdZdZdZ fddZ  ZS )
RedHatNovaZhttpdF)zopenstack-selinuxc              	      sZ   t    | dddddddg | dr<| d	d
g n| ddg | dg d S )Nz/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)r7   r.   r$   r#   Zadd_forbidden_pathr8   r9   r	   r   r.      s,    


zRedHatNova.setup)r3   r4   r5   r%   r;   r<   r.   r=   r	   r	   r9   r   r>      s   r>   )
r   r(   Zsos.report.pluginsr   r   r   r   r   r6   r>   r	   r	   r	   r   <module>   s    %