3 \meF7@sddlZddlZddlZddlmZddlmZmZmZm Z m Z ddl m Z ddl mZmZddlmZddlmZddlmZejeZd Zd eiZd;ZdZdZddiZdZGdddZ Gdddej!Z"Gddde"Z#ddZ$ddZ%dd:dS)?N) b64decode)dminetsources url_helperutil)ug_util) EventScope EventType)NoDHCPLeaseError)EphemeralDHCPv4)DataSourceHostnamez3http://metadata.google.internal/computeMetadata/v1/ metadata_url instance-idavailability-zonelocal-hostnamezLhttp://metadata.google.internal/computeMetadata/v1/instance/guest-attributeshostkeyszMetadata-FlavorGoogleZens4c@seZdZddZdddZdS)GoogleMetadataFetchercCs||_||_||_dS)N)metadata_address num_retriessec_between_retries)selfrrrr#/usr/lib/python3.6/DataSourceGCE.py__init__ szGoogleMetadataFetcher.__init__Fc Csd}y0|j|}|r|d7}tj|t|j|jd}Wn6tjk rj}zd}tj|||WYdd}~Xnsz%_parse_public_keys..:rWrc cloudinit)allrSlenrjappend)rMr4Z public_keysriZsplit_public_keyuserrPrrrrLs   rLTc Cs|dkr t}ddddd}t|d<|r>|d r>d|d<|Stj|sdtjd|d||d<|Sd(d*d,d.d0g}t||j|j}i}xn|D]f\}}} } } d} x&|D]} |j | | | }|dk r|} qW| r| dkrd}|||d<|S| ||<qWt j |dpd}t j |dpd}|j d|j dg}|j ddj }|dkrz|j d rz|j|j d|j|j ddjdd|D}|j|d<|d r|d jdd1|d <d |kr |d jd!}|j d"}|d#krt|}n|rtjd$|||d <||d%<d |d&<|S)2NF)z meta-dataz user-datar=r?r>zNot running on GCE.r?z%s is not resolvablezaddress "%s" is not resolvable instance-id instance/idTavailability-zone instance/zonelocal-hostnameinstance/hostname instance-datainstance/attributes project-dataproject/attributesz)required key %s returned nothing. not GCEz{}ZsshKeyszssh-keyszblock-project-ssh-keystrue cSsg|] }|r|qSrr)rmrPrrr ;szread_md..zpublic-keys-data/rWz user-datazutf-8zuser-data-encodingbase64z(unknown user-data-encoding: %s, ignoringz meta-datar=rw)rvrTTFry)rxrTTFr{)rzrTTFr})r|rFFTr)r~rFFT) MD_V1_URLr>rZis_resolvable_urlr!r"rrrr-rfrggetlowerrtjoin splitlinesrSr_rrF)r:r;platform_checkrGZurl_mapZmetadata_fetcherZmdZmkeyr9Zrequiredr'r(r)r&Z new_valuer,Z instance_dataZ project_dataZ valid_keysZ block_projectrMZudencodingrrrrDsn              rDcCsPtjdp d}|dks|dkr"dStjdp.d}|jdr>dStjd||d S) Nzsystem-product-namezN/AzGoogle Compute EnginerTzsystem-serial-numberz GoogleCloud-z6Not running on google cloud. product-name=%s serial=%sF)rZ read_dmi_data startswithr!r")Zpnameserialrrrr>Qs  r>cCs tj|tS)N)rZlist_from_depends datasources)Zdependsrrrget_datasource_listisr__main__) b64encodezQuery GCE Metadata Service) descriptionz --endpointZURLz The url of the metadata service.)metavarhelpdefaultz--no-platform-checkrzIgnore smbios platform checkZ store_false)destractionr)r:rz user-dataz/User-data cannot be decoded. Writing as base64 z user-data-b64rW,: )indentZ sort_keysZ separators)rrr)N)NNT)rr)>rhrfZloggingrrrqrrrrrZcloudinit.distrosrZcloudinit.eventr r Zcloudinit.net.dhcpr Zcloudinit.net.ephemeralr Zcloudinit.sourcesr Z getLoggerr.r!rr7ZREQUIRED_FIELDSr]r^r rArr3r1r[rOrjrLrDr>ZDEP_FILESYSTEMZ DEP_NETWORKrrargparsesysrArgumentParserparser add_argument parse_argsargsZendpointrr\r%UnicodeDecodeErrorstderrwriteprintdumpsrrrrsn       {"  M