o
    O6ufê  ã                   @   s:   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 ControllerÚsunbeam)Úcloud)Ú	openstackz/var/snap/openstack/commonúsunbeam-userÚubuntuz&The user used for sunbeam installation)ÚdefaultÚval_typeÚ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¡ |  dd	g¡ |  d
¡}zt |¡}W n tyJ   |  d|› d�¡ Y d S w |rÃ|j	› d�}|  |› d�|› d�|› d�g¡ |  d¡rr|  
d|› d�¡ | j
d|d�}| j
d|dd�}d}|d dks�|d dkrºz!|d  ¡ d }|d  ¡ d }d|v s¨d|v r¯|  |¡ d}W n	 ty¹   Y nw |sÅ|  d¡ d S d S 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 yamlr	   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   ÚtimeoutFÚstatusr   ÚoutputÚ
ControllerTzšjuju 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)Úadd_service_statusÚadd_copy_specÚ
common_dirÚadd_cmd_outputÚ
get_optionÚpwdÚgetpwnamÚKeyErrorÚ	_log_warnÚpw_dirÚexec_cmdÚ
splitlinesÚ_get_juju_cmd_detailsÚ
IndexError)	ÚselfÚsunbeam_userÚuser_pwdÚsb_snap_homedirÚjuju_whoamiÚjuju_statusÚ	logged_inÚj_whoamiÚj_status© r.   ú</usr/lib/python3/dist-packages/sos/report/plugins/sunbeam.pyÚsetup!   sn   





ú	þ

ÿúý

ÿÿ
€ýÿÞ!zSunbeam.setupc           	   	   C   s  | j d|d� | jd|d�}|d dkr}t |d ¡}|d  ¡ D ]]}| j d|› �d	|› �d
|› �d
|› d�g|d� | jd|› d�|d�}|d dkr|t |d ¡}|d D ]$}|› d|d › �}| j d|› �d|› d�d|› �d|› d�g|d� qWq!d S d S )Nújuju controllersr   zjuju controllers --format jsonr   r   r   Úcontrollerszjuju models -c zjuju model-defaults -c zjuju controller-config -c z --format jsonÚmodelsú:Únamezjuju status -m zjuju model-config -m )r   Úcollect_cmd_outputÚjsonÚloadsÚkeys)	r%   ÚuserÚjuju_controllersÚjuju_ctrl_jsonÚ
controllerÚjuju_modelsÚjuju_status_jsonÚmodelÚ
model_namer.   r.   r/   r#   f   sD   ÿ
üû
þ

üû€êzSunbeam._get_juju_cmd_detailsc                 C   s*   |   | j› d�¡ |  d¡ |  d¡ d S )Nr   r1   zjuju controller-config)Údo_file_private_subr   Údo_cmd_private_sub)r%   r.   r.   r/   Úpostprocˆ   s
   
ÿ
zSunbeam.postprocN)Ú__name__Ú
__module__Ú__qualname__Ú
short_descÚplugin_nameÚprofilesÚpackagesr   r   ÚstrÚboolÚoption_listr0   r#   rD   r.   r.   r.   r/   r      s     ÿÿýE"r   )r7   r   Úsos.report.pluginsr   r   r   r   r.   r.   r.   r/   Ú<module>   s   
