U
    -_g                     @   sB   d dl Z d dlZd dlZd dlmZmZmZ G dd deeZdS )    N)PluginUbuntuPlugin	PluginOptc                   @   sX   e Zd ZdZdZdZdZdZedde	dd	ed
de
dd	gZdd Zdd Zdd ZdS )SunbeamzSunbeam Openstack ControllerZsunbeam)Zcloud)Z	openstackz/var/snap/openstack/commonsunbeam-userZubuntuz&The user used for sunbeam installation)defaultZval_typeZdescjuju-allow-loginFzAllow sos to login to jujuc                 C   s  |  d | | j d| j d| j d| j d| j ddg | jdd	d
gdd | d}|d dkrt|d }|D ]}| d|d   q| d}zt	|}W n( t
k
r   | d| d Y d S X |r|j d}| | d| d| dg | dr2| d| d | jd|d}| jd|d d!}d"}	|d dksp|d dkrzF|d  d }
|d  d }d#|
ksd#|kr| | d}	W n tk
r   Y nX |	s| d$ d S )%Nzsnap.openstack.*z
/hooks.logz/state/daemon.yaml#/state/truststore/sunbeam.maas.yamlz/state/database/info.yamlz/state/database/cluster.yamlz'/var/snap/openstack/current/config.yamlzsunbeam cluster listz"sunbeam cluster list --format yamlzsunbeam manifest listT)snap_cmdz#sunbeam manifest list --format yamlstatusr   outputzsunbeam manifest show --id Z
manifestidr   zUser "z" does not exist, will not collect juju information. Use `-k sunbeam.sunbeam-user` option to define the user to use to collect data for sunbeamz/snap/openstack/commonz/*.logz/etc/*/*.logz/logs/*.logr   zsu - z -c "sunbeam utils juju-login"zjuju whoamirunaszjuju status   )r   ZtimeoutFZ
Controllerzjuju is not logged in, will not collect juju information. Use `-k sunbeam.juju-allow-login=True` to login or use `juju login` as the sunbeam user to login)Zadd_service_statusZadd_copy_spec
common_diradd_cmd_outputcollect_cmd_outputyamlZ	safe_loadZ
get_optionpwdgetpwnamKeyErrorZ	_log_warnpw_dirZexec_cmd
splitlines_get_juju_cmd_details
IndexError)selfZmanifest_rawZ	manifestsZmanifestZsunbeam_userZuser_pwdZsb_snap_homedirZjuju_whoamiZjuju_statusZ	logged_inZj_whoamiZj_status r   </usr/lib/python3/dist-packages/sos/report/plugins/sunbeam.pysetup"   s|    





	



zSunbeam.setupc           	   	   C   s  | j d|dd | jd|d}|d dkrt|d }|d	  D ]}| j d
| d| d| d| dg|dd | jd
| d|d}|d dkrFt|d }|d D ]J}| d|d  }| j d| d| dd| d| dg|dd qqFd S )Njuju controllersT)r   r
   zjuju controllers --format jsonr   r   r   r   Zcontrollerszjuju models -c zjuju model-defaults -c zjuju controller-config -c z --format jsonZmodels:namezjuju status -m zjuju model-config -m )r   r   jsonloadskeys)	r   userZjuju_controllersZjuju_ctrl_jsonZ
controllerZjuju_modelsZjuju_status_jsonZmodelZ
model_namer   r   r   r   q   sD     
 


 zSunbeam._get_juju_cmd_detailsc                 C   s*   |  | j d | d | d d S )Nr	   r   zjuju controller-config)Zdo_file_private_subr   Zdo_cmd_private_sub)r   r   r   r   postproc   s
    

zSunbeam.postprocN)__name__
__module____qualname__Z
short_descZplugin_nameZprofilesZpackagesr   r   strboolZoption_listr   r   r&   r   r   r   r   r      s   O"r   )r"   r   r   Zsos.report.pluginsr   r   r   r   r   r   r   r   <module>   s   