o
    ÷¢iE  ã                
   @   sê   U d Z ddlZddlZddlZddlmZmZ ddlmZ ddl	m
Z
 ddlmZ ddlmZ ddlmZ dd	lmZ d
ZdgZdegeg d¢dœZeed< e e¡Zdd„ Z	d!dededefdd„Zdede
dededdf
dd „ZdS )"zEPackage Update Upgrade Install: update, upgrade, and install packagesé    N)ÚsubpÚutil)ÚCloud)ÚConfig)Ú
MetaSchema)ÚALL_DISTROS)Úflush_loggers)ÚPER_INSTANCE)z/var/run/reboot-requiredz/run/reboot-neededz/sbin/rebootÚ!cc_package_update_upgrade_install)Ú
apt_updateÚpackage_updateÚapt_upgradeÚpackage_upgradeÚpackages)ÚidÚdistrosÚ	frequencyÚactivate_by_schema_keysÚmetac                 G   s"   |D ]}t  | |d¡r dS qdS )NFT)r   Úget_cfg_option_bool)ÚcfgÚkeysÚk© r   úT/usr/lib/python3/dist-packages/cloudinit/config/cc_package_update_upgrade_install.pyÚ_multi_cfg_bool_get(   s
   ÿr   é   é   é   Úwait_attemptsÚinitial_sleepÚbackoffc                 C   sn   t   t¡ t ¡ }|}t| ƒD ]}t |¡ ||9 }t ¡ | }t dt|ƒ¡ qt ¡ | }t	dt|ƒ ƒ‚)z@Run a reboot command and panic if it doesn't happen fast enough.z,Rebooted, but still running after %s secondsz'Reboot did not happen after %s seconds!)
r   Ú
REBOOT_CMDÚtimeÚ	monotonicÚrangeÚsleepÚLOGÚdebugÚintÚRuntimeError)r   r    r!   ÚstartÚ	wait_timeÚ_iÚelapsedr   r   r   Ú_fire_reboot/   s   


ÿr/   Únamer   ÚcloudÚargsÚreturnc              
   C   sÚ  t |ddƒ}t |ddƒ}t |ddƒ}t |dg ¡}g }|s|rDz|j ¡  W n tyC }	 zt td¡ | |	¡ W Y d }	~	nd }	~	ww |rlz|j 	d	¡ W n tyk }	 zt td
¡ | |	¡ W Y d }	~	nd }	~	ww t
|ƒr—z|j |¡ W n ty– }	 zt td|¡ | |	¡ W Y d }	~	nd }	~	ww tD ]}
tj |
¡}|r¥ nq™|sª|rÛ|rÛ|rÛzt d|
¡ ttƒ tƒ  W n tyÚ }	 zt td¡ | |	¡ W Y d }	~	nd }	~	ww t
|ƒrët dt
|ƒ¡ |d ‚d S )Nr   r   r   r   Úapt_reboot_if_requiredÚpackage_reboot_if_requiredr   zPackage update failedÚupgradezPackage upgrade failedz/Failure when attempting to install packages: %sz7***WARNING*** Rebooting after upgrade or install per %sz Requested reboot did not happen!z2%s failed with exceptions, re-raising the last oneéÿÿÿÿ)r   r   Úget_cfg_option_listÚdistroÚupdate_package_sourcesÚ	ExceptionÚlogexcr'   ÚappendÚpackage_commandÚlenÚinstall_packagesÚREBOOT_FILESÚosÚpathÚisfileÚinfor   r/   Úwarning)r0   r   r1   r2   Úupdater6   Úreboot_if_requiredÚpkglistÚerrorsÚeÚreboot_markerÚreboot_fn_existsr   r   r   ÚhandleB   sr   ÿ€þ€þÿ€ü
ÿþ
€þÿürN   )r   r   r   ) Ú__doc__ÚloggingrB   r#   Ú	cloudinitr   r   Úcloudinit.cloudr   Úcloudinit.configr   Úcloudinit.config.schemar   Úcloudinit.distrosr   Úcloudinit.log.loggersr   Úcloudinit.settingsr	   rA   r"   r   Ú__annotations__Ú	getLoggerÚ__name__r'   r   r)   r/   ÚstrÚlistrN   r   r   r   r   Ú<module>   s:   ü
ÿÿÿ
ÿ"