
    x[h              
          U d Z ddlZddlZddlZddlmZ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j0                  e      Zd Z	 ddededefdZdedede	deddf
dZ y)zEPackage Update Upgrade Install: update, upgrade, and install packages    N)signal_handler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                 D    |D ]  }t        j                  | |d      s y y)NFT)r   get_cfg_option_bool)cfgkeysks      T/usr/lib/python3/dist-packages/cloudinit/config/cc_package_update_upgrade_install.py_multi_cfg_bool_getr   (   s+     ##CE2     wait_attemptsinitial_sleepbackoffc                    t        j                         5  t        j                  t               ddd       t	        j
                         }|}t        |       D ]R  }t	        j                  |       ||z  }t	        j
                         |z
  }t        j                  dt        |             T t	        j
                         |z
  }t        dt        |      z        # 1 sw Y   xY w)z@Run a reboot command and panic if it doesn't happen fast enough.Nz,Rebooted, but still running after %s secondsz'Reboot did not happen after %s seconds!)r   suspend_crashr   
REBOOT_CMDtime	monotonicrangesleepLOGdebugintRuntimeError)r   r    r!   start	wait_time_ielapseds          r   _fire_rebootr1   /   s     
	%	%	' 		*NNEIM" P

9W	.."U*		@#g,O	P nn&G
1S\B  s   CC$namer   cloudargsreturnc                    t        |dd      }t        |dd      }t        |dd      }t        j                  |dg       }g }|s|r	 |j                  j	                          |r	 |j                  j                  d	       t        |      r	 |j                  j                  |       t        D ]%  }
t        j                  j                  |
      }|s% n |s|r4|r2r0	 t        j!                  d
       t#        t               t%                t        |      r$t        j'                  dt        |             |d   y # t
        $ r6}	t        j                  t        d       |j                  |	       Y d }	~	d }	~	ww xY w# t
        $ r6}	t        j                  t        d
       |j                  |	       Y d }	~	9d }	~	ww xY w# t
        $ r7}	t        j                  t        d|       |j                  |	       Y d }	~	Ud }	~	ww xY w# t
        $ r6}	t        j                  t        d       |j                  |	       Y d }	~	1d }	~	ww xY w)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
   r1   warning)r2   r   r3   r4   updater9   reboot_if_requiredpkglisterrorsereboot_markerreboot_fn_existss               r   handlerQ   E   s    l4DEF!#'8-HG,%'C &&sJ;GF	LL//1
 	LL((3
 7|	LL))'2 & 77>>-8 	7 27G
	HHI
 #N
 6{@#f+	
 Rj	 S  	KK45MM!	  	KK56MM!	  	KKF MM!		.  	KK?@MM!	s`   D; #E= 
F? /H ;	E:+E55E:=	F<+F77F<?	G?,G::G?	I+H<<I)         )!__doc__loggingrE   r%   	cloudinitr   r   r   cloudinit.cloudr   cloudinit.configr   cloudinit.config.schemar   cloudinit.distrosr	   cloudinit.log.loggersr
   cloudinit.settingsr   rD   r$   r   __annotations__	getLogger__name__r)   r   r+   r1   strlistrQ    r   r   <module>rd      s    L  	  0 0 ! # . ) / +A
 .} 	j  g! DE+.=@,: :6 :% :t : :r   