܍~cdZddlZddlmZddlmZmZ ddlmZm Z m Z m Z dZ n #e $rdZ YnwxYwgdZd Zd Zd efd Zdd ZddZddZddZddZdZdZdS)zCloud-init apport interfaceN)read_cfg_paths)INSTALLER_APPORT_FILES INSTALLER_APPORT_SENSITIVE_FILES) attach_fileattach_file_if_existsattach_root_command_outputsroot_command_outputTF)"AliYunAltCloudz Amazon - Ec2AzureBigstep Brightbox CloudSigma CloudStack DigitalOceanE24CloudzGCE - Google Compute Enginez Huawei CloudExoscalez Hetzner CloudNWCSz IBM - (aka SoftLayer or BlueMix)LXDMAASNoCloud OpenNebula OpenStackOracleOVFz'RbxCloud - (HyperOne, Rootbox, Rubikon)OpenTelekomCloudzSAP Converged CloudScalewaySmartOSUpCloudVMwareVultrZStackOutscaleOtherz/var/log/cloud-init.logz/var/log/cloud-init-output.logreturncHt}|dS)N userdata_raw)r get_ipath_cur)pathss 2/usr/lib/python3/dist-packages/cloudinit/apport.py_get_user_data_filer+Fs!   E   ~ . ..cpt|dddtgdt|dddS)zBAttach cloud-init logs and tarfile from 'cloud-init collect-logs'.z-egrep -i "warn|error" /var/log/cloud-init.logz"cat /var/log/cloud-init-output.log)zcloud-init-log-warningszcloud-init-output.log.txt)z cloud-initz collect-logsz-t/tmp/cloud-init-logs.tgzr.zlogs.tgzN)rr rreportuis r*attach_cloud_init_logsr2Ksb@)M   HHH2J?????r,cdd}|r)||rt|ddidSdSdS)z*Optionally attach hardware info from lshw.zYour device details (lshw) may be useful to developers when addressing this bug, but gathering it requires admin privileges. Would you like to include this info?zlshw.txtlshwN)yesnor)r0r1prompts r* attach_hwinfor7\s^ 0  BbhhvB#FZ,@AAAAABBBBr,c|r`d}||}|t|r@d}||t}|rt|d|d<dSd|d<dSdSdS)z&Prompt for cloud details if available.z/Is this machine running in a cloud environment?NzOPlease select the cloud vendor or environment in which this instance is runningr CloudNameNone)r5 StopIterationchoiceKNOWN_CLOUD_NAMES)r0r1r6responses r*attach_cloud_infor?gs -B88F##     -, yy):;;H -&7 &D{###&,{###-- - -r,ctD]<}tj|j}t |||j=dS)a Attach any subiquity installer logs config. To support decoupling apport integration from installer config/logs, we eventually want to either source this function or APPORT_FILES attribute from subiquity and/or ubuntu-desktop-installer package-hooks python modules. N)rospathrealpathrlabel)r0r1 apport_filerCs r*attach_installer_filesrFzsQ.CC 7##K$455fh 0ABBBBCCr,c|rt}d|}||}|t|rvtj|}t||dtD]@}tj|j}t|||j =dSdSdS)z(Optionally provide user-data if desired.zYour user-data, cloud-config or autoinstall files can optionally be provided from {0} and could be useful to developers when addressing this bug. Do you wish to attach user-data to this bug?Nz user_data.txt) r+formatr5r;rArBrCrrrrD)r0r1user_data_filer6r>rCrEs r*attach_user_datarJs K,.. F>**  88F##     Kw''77H / : : :? K K 7++K,<==%fh 8IJJJJ!KK K K K Kr,cg}|dr|d|dr|dd|vr!|d}d|vr|d|dr|d |rS|d d |d r|d xxd z cc<|d xxd |z cc<d Sd S)z$Add any appropriate tags to the bug. CurtinErrorcurtin SubiquityLog subiquity JournalErrorszBreaking ordering cyclezsystemd-orderingUdiLogzubuntu-desktop-installerTags N)getappendkeys setdefaultjoin)r0new_tagserrorss r* add_bug_tagsr\s%H zz-  "!!! zz.!!% $$$&++--''( $ . . OO. / / / zz(42333-&"%%% &> " 6NNNc !NNNv#((8,,, --r,ctstdt||t||t ||t ||t ||t|dS)a-This is an entry point to run cloud-init's apport functionality. Distros which want apport support will have a cloud-init package-hook at /usr/share/apport/package-hooks/cloud-init.py which defines an add_info function and returns the result of cloudinit.apport.add_info(report, ui). z;No apport imports discovered. Apport functionality disabledT) has_apport RuntimeErrorr2r7r?rJrFr\r/s r*add_infor`s   I   62&&&&"fb!!!VR   62&&& 4r,)N)__doc__rAcloudinit.cmd.develrcloudinit.cmd.devel.logsrrapport.hookutilsrrrr r^ ImportErrorr= CLOUDINIT_LOGCLOUDINIT_OUTPUT_LOGstrr+r2r7r?rFrJr\r`r,r*rjs "! ...... JJJJJ###L* 7/S//// @@@@"BBBB----& C C C CKKKK*---(s %//