
    쑛hE              
           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j.                  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)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                   t               t        j                         }|}t	        |       D ]R  }t        j
                  |       ||z  }t        j                         |z
  }t        j                  dt        |             T t        j                         |z
  }t        dt        |      z        )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elapseds          r   _fire_rebootr/   /   s     	IIjNNEIM" P

9W	.."U*		@#g,O	P nn&G
1S\B r   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	   r/   warning)r0   r   r1   r2   updater7   reboot_if_requiredpkglisterrorsereboot_markerreboot_fn_existss               r   handlerO   B   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__loggingrC   r#   	cloudinitr   r   cloudinit.cloudr   cloudinit.configr   cloudinit.config.schemar   cloudinit.distrosr   cloudinit.log.loggersr	   cloudinit.settingsr
   rB   r"   r   __annotations__	getLogger__name__r'   r   r)   r/   strlistrO    r   r   <module>rb      s    L  	    ! # . ) / +A
 .} 	j  g! DE+.=@&: :6 :% :t : :r   