0 '®a '¡Dgî?ã@s8ddlZddlZddlZddlmZddlmZmZmZm Z ddl m Z e  e ¡ZGdd„dejƒZddd„Zdd d „Zdd d „Zd d„ZGdd„deƒZeejffeejejffgZdd„Ze dk�r4ddlmZejejd�edZe  e¡\Z Z!Z"Z#e$de ›�ƒe$de!›�ƒe$de"›�ƒe$de#›�ƒdS)éN)Úpartial)ÚdmiÚ lifecycleÚsourcesÚutil)ÚenicsveZdZdZdd„Z‡fdd„Zdd„Zdd „Zed d „ƒZ e d œd d„Z dd„Z dd„Z dd„Zedd„ƒZ‡ZS)ÚDataSourceNoCloudÚNoCloudcCsVtj ||||¡d|_tj |jd¡tj |jd¡g|_d|_d|_ d|_ d|_ dS)NÚnocloudú nocloud-net)ú/úfile://) rÚ DataSourceÚ__init__ÚseedÚosÚpathÚjoinÚseed_dirÚ seed_dirsÚsupported_seed_startsÚ_network_configÚ _network_eni©ÚselfÚsys_cfgZdistroÚpaths©rúG/usr/lib/python3.9/site-packages/cloudinit/sources/DataSourceNoCloud.pyrsþzDataSourceNoCloud.__init__csDtƒ ¡d|jr d|j›d�nd|jtjkr>d|j›d�ndS)z@append seed and dsmode info when they contain non-default valuesú z[seed=ú]Úz[dsmode=)ÚsuperÚ__str__rÚdsmoderÚDSMODE_NETWORK©r©Ú __class__rrr#&sÿþ ÿúÿzDataSourceNoCloud.__str__cCs|t d¡}| t d¡¡t d| ¡¡}| t d| ¡¡¡| t d|¡¡tt|ƒt|ƒ@ƒ}|jdd�|S)Nz TYPE=vfatz TYPE=iso9660zLABEL=%szLABEL_FATBOOT=%sT)Úreverse)rZfind_devs_withÚextendÚupperÚlowerÚlistÚsetÚsort)rÚlabelZfslistZ label_listZdevlistrrrÚ _get_devices3s  zDataSourceNoCloud._get_devicesc Csd|jdœ}g}iddddœ}z8i}t d¡}|rTt||ƒrT| d¡t|d|iƒ}Wn tyvt t d¡Yd S0z(i}t|ƒrž| d ¡t|d|iƒ}Wn tyÀt t d ¡Yd S0d dgd dgdœ}|j D]X}z>tj |fi|¤Ž}| |¡t   d|¡t||ƒ}W�q4WqÚt �y0YqÚ0qÚ|j d¡�r^| d¡|jd|dd<d |jv�rŒd|jv�rŒt||jƒ}| d¡dd„} |j dd¡} | du�r¬|  ¡dk�rÊtjdddd�| | ¡D]Ö} zvt   d| ¡zt | | |¡}Wn*t �y"t  d| | ¡YW�qÔYn0t||ƒ}t   d| ¡| | ¡W�q¬WnXt�y„} z| jtjk�rp‚WYd} ~ n,d} ~ 0tj�y¦t t d| ¡Yn0�qÔt|ƒd k�r¾d Sd|dv�rx|dd} d }|jD]}|  |¡�râ|}�q�qâ|�s| | ¡d St | ¡} tj| dd!�\}}}}t   d"| ¡t  |d|g¡|d<||d <||d <||d<| | ¡t  |d|g¡|d<| !|d d#¡g¡|_|jt"j#k�rÈt   d$||j¡d Sd% $|¡|_%|d|_&|d |_'|d |_(|d|_)|d d&¡|_*d'S)(Nr )ú instance-idr$r!)ú meta-dataú user-dataú vendor-dataúnetwork-configúsystem-serial-numberrr3zUnable to parse dmi dataFÚcmdlinez!Unable to parse command line datar4r5r6)ÚrequiredZoptionalzUsing seeded data from %sÚseedfromZds_config_seedfromZ ds_configcSstj|fi|¤ŽS©N)rÚpathprefix2dict)ZmpÚdatarrrÚ_pp2d_callback€sz3DataSourceNoCloud._get_data.._pp2d_callbackZfs_labelZcidatazCustom fs_label keysú24.3z(This key isn't supported by ds-identify.©Z deprecatedZdeprecated_versionZ extra_messagezAttempting 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 datar)ÚtimeoutzUsing seeded cache data from %sr$z&%s: not claiming datasource, dsmode=%sú,znetwork-interfacesT)+r$rÚ read_dmi_dataÚload_cmdline_dataÚappendÚ_merge_new_seedÚ ExceptionrZlogexcÚLOGrr<ÚdebugÚ ValueErrorZds_cfgÚgetr,rÚ deprecater1Zmount_cbÚwarningÚOSErrorÚerrnoÚENOENTZMountFailedErrorÚlenrÚ startswithÚ_log_unusable_seedfromZ sub_dmi_varsÚ read_seededÚ mergemanydictZ_determine_dsmoderZDSMODE_D