3 ܓi@sBddlZddlZddlZddlmZmZmZGdddeeZdS)N)Plugin UbuntuPlugin PluginOptc@sXeZdZdZdZdZdZdZedde dd ed d e d d gZ d dZ ddZ ddZdS)SunbeamzSunbeam Openstack ControllerZsunbeamcloud openstackz/var/snap/openstack/commonz sunbeam-userZubuntuz&The user used for sunbeam installation)defaultZval_typeZdesczjuju-allow-loginFzAllow sos to login to jujucCsj|jd|j|jd|jd|jd|jd|jddg|jd}ytj|}Wn&tk r|jd |d dSX|rf|jd d d dgd|d|j d|d}|ddkrt j |d}x&|D]}|jd|dd|dqW|j d|d}|ddkr^t j |d}x<|dD]0}|jd|dd|ddgd|dq*W|j d} |j| d| d| d | d!| d"g|jd#r|j d$|d%|j d&|d} |j d'|d(d)} d*} | ddks| ddkrVyF| djd} | djd}d+| ks.d+|kr<|j|d} Wntk rTYnX| sf|jd,dS)-Nzsnap.openstack.*z /hooks.logz/state/daemon.yamlz#/state/truststore/sunbeam.maas.yamlz/state/database/info.yamlz/state/database/cluster.yamlz'/var/snap/openstack/current/config.yamlz sunbeam-userzUser "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 sunbeamzsunbeam cluster listz"sunbeam cluster list --format yamlzsunbeam manifest listzsunbeam deployment listT)snap_cmdrunasz#sunbeam manifest list --format yaml)r 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/*.yamlzjuju-allow-loginzsu - z -c "sunbeam utils juju-login"z juju whoamiz juju status)r ZtimeoutFZ 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_rawr Z deploymentZsb_snap_homedirZ juju_whoamiZ juju_statusZ logged_inZj_whoamiZj_statusr/usr/lib/python3.6/sunbeam.pysetup"s               z Sunbeam.setupc Cs|jd|dd|jd|d}|ddkr tj|d}x|d jD]}|jd |d |d |d |d g|dd|jd |d |d}|ddkrHtj|d}xV|dD]J}|d|d}|jd|d|d d|d|d g|ddqWqHWdS)Nzjuju controllersT)r r zjuju controllers --format json)r r rr Z 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_namerrrrs2       zSunbeam._get_juju_cmd_detailscCs*|j|jd|jd|jddS)Nz#/state/truststore/sunbeam.maas.yamlzjuju controllerszjuju controller-config)Zdo_file_private_subrZdo_cmd_private_sub)rrrrpostprocs zSunbeam.postprocN)r)r)__name__ __module__ __qualname__Z short_descZ plugin_nameZprofilesZpackagesrrstrboolZ option_listrrr$rrrrrs d"r)r rrZsos.report.pluginsrrrrrrrr s