܍~c0ddlZddlZddlmZddlmZddlmZmZddlm Z ej e Z Gddej ZddZdd Zdd Zd ZGd d eZeejffeejejffgZdZdS)N)dmi)log)sourcesutil)enicheZdZdZdZdZdZdZedZ dZ dZ d Z ed Z d S) DataSourceNoCloudNoCloudctj||||d|_tj|jdtj|jdg|_d|_d|_ dS)Nnocloudz nocloud-net)/zfile://) r DataSource__init__seedospathjoinseed_dir seed_dirssupported_seed_startsselfsys_cfgdistropathss E/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceNoCloud.pyrzDataSourceNoCloud.__init__sp##D'65AAA GLL 3 3 GLL 7 7  %5"""cjtj|}|d|jd|jdS)Nz [seed=z ][dsmode=])rr__str__rdsmode)rroots rr zDataSourceNoCloud.__str__$s5!))$//,0DD$)))T[[[IIrctjd}|tjdtjd|z}|tjd|z|tjd|zt t |t |z}|d|S)Nz TYPE=vfatz TYPE=iso9660zLABEL=%szLABEL_FATBOOT=%sT)reverse)rfind_devs_withextendupperlowerlistsetsort)rlabelfslist label_listdevlists r _get_deviceszDataSourceNoCloud._get_devices(s$[11 d).99:::(ekkmm)CDD $-j5;;==.HIIJJJ$-.@5.HIIJJJs6{{S__455 T """rc d|jd}g}idddd} i}tjd}|r7t||r'|dt |d|i}n+#t $rtjtdYd SwxYw i}t|r'|d t |d|i}n+#t $rtjtd Yd SwxYwd dgd dgd}|j D]f} tj |fi|}||t d|t ||}n#t$rYcwxYw|jdr+|d|jd|dd<d |jvr3d|jvr*t ||j}|dd} |jdd} | || D]} t d|  tj| | |}n,#t$rtd| | Y^wxYwt ||}t d| || nX#t&$r } | jt(jkrYd} ~ d} ~ wtj$rtjtd| YwxYwt/|dkrd Sd|dvr|dd} d }|jD]}| |r|}n|st d| |d Stj| d\}}}t d| tj|d|g|d<||d <||d <|| tj|d|g|d<||ddg|_|jt:jkr#t d ||jd Sd!||_ |d|_!|d |_"|d |_#|d|_$|dd"|_%d#S)$Nr ) instance-idr!) meta-data user-data vendor-datanetwork-configzsystem-serial-numberrr4zUnable to parse dmi dataFcmdlinez!Unable to parse command line datar5r6r7)requiredoptionalzUsing seeded data from %sseedfromds_config_seedfrom ds_configc&tj|fi|SN)rpathprefix2dict)mpdatas r_pp2d_callbackz3DataSourceNoCloud._get_data.._pp2d_callbackus'33d33 3rfs_labelcidatazAttempting to use data from %sz)device %s with label=%s not a valid seed.zUsing data from %sz(Failed to mount %s when looking for datarz Seed from %s not supported by %s)timeoutzUsing seeded cache data from %sr!z&%s: not claiming datasource, dsmode=%s,znetwork-interfacesT)&r!r read_dmi_dataload_cmdline_dataappend_merge_new_seed ExceptionrlogexcLOGrr@debug ValueErrords_cfggetr0mount_cbwarningOSErrorerrnoENOENTMountFailedErrorlenr startswith read_seeded mergemanydict_determine_dsmoderDSMODE_DISABLEDrrmetadata userdata_rawvendordata_raw_network_config _network_eni)rdefaultsfoundmydatamdserial pp2d_kwargsrseededrCr,dever; seedfoundprotomd_seedudvds r _get_datazDataSourceNoCloud._get_data4s$k   "    B&'=>>F D+B77 D U###(+r1BCC    K7 8 8 855  B $$ D Y'''(+r1BCC    K@ A A A55  %k2&(89  N  D -dBBkBB T""" 5t<<<(88     ;??: & & F LL- . . ..2k*.EF;  + $+ % %+*D*D$VT[99F LL % % % 4 4 4  H55  ((//  II>DDD !!%""&!!! G! ! !-VV<A.. A;:A;cdtjfdtjfg}|D]"\}}t|||r d|vr||d<dS#dS)Nz ds=nocloudzds=nocloud-netr!TF)r DSMODE_LOCALDSMODE_NETWORKparse_cmdline_data)rr8pairsidstrr!s rrIrIsq w+, 712 E v eT7 3 3 t##!'X44   5rc|tj}d|z}d|z|vs d|z|vsdSd}|D]-}||r|dd}.|dd}t |dkr |dd}nd}d d d d }|D]I}|dkr |dd\} } n#t $r|} d} YnwxYw| |vr|| } | || <Jd S)Nz %s z %s;Fr3=;rzlocal-hostnamer2r;)hisT)r get_cmdlinesplitrZrYrL) ds_idrr8arglinetoktmpkvpairss2litemkvs rrr&sZ"$$wG UNg % %%7)B)BuG}}(( >>%  (iiQ''G !*  3  C 3xx!||abb'!}: F FC   2::  ZZQ''FQ   AAAA  88AAQ 4s<CC'&C'c|}|di}t|dtst j|d}t j|d|g|d<|dr*t j|d|d<d|vr |d|d<d|vr |d|d<|S)Nr4r7r5r6)copyrR isinstancedictrrr\)currjretnewmds rrKrKNs ((**C JJ{B ' 'E f[)4 0 04vk233)3{+;U*CDDC  zz"##M $vzz:J/K/K L L f!+.K#M2M JrceZdZdZdS)DataSourceNoCloudNetcNt||||d|_dS)N)zhttp://zhttps://)r rrrs rrzDataSourceNoCloudNet.__init__as*""4&%@@@%<"""rN)rrrrrrrrr`s#=====rrc6tj|tSr?)rlist_from_depends datasources)dependss rget_datasource_listrns  $Wk : ::rr?)rVr cloudinitrrloggingrr cloudinit.netr getLoggerrrNrr rrIrrKrDEP_FILESYSTEM DEP_NETWORKrrrrrrsi $$$$$$########g!!b$b$b$b$b$*b$b$b$J.    (%%%%P$=====,===/12G2G4GHI ;;;;;r