
    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$??8H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  II?EIIg*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   GGM2&E		&.1I		&#&IyHwy599Z3HIJ ((HMX-t''(?@A!!#I
9~		>	N		
 	I.ii	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   