x[h,FddlZddlZddlmZmZmZmZddlmZm Z ddl m Z ddl m Z ddlmZej eZdZdeiZd Zd Zd Zed eDZGd dej4ej6ZdZdZddZdZ ddZ!eZ"eejFffgZ$dZ%y)N) lifecyclesourcessubputil) EventScope EventType)eni)get_ibm_platform) openstackziid-dsconfigdrive instance-id)vfatiso9660)zconfig-2zCONFIG-2)srcdc#JK|]}tdD] }d|| yw)z/dev/N)range).0zis I/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceConfigDrive.py rs&EaE!HEqAqEEs!#ceZdZdZej ejejejejhiZ fdZ dZ dZdZedZedZdZxZS) DataSourceConfigDrive ConfigDrivectt| |||d|_tj j |jd|_d|_d|_ d|_ tj|_ d|_d|_i|_y)N config_drive)superr__init__sourceospathjoinseed_dirversion ec2_metadata_network_configrUNSET network_json network_eni known_macsfiles)selfsys_cfgdistropaths __class__s rrzDataSourceConfigDrive.__init__.sq #T3GVUK  U^^^D   ##MM ctjj|}|d|jd|jd}|d|j zz }|S)Nz [z,ver=]z [source=%s])r DataSource__str__dsmoder%r )r-rootmstrs rr6zDataSourceConfigDrive.__str__:sD!!))$/#'dllC -- r2cd}i}i}|jdfD]1}tjj|s# t |}|}n|sx|jjd}t|D]N}d}tjr|jdrd} tj|t|}|}|sNn|sy |jd i}tj$|t&g}|j)|jd |j*jd |d d k(rt,j.ndg|_|j0t,j2k(ry t5|j6}|d} || k7r3t9||j:|j0t,j.k(|j0t,j.k(r"tj=d||j0y ||_||_ |jd|_!|jd|_"|d |_#|jHjK|jdi|jd} t-jL| |_'|jd} t-jL| |_*|jd|_+|jd|_,y#t j $rtjtd|Y wxYw#t j $rY}tj $rYt j"$rtjtd|YwxYw#tP$r(} tjSd| d|_'Yd} ~ d} ~ wwxYw#tP$r(} tjSd| d|_*Yd} ~ !d} ~ wwxYw)Nz /config-drivez#Failed reading config drive from %sdatasource_list)dslistz/dev/cdcd9660)mtypezBroken config drive: %sFmetadatar7r%r )r/networkz&%s: not claiming datasource, dsmode=%sz ec2-metadatauserdatar, vendordataz"Invalid content in vendor-data: %s vendordata2z#Invalid content in vendor-data2: %snetwork_config networkdataT)-r$r!r"isdirread_config_driver NonReadablerlogexcLOGr.getfind_candidate_devsis_BSD startswithmount_cbMountFailedErrorBrokenMetadata mergemanydictDEFAULT_METADATA_determine_dsmodeds_cfgr DSMODE_PASSr7DSMODE_DISABLEDget_previous_iidr0 on_first_bootr/debugr r?r& userdata_rawr%r,updateconvert_vendordatavendordata_raw ValueErrorwarningvendordata2_rawr*r)) r-foundmdresultssdirr<devr>prev_iidcur_iidvdevd2s r _get_datazDataSourceConfigDrive._get_data@so ]]O4 ND77==& N+D1  N\\%%&78F*&9 ;;=~~i0 ( E"mm.eG E# $ [[R (   %5 6 7,, H% )'.y'9Q'>##D    ;;'11 1#DJJ/]# w  {{ w':'::  ;;'-- - II8$    #KK7#KK 3y)  '++gr23 [[ & '")"<"DEh ' KK?###r2cy)Nr rzs rplatformzDataSourceConfigDrive.platformsr2cf|jjdrd}nd}|d|jdS)z/Return the subplatform metadata source details.z/devz config-diskzseed-dirz ())r rO)r-subplatform_types r_get_subplatformz&DataSourceConfigDrive._get_subplatforms/ ;; ! !& ), ) ,dkk::r2)__name__ __module__ __qualname__dsnamerNETWORKrBOOT_NEW_INSTANCEBOOT BOOT_LEGACYHOTPLUGsupported_update_eventsrr6rmrrpropertyrEr}r __classcell__)r1s@rrr!s F   ' ' NN  ! !       bHO$$,;r2rctj|}|jgif|jgifg}g}|D]\}}} ||i|cS|d#tj$r}|j |Yd}~Ad}~wwxYw)N)r ConfigDriveReaderread_v2read_v1rIappend) source_dirreaderfindersexcpsfunctorargskwargsrks rrHrHs  ( ( 4F R R G E!(v D+F+ + )O$$  LLOO sAA>#A99A>ctjj|jdd} t j |j dS#t$rYywxYw)Ndatar  )r!r"r# get_cpathrload_text_filerstripIOError)r0fnames rrYrYsT GGLL0- @E""5)0066 s#A A! A!c(t|tstdt|z|rO|j dd}|r;|r9t j d|jtj|t|j dy)zDPerforms any first-boot actions using data read from a config-drive.z/Config-drive data expected to be a dict; not %srEz-Updating network interfaces from config driver,N) isinstancedict TypeErrortyperLrKraapply_network_configr rxwrite_injected_files)rr/rAnet_confs rrZrZsw dD ! =d L  88,b1  KKG H  ' '(<(  F  F C!:HE Fs+B$B.-B.c|g}|r"tD]} tj|g}t D])}|j tjd|z+g}tD])}|j tjd|z+|jd|jd||Dcgc] }||vs| c}z}|Dcgc]}||vstj|r| } }tjd| || r=d|vr9t\} } | | vr(| j| tjd| | | S#tj$rYWwxYwcc}wcc}w) aReturn a list of devices that may contain the config drive. The returned list is sorted by search order where the first item has should be searched first (highest priority) config drive v1: Per documentation, this is "associated as the last available disk on the instance", and should be VFAT. Currently, we do not restrict search list to "last available disk" config drive v2: Disk should be: * either vfat or iso9660 formatted * labeled with 'config-2' or 'CONFIG-2' )r"zTYPE=%szLABEL=%sT)reversezdevices=%s dslist=%sIBMCloudz5IBMCloud device '%s' (%s) removed from candidate list)OPTICAL_DEVICESrfind_devs_withrProcessExecutionErrorFS_TYPESextend LABEL_TYPESsort is_partitionrKr[r remove) probe_opticalr<device by_fstypefs_typeby_labellabeld candidatesdevices ibm_platformibm_paths rrMrMs ~% F ##0  IE,,Y'-BCDEHC++J%,@ABC NN4N  MM$M G1Qh5FQGGJ hd6G6G6JGII$gv6:'!1!3 h w  NN8 $ IIG  NM--  $Hs)E: E(E(E-0E-E%$E%c6tj|tSro)rlist_from_depends datasources)dependss rget_datasource_listrKs  $ $Wk ::r2)NT)TN)&loggingr! cloudinitrrrrcloudinit.eventrr cloudinit.netr $cloudinit.sources.DataSourceIBMCloudr cloudinit.sources.helpersr getLoggerrrK DEFAULT_IIDrTrrPOSSIBLE_MOUNTStupler SourceMixinr5rrHrYrZrrMDataSourceConfigDriveNetDEP_FILESYSTEMrrr|r2rrs 441A/g!" ; & E?E h;I1173E3Eh;V  , F>D1W3356 ;r2