o
    *b"                     @   sZ   d dl mZmZmZmZ d dlZG dd deZG dd deeeZG dd deeZdS )	    )PluginRedHatPluginDebianPluginUbuntuPluginNc                   @   s<   e 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_compute)
.*nova_apiz*/var/lib/config-data/puppet-generated/novazopenstack-nova-api.servicec                 C   s>  |  d}| | js|rd}|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 nR| d | d | d | d | d | d | d | d | d d}| 	|d  }|
 D ]}| d! }d"| }| j|d#| d$ d q| d%r| d&g nd&}g d'}	|	D ]}
| | ||
 q| d| jd | jd( | jd) | jd* | jd+ | jd, | jd- | jd. | jd/ | jd0 | jd1 | jd2 | jd3 | jd4 | jd5 | jd6 | jd7 g d S )8Nr    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      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>)ZOS_USERNAMEZOS_PASSWORDc                 S   r	   r
   r   r   r
   r
   r   r   ?   r   )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nova service-listzopenstack flavor list --longznova network-listznova list --all-tenantsznova agent-listznova version-listznova hypervisor-listzopenstack quota showzopenstack hypervisor stats showzopenstack server list -f valueoutputr   zopenstack server show %sz	instance-z.logall_logsz/var/log/nova/)znova-api.log*znova-compute.log*znova-conductor.log*znova-manage.log*znova-placement-api.log*znova-scheduler.log*z/etc/my.cnf.d/tripleo.cnfz/var/spool/cron/novaz/etc/httpd/conf/z/etc/httpd/conf.d/z /etc/httpd/conf.modules.d/*.confz_placement/etc/nova/z_placement/etc/httpd/conf/z_placement/etc/httpd/conf.d/z*_placement/etc/httpd/conf.modules.d/*.confz#_placement/etc/my.cnf.d/tripleo.cnfz%/../memcached/etc/sysconfig/memcachedz_libvirt/etc/libvirt/z!_libvirt/etc/my.cnf.d/tripleo.cnfz_libvirt/etc/nova/z+_libvirt/etc/nova/migration/authorized_keysz!_libvirt/var/lib/nova/.ssh/config)Zcontainer_existsZis_service_runningservice_namevar_puppet_genZadd_cmd_outputallanyZsoslogZwarningZexec_cmd
splitlinessplit
get_optionadd_copy_specZ	path_join)selfZin_containerZnova_configZvars_allZvars_anycmdZnova_instancesinstanceZnovadirZnovalogsZnovalogr
   r
   r   setup   s   
















zOpenStackNova.setupc                 C   sN   |  d|| |  | jd || |  | jd || |  | jd || d S )Nz/etc/nova/*z_placement/etc/nova/*z_libvirt/etc/nova/*)Zdo_path_regex_subr   )r   Zregexpsubstr
   r
   r   apply_regex_sub   s   zOpenStackNova.apply_regex_subc                 C   s@   g d}ddg}|  dd| d |  dd| d d S )	N)Z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
connectionZsql_connectionz((?m)^\s*(%s)\s*=\s*)(.*)|z\1*********z-((?m)^\s*(%s)\s*=\s*(.*)://(\w*):)(.*)(@(.*))z\1*********\6)r#   join)r   Zprotect_keysZconnection_keysr
   r
   r   postproc   s   zOpenStackNova.postprocN)__name__
__module____qualname__Z
short_descZplugin_nameZprofilesZ
containersr   r   r!   r#   r&   r
   r
   r
   r   r      s    dr   c                       s(   e Zd ZdZdZdZ fddZ  ZS )
DebianNovaF)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-novaclientzpython-novncznova-api.servicec                    s    t t|   | ddg d S )Nz/etc/sudoers.d/nova_sudoersz,/usr/share/polkit-1/rules.d/60-libvirt.rules)superr*   r!   r   r   	__class__r
   r   r!      s
   
zDebianNova.setup)r'   r(   r)   novapackagesr   r!   __classcell__r
   r
   r-   r   r*      s
    r*   c                       s$   e Zd ZdZdZ fddZ  ZS )
RedHatNovaF)zopenstack-selinuxc                    sJ   t t|   | g d | dr| ddg d S | d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-novncproxyr   z/var/log/httpd/nova_api*z/var/log/httpd/placement*z/var/log/httpd/nova_api*.logz/var/log/httpd/placement*.log)r+   r2   r!   r   r   r,   r-   r
   r   r!      s   


zRedHatNova.setup)r'   r(   r)   r/   r0   r!   r1   r
   r
   r-   r   r2      s    r2   )	Zsos.report.pluginsr   r   r   r   r   r   r*   r2   r
   r
   r
   r   <module>   s    $