o x[h,@sddlZddlZddlmZmZmZmZddlmZm Z ddl m Z ddl m Z ddlmZeeZdZdeiZd Zd Zd Zed d eDZGdddejejZddZddZdddZddZ dddZ!eZ"eej#ffgZ$ddZ%dS)N) lifecyclesourcessubputil) EventScope EventType)eni)get_ibm_platform) openstackziid-dsconfigdrive instance-id)vfatiso9660)zconfig-2zCONFIG-2)srcdccs*|]}tdD] }d||fVqqdS)z /dev/%s%sN)range).0zirI/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceConfigDrive.py s(rcsreZdZdZejejejej ej hiZ fddZ ddZ ddZdd Zed d Zed d ZddZZS)DataSourceConfigDrive ConfigDrivecs\tt||||d|_tj|jd|_d|_d|_ d|_ t j |_ d|_d|_i|_dS)N config_drive)superr__init__sourceospathjoinseed_dirversion ec2_metadata_network_configrUNSET network_json network_eni known_macsfiles)selfsys_cfgdistropaths __class__rrr.s zDataSourceConfigDrive.__init__cCs0tj|}d||j|jf}|d|j7}|S)Nz%s [%s,ver=%s]z [source=%s])r DataSource__str__dsmoder"r)r*rootmstrrrrr1:s zDataSourceConfigDrive.__str__c Csd}i}i}|jdfD]#}tj|sq z t|}|}Wntjy.tt d|Yq w|s|j d}t |dD]C}d}t rK|drKd}z tj|t|d}|}Wn#tjyaYntjyjYntjyztt d|Ynw|rnq<|sd S| d i}t|tg}|| d |j d |d d krtjndg|_|jtjkrd St|j}|d} || krt||j|jtjkd|jtjkrt d||jd S||_||_ | d|_!| d|_"|d |_#|j$%| di| d} zt&| |_'Wnt(y%} zt )d| d|_'WYd} ~ nd} ~ ww| d} zt&| |_*Wnt(yO} zt )d| d|_*WYd} ~ nd} ~ ww| d|_+| d|_,dS)Nz /config-drivez#Failed reading config drive from %sdatasource_list)dslistz/dev/cdcd9660)mtypezBroken config drive: %sFmetadatar2r"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!rrisdirread_config_driver NonReadablerlogexcLOGr+getfind_candidate_devsis_BSD startswithmount_cbMountFailedErrorBrokenMetadata mergemanydictDEFAULT_METADATA_determine_dsmodeds_cfgr DSMODE_PASSr2DSMODE_DISABLEDget_previous_iidr- on_first_bootr,debugrr9r# userdata_rawr"r)updateconvert_vendordatavendordata_raw ValueErrorwarningvendordata2_rawr'r&) r*foundmdresultssdirr6devr8prev_iidcur_iidvdevd2rrr _get_data@s                  zDataSourceConfigDrive._get_datacCst|SN)rinstance_id_matches_system_uuidget_instance_id)r*r+rrrcheck_instance_idsz'DataSourceConfigDrive.check_instance_idcCs|jdur@|jdtjfvrtdtj|j|jd|_|jS|j dur;t |j |_tdt j dddd|jStd|jS) Nz(network config provided via network_json)r(z.network config provided via converted eni dataz(Eni network configuration in ConfigDrivez24.3z*sz'find_candidate_devs..cs"g|] }|vs t|s|qSr)r is_partitionrrrrr.szdevices=%s dslist=%sIBMCloudz5IBMCloud device '%s' (%s) removed from candidate list) OPTICAL_DEVICESrfind_devs_withrProcessExecutionErrorFS_TYPESextend LABEL_TYPESsortrErUr remove) probe_opticalr6device by_fstypefs_typelabel candidatesdevices ibm_platformibm_pathrrrrGs@      rGcCs t|tSrh)rlist_from_depends datasources)dependsrrrget_datasource_listKs r)NT)TN)&loggingr cloudinitrrrrcloudinit.eventrr cloudinit.netr$cloudinit.sources.DataSourceIBMCloudr cloudinit.sources.helpersr getLoggerrvrE DEFAULT_IIDrNrrPOSSIBLE_MOUNTStupler SourceMixinr0rrBrSrTrrGDataSourceConfigDriveNetDEP_FILESYSTEMrrrrrrs8     ,  B