a >h@sBddlZddlZddlZddlmZmZmZGdddeeZdS)N)Plugin UbuntuPlugin PluginOptc@sXeZdZdZdZdZdZdZedde dd ed d e d d gZ d dZ ddZ ddZdS)SunbeamzSunbeam Openstack ControllerZsunbeam)Zcloud)Z openstackz/var/snap/openstack/common sunbeam-userZubuntuz&The user used for sunbeam installation)defaultZval_typeZdescjuju-allow-loginFzAllow sos to login to jujucCs\|d||jd|jd|jd|jd|jddg|d}zt|}Wn&ty|d |d YdS0|rX|jgd d |d |j d|d}|ddkrt |d}|D]}|jd|dd |d q|j d|d}|ddkrRt |d}|dD]0}|jd|dd|ddgd |d q |j d} || d| d| d| d| dg|d r| d!|d"|j d#|d} |j d$|d%d&} d'} | ddks| ddkrHzF| dd} | dd}d(| vs"d(|vr0||d } WntyFYn0| sX|d)dS)*Nzsnap.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.yamlrzUser "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 sunbeam)zsunbeam cluster listz"sunbeam cluster list --format yamlzsunbeam manifest listzsunbeam deployment listT)snap_cmdrunasz#sunbeam manifest list --format yamlr statusroutputzsunbeam manifest show Z manifestidz%sunbeam deployment list --format yaml deploymentszsunbeam deployment show namez --format yamlz/snap/openstack/commonz/*.logz /etc/**/*.logz/etc/**/terraform.tfvars.jsonz /logs/*.logz/reports/*.yamlrzsu - z -c "sunbeam utils juju-login"z juju whoamiz juju status)r 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)Zadd_service_statusZ add_copy_spec common_dirZ get_optionpwdgetpwnamKeyErrorZ _log_warnadd_cmd_outputcollect_cmd_outputyamlZ safe_loadpw_dirZexec_cmd splitlines_get_juju_cmd_details IndexError)selfZ sunbeam_userZuser_pwdZ manifest_rawZ manifestsZmanifestZdeployment_rawrZ deploymentZsb_snap_homedirZ juju_whoamiZ juju_statusZ logged_inZj_whoamiZj_statusr>/usr/lib/python3.9/site-packages/sos/report/plugins/sunbeam.pysetup"s                   z Sunbeam.setupc Cs|jd|dd|jd|d}|ddkrt|d}|d D]}|jd |d |d |d |d g|dd|jd |d |d}|ddkrFt|d}|dD]J}|d|d}|jd|d|d d|d|d g|ddqqFdS)Njuju controllersT)r r zjuju controllers --format jsonr r rrZ controllerszjuju models -c zjuju model-defaults -c zjuju controller-config -c z --format jsonZmodels:rzjuju status -m zjuju model-config -m )rrjsonloadskeys) ruserZjuju_controllersZjuju_ctrl_jsonZ controllerZ juju_modelsZjuju_status_jsonZmodelZ model_namerrr rs>      zSunbeam._get_juju_cmd_detailscCs*||jd|d|ddS)Nr r"zjuju controller-config)Zdo_file_private_subrZdo_cmd_private_sub)rrrr postprocs   zSunbeam.postprocN)__name__ __module__ __qualname__Z short_descZ plugin_nameZprofilesZpackagesrrstrboolZ option_listr!rr(rrrr rsd"r)r$rrZsos.report.pluginsrrrrrrrr  s