fS7ddlZddlZddlZddlmZddlmZmZmZm Z m Z ddl m Z ddl mZmZddlmZddlmZddlmZej,eZd Zd eiZd Zd Zd ZddiZdZGddZ GddejBZ"Gdde"Z#dZ$dZ%d2dZ&d3dZ'dZ(e#ejRffe"ejRejTffgZ+dZ,edk(rddl-Z-ddl.Z.ddlm/Z/e-j`d !Z1e1jed"d#d$e%e1jed&d'd(d)d*e1jgZ4e'e4jje4jl+Z7d,e7vr e7d,jqe7d,<e<ejze7d/dd01yy#e9$r=e.jtjwd-e7d,=e/e7d,jqe7d.<Y_wxYw)4N) 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-FlavorGoogleens4ceZdZdZddZy)GoogleMetadataFetcherc.||_||_||_yN)metadata_address num_retriessec_between_retries)selfrrrs A/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceGCE.py__init__zGoogleMetadataFetcher.__init__ s 0&#6 cd} |j|z}|r|dz }tj|t|j|j }|j dk(r@|r!tj|j}|S|jjd}|Stjd||j |S#tj$r$}d}tj|||Yd}~|Sd}~wwxYw)Nz/?recursive=True)urlheadersretries sec_betweenutf-8zurl %s returned code %szurl %s raised exception %s)rrreadurlHEADERSrrcoder decode_binarycontentsdecodeLOGdebugUrlError) rpathis_text is_recursivevaluer"respexcmsgs r get_valuezGoogleMetadataFetcher.get_value%s F''$.C))%%(( 44 DyyC ..t}}=E  !MM009E  3T499E "" &.C IIc4 % %  &sAB==C4C//C4N)F)__name__ __module__ __qualname__rr8r rrrs 7 r rceZdZdZdZej ejejhiZ dZ dZ e dZdZdZdZd d Ze d Ze d Zy ) DataSourceGCEGCEFcztjj||||d|_|r6t j ||\}}t j |\|_}t|_tjtj|ddgitg|_ |jd|_y)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__Js##D'65A  &==gvN UG070G0G0N -T   (($$W|U.CRH!   !% N ;r c j|j}|jr;tj}t|vr+|j t|j dttjd|t|dk\sJd|D]}t|j|} |5 tjtjdt|j|d} dddd sf||j_tjd |n|jj$Ytj'd |j(n8tjtjdt|j|d}d s7|d rtj'|dytj|dy|d|_|d|_y#t $r*}tjd ||Yd}~ddd~d}~wwxYw#1swY0xYw#t"$rYwxYw)Nrz"Looking for the primary NIC in: %sz3The instance has to have at least one candidate NIC)ifacezCrawl of GCE metadata service)address url_params)kwargsz,Error fetching IMD with candidate NIC %s: %ssuccesszPrimary NIC found: %s.z(Did not find a fallback interface on %s.platform_reports_gcereasonF meta-data user-dataT)get_url_paramsperform_dhcp_setuprfind_candidate_nicsDEFAULT_PRIMARY_INTERFACEremoveinsertr.r/lenr rMrlog_timeread_mdr Exceptionr fallback_interfacewarning cloud_namerG userdata_raw)rrVcandidate_nics candidate_nicnetwork_contextretes r _get_datazDataSourceGCE._get_dataYs ((*  " " 446N(N:%%&?@%%a)BC II:N KN#q( ED E(!/  "1KK'#(%%"&-- # ? '/3/D/D2<(" #C%(y>5BDKK2II6 F; <{{--5 >-- /#44", C9~)* CM* #h-(K(  ,I )%II N - ! %#%%%%%$(sT-H%/H18G"*H%" H+HHH%HHH" H%% H21H2cyrr<rs r launch_indexzDataSourceGCE.launch_indexsr c |jdS)NrrGrrs rget_instance_idzDataSourceGCE.get_instance_ids}}]++r cL|jd}t||jS)Npublic-keys-data)rG_parse_public_keysrC)rpublic_keys_datas rget_public_ssh_keysz!DataSourceGCE.get_public_ssh_keyss&==);<!"2D4E4EFFr c"|D] }t| yr)#_write_host_key_to_guest_attributes)rrkeys rpublish_host_keyszDataSourceGCE.publish_host_keyss 6C / 5 6r cXt|jdjdddS)Nr.rF)rrGsplit)rfqdn resolve_ip metadata_onlys r get_hostnamezDataSourceGCE.get_hostnames.! MM* + 1 1# 6q 95  r c |jdS)Nrrurrs ravailability_zonezDataSourceGCE.availability_zones}}011r c@|jjdddS)N-rSr)rrsplitrrs rregionzDataSourceGCE.regions %%,,S!4Q77r N)FFF)r9r:r;dsnamer^r NETWORKr BOOT_NEW_INSTANCEBOOTdefault_update_eventsrrppropertyrsrvr{rrrrr<r rr>r>?s F  ' ' NN  <@D,G6 2288r r>ceZdZdZy)DataSourceGCELocalTN)r9r:r;r^r<r rrrsr rctdtd|}|jd}tj||t dd}|j rtjd|ytjd|y)N/r'PUTF)r"datar#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_valuer"r5s rr}r}sg,.? JC  )I       D wwy :HE DhOr cn |jdddd\}}|dk7ry tj|}d|vry|d}d} t j j ||}t j j|kDS#ttf$rYywxYw#t$rYywxYw#t$rYywxYw)NFz google-sshexpireOnz%Y-%m-%dT%H:%M:%S+0000)r ValueErrorAttributeErrorjsonloadsdatetimestrptimeutcnow) public_keyschemajson_strjson_obj expire_str format_str expire_times r _has_expiredrs%++D!4QR8 ::h' !*%J)J''00ZH    # # % 331  '  s4BB B(BB B%$B%( B43B4cg}|s|S|D]a}|rtd|Ds|jdd}t|dk7r9|\}}|d|fvsEt|rQ|j |c|S)Nc38K|]}t|dkyw)N)ord).0cs r z%_parse_public_keys..s$FaSVc\$Fs:rSr cloudinit)allrrcrappend)rzrC public_keysrsplit_public_keyuserr~s rryrys K &$ $F:$F!F %++C3  A % $ c K. .|C7H   s #$ r Tc|t}ddddd}t|d<|r |dsd|d<|Stj|s tj d|d|z|d<|Sgd}t ||j|j}i}|D]@\}}} } } d} |D]} |j| | | }||} | r| d }||z|d<|cS| ||<Btj|d xsd }tj|d xsd }|jd |jdg}|jddj}|dk7rQ|jd s@|j|jd|j|jd dj|Dcgc]}|s| c}}|j!|d<|dr|dj#dd|d<d|vrS|dj%d}|jd}|dk(r t'|}n|rtj)d|||d<||d<d|d<|Scc}w)NF)r[r\rXrZrYzNot running on GCE.rZz%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 rxrrr\r'zuser-data-encodingbase64z(unknown user-data-encoding: %s, ignoringr[TrX) MD_V1_URLrYris_resolvable_urlr.r/rrrr8rrgetlowerrjoin splitlinesrrrrh)rUrVplatform_checkrnurl_mapmetadata_fetchermdmkeyrNrequiredr2r3r4r1 new_valuer7 instance_data project_data valid_keys block_projectr~rzudencodings rreres  C #7"8Cc"89-H    ! !' * ('287BH  G-'')G)G B:A 6uh "D(224,OI$! "  =C$JCMJ4 JJr/2:d;M::b08D9L##I. 0A0A*0MNJ!%%&>CIIKM}'8'8'C,**:67,**956yy!C#s#!CD-88:B "$%8"9"?"?"DR"H m# ; ' . .w 7 $$%9: x 2B  KKBH MKC C N J'"Ds +I3Ictjdxsd}|dk(s|dk(rytjdxsd}|jdrytj d||y ) 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 rrYrYQsl   3 4 =E ''5H+<  5 6 ?%F (II@% r c6tj|tSr)rlist_from_depends datasources)dependss rget_datasource_listris  $ $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)rUrr\z/User-data cannot be decoded. Writing as base64 z user-data-b64rS),z: )indent sort_keys separatorsr)NNT)>rrloggingrrrrrrrrcloudinit.distrosr cloudinit.eventr r cloudinit.net.dhcpr cloudinit.net.ephemeralr cloudinit.sourcesr getLoggerr9r.rrJREQUIRED_FIELDSrrr)r`rrBr>rr}rryrerYDEP_FILESYSTEM DEP_NETWORKrrargparsesysrArgumentParserparser add_argument parse_argsargsendpointrrr-UnicodeDecodeErrorstderrwriteprintdumpsr<r rr s  99%1/30g! A #Y/H# h '"@x8G&&x8v P 4D(JZ $'0023W++W-@-@AB ; z $X $ $1M NF  /     +     D 4==9L9L MDd J $[ 1 8 8 :D  *$**T!t LMG6" J JJ  B [!$-d;.?$@$G$G$ID !  JsF?GG