܍~c/ddlZddlZddlmZddlmZddlmZddlm Z ddlm Z m Z m Z ddlmZddlmZdd lmZe jeZd Zd eiZd Zd ZdZddiZGddZGdde jZGddeZ dZ!dZ"d2dZ#d3dZ$dZ%e e j&ffee j&e j'ffgZ(dZ)edkr ddl*Z*ddl+Z+ddlm,Z,e*j-d !Z.e./d"d#d$e%e./d&d'd(d)d*e.0Z1e$e1j2e1j3+Z4d,e4vrm e4d,5e4d,<nN#e6$rFe+j78d-e4d,=e,e4d,5e4d.<YnwxYwe9ej:e4d/dd01dSdS)4N) b64decode)suppress)dmi)log)sources url_helperutil)ug_util)EphemeralDHCPv4)DataSourceHostnamez3http://metadata.google.internal/computeMetadata/v1/ metadata_url) instance-idavailability-zonelocal-hostnamezLhttp://metadata.google.internal/computeMetadata/v1/instance/guest-attributeshostkeyszMetadata-FlavorGoogleceZdZdZddZdS)GoogleMetadataFetcherc0||_||_||_dSN)metadata_address num_retriessec_between_retries)selfrrrs A/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceGCE.py__init__zGoogleMetadataFetcher.__init__s 0&#6   Fcd} |j|z}|r|dz }tj|t|j|j}|jdkr7|rtj|j }nw|j d}n\t d||jn:#tj $r(}d}t |||Yd}~nd}~wwxYw|S)Nz/?recursive=True)urlheadersretries sec_betweenutf-8zurl %s returned code %szurl %s raised exception %s)rrreadurlHEADERSrrcoder decode_binarycontentsdecodeLOGdebugUrlError) rpathis_text is_recursivevaluerrespexcmsgs r get_valuezGoogleMetadataFetcher.get_value$s  F'$.C *))%( 4 DyC: .t}==EE M0099EE 3T49EEEE" & & &.C IIc4 % % % % % % % % & s8B C/CCN)F)__name__ __module__ __qualname__rr5rrrrs7777 rrc~eZdZdZdZdZdZedZdZ dZ dZ d d Z ed Z ed Zd S) DataSourceGCEGCEFcztj||||d|_|r4t j||\}}t j|\|_}t|_tj tj |ddgitg|_ |j d|_dS)N datasourcer<r )r DataSourcer default_userr normalize_users_groupsextract_defaultdictmetadatar mergemanydictget_cfg_by_pathBUILTIN_DS_CONFIGds_cfgr)rsys_cfgdistropathsusers_groups _user_configs rrzDataSourceGCE.__init__Cs##D'65AAA   O&=gvNN UG070G0N0N -T   ($W|U.CRHH!    !% N ;rc |}t}|jr-t|j|j}|5tjtj dt|j |d}dddn #1swxYwY|dsK|dr!t |dn t |ddS|d |_|d |_d S) N)tmp_dirzCrawl of GCE metadata service)address url_params)kwargssuccessplatform_reports_gcereasonF meta-data user-dataT)get_url_paramsnoopperform_dhcp_setupr fallback_interfacerJget_tmp_exec_pathr log_timer+r,read_mdrwarningrD userdata_raw)rrRnetwork_contextrets r _get_datazDataSourceGCE._get_dataRsQ((** &&  " -' 5577O  - /#4", C               9~ )* ) CM**** #h-(((5K(  ,ts0BBBcdSrr9rs r launch_indexzDataSourceGCE.launch_indexos trc|jdS)NrrDrfs rget_instance_idzDataSourceGCE.get_instance_idts}]++rcF|jd}t||jS)Npublic-keys-data)rD_parse_public_keysr@)rpublic_keys_datas rget_public_ssh_keysz!DataSourceGCE.get_public_ssh_keysws$=);<!"2D4EFFFrc"|D] }t| dSr)#_write_host_key_to_guest_attributes)rrkeys rpublish_host_keyszDataSourceGCE.publish_host_keys{s) 6 6C / 5 5 5 6 6rcjt|jddddS)Nr.rF)r rDsplit)rfqdn resolve_ip metadata_onlys r get_hostnamezDataSourceGCE.get_hostnames4! M* + 1 1# 6 6q 95   rc|jdS)Nrrirfs ravailability_zonezDataSourceGCE.availability_zones}011rcD|jdddS)N-r)r|rsplitrfs rregionzDataSourceGCE.regions %,,S!44Q77rN)FFF)r6r7r8dsnamer[rrdpropertyrgrjrorsrzr|rr9rrr;r;>s F < < <:X,,,GGG666    22X288X888rr;ceZdZdZdS)DataSourceGCELocalTN)r6r7r8r[r9rrrrsrrc,tdtd|}|d}tj||t dd}|rtd|dStd|dS)N/r$PUTF)rdatar request_method check_statusz&Wrote %s host key to guest attributes.z0Unable to write %s host key to guest attributes.) GUEST_ATTRIBUTES_URLHOSTKEY_NAMESPACEencoderr%r&okr+r,)key_type key_valuerr2s rrqrqs,,,.?.?.? JC  ))I        D wwyyP :HEEEEE DhOOOOOrc |dddd\}}n#ttf$rYdSwxYw|dkrdS tj|}n#t$rYdSwxYwd|vrdS|d}d} t j||}n#t$rYdSwxYwt j|kS)NFz google-sshexpireOnz%Y-%m-%dT%H:%M:%S+0000)rv ValueErrorAttributeErrorjsonloadsdatetimestrptimeutcnow) public_keyschemajson_strjson_obj expire_str format_str expire_times r _has_expiredrs%++D!44QRR8  'uuu:h'' uu!!u*%J)J'00ZHH uu   # # % % 33s0!$99A A('A(< B B+*B+cg}|s|S|D]w}|rtd|Ds|dd}t|dkrH|\}}|d|fvr$t|s||x|S)Nc3<K|]}t|dkVdS)N)ord).0cs r z%_parse_public_keys..s,$F$FaSVVc\$F$F$F$F$F$Fr:rr cloudinit)allrvlenrappend)rnr@ public_keysrsplit_public_keyuserrrs rrmrms K &$$  $F$F:$F$F$F!F!F  %++C33  A % % $ c K. . .|C7H7H .   s # # # rTc@|t}ddddd}t|d<|r|dsd|d<|Stj|s%td|d|z|d<|Sgd}t ||j|j}i}|D]A\}}} } } d} |D]} | | | | }||} | r| d }||z|d<|cS| ||<Btj |d pd }tj |d pd }| d | dg}| dd }|dkre| d sP|| d|| d dd|D}||d<|dr$|ddd|d<d|vrh|dd}| d}|dkrt'|}n|rtd|||d<||d<d|d<|S) NF)rWrXrTrVrUzNot running on GCE.rVz%s is not resolvablezaddress "%s" is not resolvable))r)z instance/idTTF)r)z instance/zoneTTF)r)zinstance/hostnameTTF) instance-data)zinstance/attributesFFT) project-data)zproject/attributesFFTz)required key %s returned nothing. not GCErz{}rsshKeyszssh-keyszblock-project-ssh-keystrue cg|]}||Sr9r9)rrrs r zread_md..s!C!C!C#s!C#!C!C!CrrlrrrXr$zuser-data-encodingbase64z(unknown user-data-encoding: %s, ignoringrWTrT) MD_V1_URLrUr is_resolvable_urlr+r,rrrr5rrgetlowerrjoin splitlinesrvrrr`)rQrRplatform_checkrcurl_mapmetadata_fetchermdmkeyrKrequiredr/r0r1r. new_valuer4 instance_data project_data valid_keys block_projectrnudencodings rr_r_s)   C #7"8"8Cc"89-H    !' * * ('22287BH  G-')G B:A  6uh " "D(224,OOI$!   =C$JCMJJJ4Jr/2:d;;M:b08D99L##I.. 0A0A*0M0MNJ!%%&>CCIIKKM}'8'8'C'C,**:66777,**955666yy!C!C!C!C!CDD-88::B I"$%8"9"?"?"D"DR"H m## ; ' . .w 7 7 $$%9:: x  2BB  N KKBH M M MKC C N Jrctjdpd}|dks|dkrdStjdpd}|drdStd||d S) Nzsystem-product-namezN/AzGoogle Compute EnginerTzsystem-serial-numberz GoogleCloud-z6Not running on google cloud. product-name=%s serial=%sF)r read_dmi_data startswithr+r,)pnameserials rrUrU%s  3 4 4 =E '''5H+<+<t 5 6 6 ?%F ((tII@% 5rc6tj|tSr)rlist_from_depends datasources)dependss rget_datasource_listr=s  $Wk : ::r__main__) b64encodezQuery GCE Metadata Service) descriptionz --endpointURLz The url of the metadata service.)metavarhelpdefaultz--no-platform-checkrzIgnore smbios platform check store_false)destractionr)rQrrXz/User-data cannot be decoded. Writing as base64 z user-data-b64r),z: )indent sort_keys separatorsr)NNT);rrrr contextlibrrZrrrloggingrrr cloudinit.distrosr cloudinit.net.ephemeralr cloudinit.sourcesr getLoggerr6r+rrGREQUIRED_FIELDSrrr&rr?r;rrqrrmr_rUDEP_FILESYSTEM DEP_NETWORKrrargparsesysrArgumentParserparser add_argument parse_argsargsendpointrrr*UnicodeDecodeErrorstderrwriteprintdumpsr9rrrs  ''''''$$$$$$//////////%%%%%%333333000000g!! A #Y/H# h '@M8M8M8M8M8G&M8M8M8` P P P 444D(JJJJZ   $'023W+W-@AB ;;; zOOOJJJ      $X $1M N N NF  /     +      D 74=9L M M MDd J $[ 1 8 8 : :D  ! J J J J  B   [!$-Id;.?$@$@$G$G$I$ID ! ! !  J E*$*T!t L L LMMMMMGsE AF+*F+