Ë
    [h”  ã            
       óä   — U d 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
dgeg dœZeed<    ej$                  e«      Zd„ Zdefd„Zdede	dededdf
d„Zde	defd„Zy)z5Grub Dpkg: Configure grub debconf installation deviceé    N)ÚsubpÚutil)ÚCloud)ÚConfig)Ú
MetaSchema)ÚPER_INSTANCE)ÚProcessExecutionErrorÚcc_grub_dpkgÚubuntuÚdebian)ÚidÚdistrosÚ	frequencyÚactivate_by_schema_keysÚmetac                  óò  — d} g }d}d}t        «       rd}d}	 t        j                  dd||gd¬	«      j                  j                  «       } | rt        j                  j!                  | «      sy	 t        j                  dddd| gd¬	«      j                  j                  «       j#                  «       }t        j                  ddj%                  |«      «       |D �cg c]	  }d|v sŒ|‘Œ }}t        j                  ddj%                  |«      «       |rt'        |«      d   n| }t        j                  d|«       |S # t        $ r`}t        |j                  t        «      rt        j                  d
«       n%d|j                  v rt        j                  d«       n‚ Y d}~�ŒQd}~wt        $ r t        j                  t        d«       Y �Œzw xY w# t        $ r t        j                  t        d| «       Y �Œ@w xY wc c}w )z‚
    Fetches the /dev/disk/by-id device grub is installed to.
    Falls back to plain disk name if no by-id entry is present.
    Ú Údiskz/bootÚdevicez	/boot/efiz
grub-probez-tT)Úcapturez'grub-probe' not found in $PATHzfailed to get canonical pathz)grub-probe 'failed to get canonical path'Nz*grub-probe failed to execute for grub_dpkgÚudevadmÚinfoz--rootz--query=symlinkz3udevadm DEVLINKS symlink query failed for disk='%s'z%considering these device symlinks: %sú,z
disk/by-idz)filtered to these disk/by-id symlinks: %sr   zselected %s)Úis_efi_bootedr   ÚstdoutÚstripr	   Ú
isinstanceÚreasonÚFileNotFoundErrorÚLOGÚdebugÚstderrÚ	Exceptionr   ÚlogexcÚosÚpathÚexistsÚsplitÚjoinÚsorted)r   ÚdevicesÚprobe_targetÚprobe_mountÚeÚdevÚidevss          ú?/usr/lib/python3/dist-packages/cloudinit/config/cc_grub_dpkg.pyÚfetch_idevsr2      s²  € ð
 €DØ€Gð €LØ€KÜ„ØˆØ!ˆðGä�y‰yØ˜4 ¨{Ð;ÀTô
ç
‰&—‘“ð 	ñ( ”r—w‘w—~‘~ dÔ+àð
ô �I‰IØ˜F HÐ.?ÀÐFØô÷ ‰V—E‘E“Gß‰U‹Wð 	ô ‡I�IÐ5°s·x±xÀÓ7HÔIà%Ö=�s¨¸Ò)<ŠsÐ=€GÐ=Ü‡I�IÐ9¸3¿8¹8ÀGÓ;LÔMá")ŒF�7‹O˜AÒ¨t€EÜ‡I�Iˆm˜UÔ#à€LøôY !ò ô �a—h‘hÔ 1Ô2Ü�I‰IÐ7Õ8ð
 ,¨q¯x©xÑ7Ü�I‰IÐAÕBð ÿùÜò GÜ�‰”CÐE×FðGûô" ò 
Ü�‰ÜÐFÈ÷	
ð
üò >s=   ˜3D8 Á.AG	 Ã	G4Ã#G4Ä8	GÅAFÆ&GÇGÇ	$G1Ç0G1Úreturnc                  óš   — 	 t         j                  j                  d«      S # t        $ r } t        j                  d| «       Y d} ~ yd} ~ ww xY w)z4
    Check if the system is booted in EFI mode.
    z/sys/firmware/efiz7Failed to determine if system is booted in EFI mode: %sNF)r%   r&   r'   ÚOSErrorr    Úerror)r.   s    r1   r   r   c   s=   € ðÜ�w‰w�~‰~Ð1Ó2Ð2øÜò Ü�	‰	ÐKÈQÔOäûðús   ‚! ¡	A
ªAÁA
ÚnameÚcfgÚcloudÚargsc                 ó¤  — |j                  d|j                  di «      «      }|si }|j                  dd«      }t        j                  |«      rt        j	                  d| |«       y t        |«      }t        j	                  d|«       	 t        j                  dg|¬«       y # t        $ r%}t        j                  t        d	|«       Y d }~y d }~ww xY w)
NÚ	grub_dpkgz	grub-dpkgÚenabledTz*%s disabled by config grub_dpkg/enabled=%sz-Setting grub debconf-set-selections with '%s'zdebconf-set-selections)Údataz6Failed to run debconf-set-selections for grub_dpkg: %s)	Úgetr   Úis_falser    r!   Úget_debconf_configr   r#   r$   )r7   r8   r9   r:   Úmycfgr=   Ú	dconf_selr.   s           r1   ÚhandlerD   o   s®   € Ø�G‰G�K §¡¨°bÓ!9Ó:€EÙØˆà�i‰i˜	 4Ó(€GÜ‡}�}�WÔÜ�	‰	Ð>ÀÀgÔNØä" 5Ó)€IÜ‡I�IÐ=¸yÔIð
Ü�	‰	Ð+Ð,°9Ö=øÜò 
Ü�‰ÜÐIÈ1÷	
ñ 	
ûð
ús   ÂB! Â!	CÂ*C
Ã
CrB   c                 óh  — t        «       r(t        j                  | dd«      }|€
t        «       }d|z  S t        j                  | dd«      }|€
t        «       }| j	                  d«      }|€| }n%t        |t        «      st        j                  |«      }t        |«      j                  «       }d|›d|›d�S )	zd
    Returns the debconf config for grub-pc or
    grub-efi depending on the systems boot mode.
    zgrub-efi/install_devicesNz+grub-pc grub-efi/install_devices string %s
zgrub-pc/install_deviceszgrub-pc/install_devices_emptyz'grub-pc grub-pc/install_devices string z/
grub-pc grub-pc/install_devices_empty boolean ú
)
r   r   Úget_cfg_option_strr2   r?   r   ÚboolÚtranslate_boolÚstrÚlower)rB   r0   Úidevs_emptys      r1   rA   rA   „   sµ   € ô
 „Ü×'Ñ'ØÐ-¨tó
ˆð ˆ=Ü“MˆEà=ÀÑEÐEä×'Ñ'¨Ð/HÈ$ÓOˆØˆ=Ü“MˆEà—i‘iÐ ?Ó@ˆØÐØ#˜)‰KÜ˜K¬Ô.Ü×-Ñ-¨kÓ:ˆKÜ˜+Ó&×,Ñ,Ó.‰ò ’kð#ð	
ó    )Ú__doc__Úloggingr%   Ú	cloudinitr   r   Úcloudinit.cloudr   Úcloudinit.configr   Úcloudinit.config.schemar   Úcloudinit.settingsr   Úcloudinit.subpr	   r   Ú__annotations__Ú	getLoggerÚ__name__r    r2   rH   r   rJ   ÚlistrD   rA   © rM   r1   ú<module>r[      s¥   ðò <ã Û 	ç  Ý !Ý #Ý .Ý +Ý 0ð Ø˜(Ð#ØØ!ñ	€€jó ð €g×Ñ˜Ó!€òAðH	�tó 	ð
�ð 
˜6ð 
¨%ð 
°tð 
Àó 
ð* 
˜fð  
¨ô  
rM   