a 'Dg,@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)ZvfatZiso9660)zconfig-2zCONFIG-2)srZcdccs(|] }tdD]}d||fVqqdS)z /dev/%s%sN)range).0zirK/usr/lib/python3.9/site-packages/cloudinit/sources/DataSourceConfigDrive.py rcsreZdZdZejejejej ej hiZ fddZ ddZ ddZdd Zed d Zed d ZddZZS)DataSourceConfigDriveZ ConfigDrivecs\tt||||d|_tj|jd|_d|_d|_ d|_ t j |_ d|_d|_i|_dS)NZ config_drive)superr__init__sourceospathjoinseed_dirversion ec2_metadata_network_configrUNSET network_json network_eni known_macsfiles)selfsys_cfgdistropaths __class__rrr.szDataSourceConfigDrive.__init__cCs0tj|}d||j|jf}|d|j7}|S)Nz%s [%s,ver=%s]z [source=%s])r DataSource__str__dsmoderr)r&rootZmstrrrrr-:s zDataSourceConfigDrive.__str__c Csd}i}i}|jdfD]L}tj|s(qzt|}|}WqdWqtjy`tt d|Yq0q|s |j d}t |dD]}d}t r|drd}ztj|t|d}|}WnFtjyYn4tjyYn"tjytt d|Yn0|rq q|sd S| d i}t|tg}|| d |j d |d d krXtjndg|_|jtjkrtd St|j}|d} || krt||j|jtjkd|jtjkrt d||jd S||_||_ | d|_!| d|_"|d |_#|j$%| di| d} zt&| |_'Wn8t(y^} zt )d| d|_'WYd} ~ n d} ~ 00| d} zt&| |_*Wn8t(y} zt )d| d|_*WYd} ~ n d} ~ 00| d|_+| d|_,dS)Nz /config-drivez#Failed reading config drive from %sZdatasource_list)dslistz/dev/cdZcd9660)mtypezBroken config drive: %sFmetadatar.rr )r(networkz&%s: not claiming datasource, dsmode=%sz ec2-metadataZuserdatar%Z vendordataz"Invalid content in vendor-data: %sZ vendordata2z#Invalid content in vendor-data2: %snetwork_configZ networkdataT)-rrrisdirread_config_driver NonReadablerlogexcLOGr'getfind_candidate_devsZis_BSD startswithZmount_cbZMountFailedErrorZBrokenMetadataZ mergemanydictDEFAULT_METADATAZ_determine_dsmodeZds_cfgrZ DSMODE_PASSr.ZDSMODE_DISABLEDget_previous_iidr) on_first_bootr(debugrr2rZ userdata_rawrr%updateZconvert_vendordataZvendordata_raw ValueErrorwarningZvendordata2_rawr#r") r&foundZmdresultsZsdirr0devr1Zprev_iidZcur_iidZvdeZvd2rrr _get_data@s                  zDataSourceConfigDrive._get_datacCst|SN)rZinstance_id_matches_system_uuidZget_instance_id)r&r'rrrcheck_instance_idsz'DataSourceConfigDrive.check_instance_idcCs~|jdurx|jdtjfvr:tdtj|j|jd|_n>|j durnt |j |_tdt j ddddn td|jS) Nz(network config provided via network_json)r$z.network config provided via converted eni dataz(Eni network configuration in ConfigDrivez24.3z*rz'find_candidate_devs..cs"g|]}|vst|s|qSr)rZ is_partitionrkrmrrrn.szdevices=%s dslist=%sZIBMCloudz5IBMCloud device '%s' (%s) removed from candidate list) OPTICAL_DEVICESrZfind_devs_withrZProcessExecutionErrorFS_TYPESextend LABEL_TYPESsortr:rAr remove) Z probe_opticalr0ZdeviceZ by_fstypeZfs_typeZlabelZ candidatesZdevicesZ ibm_platformZibm_pathrrmrr<s>      r<cCs t|tSrJ)rZlist_from_depends datasources)Zdependsrrrget_datasource_listKsrv)NT)TN)&ZloggingrZ cloudinitrrrrZcloudinit.eventrrZ cloudinit.netrZ$cloudinit.sources.DataSourceIBMCloudr Zcloudinit.sources.helpersr Z getLoggerrPr:Z DEFAULT_IIDr>rprrZPOSSIBLE_MOUNTStupleroZ SourceMixinr,rr7r?r@rdr<ZDataSourceConfigDriveNetZDEP_FILESYSTEMrurvrrrr s6     ,  B