Ë
    x[hü  ã            
       óÚ   — U d Z ddlZddlZddlm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  ej$                  e«      Zd
egeg dœZeed<   dd„Zd„ Zdedede	deddf
d„Zy)z%Seed Random: Provide random seed dataé    N)ÚBytesIO)ÚsubpÚutil)ÚCloud)ÚConfig)Ú
MetaSchema)ÚALL_DISTROS)ÚPER_INSTANCEÚcc_seed_random)ÚidÚdistrosÚ	frequencyÚactivate_by_schema_keysÚmetac                 ó  — | sy|r|j                  «       dv rt        j                  | «      S |j                  «       dv rt        j                  | «      S |j                  «       dv rt        j
                  | dd ¬«      S t        d|z  «      ‚)Nó    )Úraw)Úbase64Úb64)ÚgzipÚgzF)ÚquietÚdecodez Unknown random_seed encoding: %s)Úlowerr   Úencode_textr   Ú	b64decodeÚdecomp_gzipÚIOError)ÚdataÚencodings     úA/usr/lib/python3/dist-packages/cloudinit/config/cc_seed_random.pyÚ_decoder"       s€   € ÙØÙ�x—~‘~Ó'¨7Ñ2Ü×Ñ Ó%Ð%Ø	�‰Ó	Ð.Ñ	.Ü×Ñ Ó%Ð%Ø	�‰Ó	˜^Ñ	+Ü×Ñ ¨E¸$Ô?Ð?äÐ8¸HÑEÓFÐFr   c                 ó  — | s|rt        d«      ‚| st        j                  d«       y | d   }t        j                  |«      s4|rt        dj                  |¬«      «      ‚t        j                  d|«       y t        j                  | |d¬«       y )	Nz"no command found but required=truezno command providedr   z+command '{cmd}' not found but required=true)Úcmdz'command '%s' not found for seed_commandF)Ú
update_envÚcapture)Ú
ValueErrorÚLOGÚdebugr   ÚwhichÚformat)ÚcommandÚrequiredr%   r$   s       r!   Úhandle_random_seed_commandr.   -   s   € Ù‘xÜÐ=Ó>Ð>ÙÜ�	‰	Ð'Ô(Øà
�!‰*€CÜ�:‰:�cŒ?ÙÜØ=×DÑDÈÐDÓMóð ô �I‰IÐ?ÀÔEØÜ‡I�Iˆg *°eÖ<r   ÚnameÚcfgÚcloudÚargsÚreturnc                 óÆ  — |j                  di «      }|j                  dd«      }|j                  dd«      }t        «       }|r+|j                  t        ||j                  d«      ¬«      «       |j                  j
                  }|r+d|v r'|j                  t        j                  |d   «      «       |j                  «       }t        |«      r7t        j                  d| t        |«      |«       t        j                  ||«       |j                  d	d «      }	|j                  d
d«      }
	 t        |	|
d|i¬«       y # t        $ r}t        j                  d|	|«       |‚d }~ww xY w)NÚrandom_seedÚfilez/dev/urandomr   r   r    )r    z0%s: adding %s bytes of random seed entropy to %sr,   Úcommand_requiredFÚRANDOM_SEED_FILE)r,   r-   r%   z'handling random command [%s] failed: %s)Úgetr   Úwriter"   Ú
datasourceÚmetadatar   r   ÚgetvalueÚlenr(   r)   Úappend_filer.   r'   Úwarning)r/   r0   r1   r2   ÚmycfgÚ	seed_pathÚ	seed_dataÚseed_bufr<   r,   ÚreqÚes               r!   ÚhandlerG   @   s8  € Ø�G‰G�M 2Ó&€EØ—	‘	˜& .Ó1€IØ—	‘	˜& #Ó&€Iä‹y€HÙØ�‰”w˜y°5·9±9¸ZÓ3HÔIÔJð ×Ñ×(Ñ(€HÙ�M XÑ-Ø�‰”t×'Ñ'¨°Ñ(?Ó@ÔAà×!Ñ!Ó#€IÜ
ˆ9„~Ü�	‰	Ø>ØÜ�	‹NØô		
ô 	×Ñ˜ IÔ.à�i‰i˜	 4Ó(€GØ
�)‰)Ð&¨Ó
.€CðÜ"ØØØ*¨IÐ6ö	
øô
 ò Ü�‰Ð=¸wÈÔJØˆûðús   Ä(D9 Ä9	E ÅEÅE )N)Ú__doc__r   ÚloggingÚior   Ú	cloudinitr   r   Úcloudinit.cloudr   Úcloudinit.configr   Úcloudinit.config.schemar   Úcloudinit.distrosr	   Úcloudinit.settingsr
   Ú	getLoggerÚ__name__r(   r   Ú__annotations__r"   r.   ÚstrÚlistrG   © r   r!   ú<module>rW      sˆ   ðò ,ã Û Ý ç  Ý !Ý #Ý .Ý )Ý +à€g×Ñ˜Ó!€ð Øˆ}ØØ!ñ	€€jó ó
Gò=ð&#�ð #˜6ð #¨%ð #°tð #Àô #r   