PNG  IHDRQgAMA a cHRMz&u0`:pQ<bKGDgmIDATxwUﹻ& ^CX(J I@ "% (** BX +*i"]j(IH{~R)[~>h{}gy)I$Ij .I$I$ʊy@}x.: $I$Ii}VZPC)I$IF ^0ʐJ$I$Q^}{"r=OzI$gRZeC.IOvH eKX $IMpxsk.쒷/&r[޳<v| .I~)@$updYRa$I |M.e JaֶpSYR6j>h%IRز if&uJ)M$I vLi=H;7UJ,],X$I1AҒJ$ XY XzI@GNҥRT)E@;]K*Mw;#5_wOn~\ DC&$(A5 RRFkvIR}l!RytRl;~^ǷJj اy뷦BZJr&ӥ8Pjw~vnv X^(I;4R=P[3]J,]ȏ~:3?[ a&e)`e*P[4]T=Cq6R[ ~ޤrXR Հg(t_HZ-Hg M$ãmL5R uk*`%C-E6/%[t X.{8P9Z.vkXŐKjgKZHg(aK9ڦmKjѺm_ \#$5,)-  61eJ,5m| r'= &ڡd%-]J on Xm|{ RҞe $eڧY XYrԮ-a7RK6h>n$5AVڴi*ֆK)mѦtmr1p| q:흺,)Oi*ֺK)ܬ֦K-5r3>0ԔHjJئEZj,%re~/z%jVMڸmrt)3]J,T K֦OvԒgii*bKiNO~%PW0=dii2tJ9Jݕ{7"I P9JKTbu,%r"6RKU}Ij2HKZXJ,妝 XYrP ެ24c%i^IK|.H,%rb:XRl1X4Pe/`x&P8Pj28Mzsx2r\zRPz4J}yP[g=L) .Q[6RjWgp FIH*-`IMRaK9TXcq*I y[jE>cw%gLRԕiFCj-ďa`#e~I j,%r,)?[gp FI˨mnWX#>mʔ XA DZf9,nKҲzIZXJ,L#kiPz4JZF,I,`61%2s $,VOϚ2/UFJfy7K> X+6 STXIeJILzMfKm LRaK9%|4p9LwJI!`NsiazĔ)%- XMq>pk$-$Q2x#N ؎-QR}ᶦHZډ)J,l#i@yn3LN`;nڔ XuX5pF)m|^0(>BHF9(cզEerJI rg7 4I@z0\JIi䵙RR0s;$s6eJ,`n 䂦0a)S)A 1eJ,堌#635RIgpNHuTH_SԕqVe ` &S)>p;S$魁eKIuX`I4춒o}`m$1":PI<[v9^\pTJjriRŭ P{#{R2,`)e-`mgj~1ϣLKam7&U\j/3mJ,`F;M'䱀 .KR#)yhTq;pcK9(q!w?uRR,n.yw*UXj#\]ɱ(qv2=RqfB#iJmmL<]Y͙#$5 uTU7ӦXR+q,`I}qL'`6Kͷ6r,]0S$- [RKR3oiRE|nӦXR.(i:LDLTJjY%o:)6rxzҒqTJjh㞦I.$YR.ʼnGZ\ֿf:%55 I˼!6dKxm4E"mG_ s? .e*?LRfK9%q#uh$)i3ULRfK9yxm܌bj84$i1U^@Wbm4uJ,ҪA>_Ij?1v32[gLRD96oTaR׿N7%L2 NT,`)7&ƝL*꽙yp_$M2#AS,`)7$rkTA29_Iye"|/0t)$n XT2`YJ;6Jx".e<`$) PI$5V4]29SRI>~=@j]lp2`K9Jaai^" Ԋ29ORI%:XV5]JmN9]H;1UC39NI%Xe78t)a;Oi Ҙ>Xt"~G>_mn:%|~ޅ_+]$o)@ǀ{hgN;IK6G&rp)T2i୦KJuv*T=TOSV>(~D>dm,I*Ɛ:R#ۙNI%D>G.n$o;+#RR!.eU˽TRI28t)1LWϚ>IJa3oFbu&:tJ*(F7y0ZR ^p'Ii L24x| XRI%ۄ>S1]Jy[zL$adB7.eh4%%누>WETf+3IR:I3Xה)3אOۦSRO'ٺ)S}"qOr[B7ϙ.edG)^ETR"RtRݜh0}LFVӦDB^k_JDj\=LS(Iv─aTeZ%eUAM-0;~˃@i|l @S4y72>sX-vA}ϛBI!ݎߨWl*)3{'Y|iSlEڻ(5KtSI$Uv02,~ԩ~x;P4ցCrO%tyn425:KMlD ^4JRxSهF_}شJTS6uj+ﷸk$eZO%G*^V2u3EMj3k%)okI]dT)URKDS 7~m@TJR~荪fT"֛L \sM -0T KfJz+nإKr L&j()[E&I ߴ>e FW_kJR|!O:5/2跌3T-'|zX ryp0JS ~^F>-2< `*%ZFP)bSn"L :)+pʷf(pO3TMW$~>@~ū:TAIsV1}S2<%ޟM?@iT ,Eūoz%i~g|`wS(]oȤ8)$ ntu`өe`6yPl IzMI{ʣzʨ )IZ2= ld:5+請M$-ї;U>_gsY$ÁN5WzWfIZ)-yuXIfp~S*IZdt;t>KūKR|$#LcԀ+2\;kJ`]YǔM1B)UbG"IRߊ<xܾӔJ0Z='Y嵤 Leveg)$znV-º^3Ւof#0Tfk^Zs[*I꯳3{)ˬW4Ւ4 OdpbZRS|*I 55#"&-IvT&/윚Ye:i$ 9{LkuRe[I~_\ؠ%>GL$iY8 9ܕ"S`kS.IlC;Ҏ4x&>u_0JLr<J2(^$5L s=MgV ~,Iju> 7r2)^=G$1:3G< `J3~&IR% 6Tx/rIj3O< ʔ&#f_yXJiގNSz; Tx(i8%#4 ~AS+IjerIUrIj362v885+IjAhK__5X%nV%Iͳ-y|7XV2v4fzo_68"S/I-qbf; LkF)KSM$ Ms>K WNV}^`-큧32ŒVؙGdu,^^m%6~Nn&͓3ŒVZMsRpfEW%IwdǀLm[7W&bIRL@Q|)* i ImsIMmKmyV`i$G+R 0tV'!V)֏28vU7͒vHꦼtxꗞT ;S}7Mf+fIRHNZUkUx5SAJㄌ9MqμAIRi|j5)o*^'<$TwI1hEU^c_j?Е$%d`z cyf,XO IJnTgA UXRD }{H}^S,P5V2\Xx`pZ|Yk:$e ~ @nWL.j+ϝYb퇪bZ BVu)u/IJ_ 1[p.p60bC >|X91P:N\!5qUB}5a5ja `ubcVxYt1N0Zzl4]7­gKj]?4ϻ *[bg$)+À*x쳀ogO$~,5 زUS9 lq3+5mgw@np1sso Ӻ=|N6 /g(Wv7U;zωM=wk,0uTg_`_P`uz?2yI!b`kĸSo+Qx%!\οe|އԁKS-s6pu_(ֿ$i++T8=eY; צP+phxWQv*|p1. ά. XRkIQYP,drZ | B%wP|S5`~́@i޾ E;Չaw{o'Q?%iL{u D?N1BD!owPHReFZ* k_-~{E9b-~P`fE{AܶBJAFO wx6Rox5 K5=WwehS8 (JClJ~ p+Fi;ŗo+:bD#g(C"wA^ r.F8L;dzdIHUX݆ϞXg )IFqem%I4dj&ppT{'{HOx( Rk6^C٫O.)3:s(۳(Z?~ٻ89zmT"PLtw䥈5&b<8GZ-Y&K?e8,`I6e(֍xb83 `rzXj)F=l($Ij 2*(F?h(/9ik:I`m#p3MgLaKjc/U#n5S# m(^)=y=đx8ŬI[U]~SцA4p$-F i(R,7Cx;X=cI>{Km\ o(Tv2vx2qiiDJN,Ҏ!1f 5quBj1!8 rDFd(!WQl,gSkL1Bxg''՞^ǘ;pQ P(c_ IRujg(Wz bs#P­rz> k c&nB=q+ؔXn#r5)co*Ũ+G?7< |PQӣ'G`uOd>%Mctz# Ԫڞ&7CaQ~N'-P.W`Oedp03C!IZcIAMPUۀ5J<\u~+{9(FbbyAeBhOSܳ1 bÈT#ŠyDžs,`5}DC-`̞%r&ڙa87QWWp6e7 Rϫ/oY ꇅ Nܶըtc!LA T7V4Jsū I-0Pxz7QNF_iZgúWkG83 0eWr9 X]㾮݁#Jˢ C}0=3ݱtBi]_ &{{[/o[~ \q鯜00٩|cD3=4B_b RYb$óBRsf&lLX#M*C_L܄:gx)WΘsGSbuL rF$9';\4Ɍq'n[%p.Q`u hNb`eCQyQ|l_C>Lb꟟3hSb #xNxSs^ 88|Mz)}:](vbۢamŖ࿥ 0)Q7@0=?^k(*J}3ibkFn HjB׻NO z x}7p 0tfDX.lwgȔhԾŲ }6g E |LkLZteu+=q\Iv0쮑)QٵpH8/2?Σo>Jvppho~f>%bMM}\//":PTc(v9v!gոQ )UfVG+! 35{=x\2+ki,y$~A1iC6#)vC5^>+gǵ@1Hy٪7u;p psϰu/S <aʸGu'tD1ԝI<pg|6j'p:tպhX{o(7v],*}6a_ wXRk,O]Lܳ~Vo45rp"N5k;m{rZbΦ${#)`(Ŵg,;j%6j.pyYT?}-kBDc3qA`NWQū20/^AZW%NQ MI.X#P#,^Ebc&?XR tAV|Y.1!؅⨉ccww>ivl(JT~ u`ٵDm q)+Ri x/x8cyFO!/*!/&,7<.N,YDŽ&ܑQF1Bz)FPʛ?5d 6`kQձ λc؎%582Y&nD_$Je4>a?! ͨ|ȎWZSsv8 j(I&yj Jb5m?HWp=g}G3#|I,5v珿] H~R3@B[☉9Ox~oMy=J;xUVoj bUsl_35t-(ՃɼRB7U!qc+x4H_Qo֮$[GO<4`&č\GOc[.[*Af%mG/ ňM/r W/Nw~B1U3J?P&Y )`ѓZ1p]^l“W#)lWZilUQu`-m|xĐ,_ƪ|9i:_{*(3Gѧ}UoD+>m_?VPۅ15&}2|/pIOʵ> GZ9cmíتmnz)yߐbD >e}:) r|@R5qVSA10C%E_'^8cR7O;6[eKePGϦX7jb}OTGO^jn*媓7nGMC t,k31Rb (vyܴʭ!iTh8~ZYZp(qsRL ?b}cŨʊGO^!rPJO15MJ[c&~Z`"ѓޔH1C&^|Ш|rʼ,AwĴ?b5)tLU)F| &g٣O]oqSUjy(x<Ϳ3 .FSkoYg2 \_#wj{u'rQ>o;%n|F*O_L"e9umDds?.fuuQbIWz |4\0 sb;OvxOSs; G%T4gFRurj(֍ڑb uԖKDu1MK{1^ q; C=6\8FR艇!%\YÔU| 88m)֓NcLve C6z;o&X x59:q61Z(T7>C?gcļxѐ Z oo-08jہ x,`' ҔOcRlf~`jj".Nv+sM_]Zk g( UOPyεx%pUh2(@il0ݽQXxppx-NS( WO+轾 nFߢ3M<;z)FBZjciu/QoF 7R¥ ZFLF~#ȣߨ^<쩡ݛкvџ))ME>ώx4m#!-m!L;vv#~Y[đKmx9.[,UFS CVkZ +ߟrY٧IZd/ioi$%͝ب_ֶX3ܫhNU ZZgk=]=bbJS[wjU()*I =ώ:}-蹞lUj:1}MWm=̛ _ ¾,8{__m{_PVK^n3esw5ӫh#$-q=A̟> ,^I}P^J$qY~Q[ Xq9{#&T.^GVj__RKpn,b=`żY@^՝;z{paVKkQXj/)y TIc&F;FBG7wg ZZDG!x r_tƢ!}i/V=M/#nB8 XxЫ ^@CR<{䤭YCN)eKOSƟa $&g[i3.C6xrOc8TI;o hH6P&L{@q6[ Gzp^71j(l`J}]e6X☉#͕ ׈$AB1Vjh㭦IRsqFBjwQ_7Xk>y"N=MB0 ,C #o6MRc0|$)ف"1!ixY<B9mx `,tA>)5ػQ?jQ?cn>YZe Tisvh# GMމȇp:ԴVuږ8ɼH]C.5C!UV;F`mbBk LTMvPʍϤj?ԯ/Qr1NB`9s"s TYsz &9S%U԰> {<ؿSMxB|H\3@!U| k']$U+> |HHMLޢ?V9iD!-@x TIî%6Z*9X@HMW#?nN ,oe6?tQwڱ.]-y':mW0#!J82qFjH -`ѓ&M0u Uγmxϵ^-_\])@0Rt.8/?ٰCY]x}=sD3ojަЫNuS%U}ԤwHH>ڗjܷ_3gN q7[q2la*ArǓԖ+p8/RGM ]jacd(JhWko6ڎbj]i5Bj3+3!\j1UZLsLTv8HHmup<>gKMJj0@H%,W΃7R) ">c, xixј^ aܖ>H[i.UIHc U1=yW\=S*GR~)AF=`&2h`DzT󑓶J+?W+}C%P:|0H܆}-<;OC[~o.$~i}~HQ TvXΈr=b}$vizL4:ȰT|4~*!oXQR6Lk+#t/g lԁߖ[Jڶ_N$k*". xsxX7jRVbAAʯKҎU3)zSNN _'s?f)6X!%ssAkʱ>qƷb hg %n ~p1REGMHH=BJiy[<5 ǁJҖgKR*倳e~HUy)Ag,K)`Vw6bRR:qL#\rclK/$sh*$ 6덤 KԖc 3Z9=Ɣ=o>X Ώ"1 )a`SJJ6k(<c e{%kϊP+SL'TcMJWRm ŏ"w)qc ef꒵i?b7b('"2r%~HUS1\<(`1Wx9=8HY9m:X18bgD1u ~|H;K-Uep,, C1 RV.MR5άh,tWO8WC$ XRVsQS]3GJ|12 [vM :k#~tH30Rf-HYݺ-`I9%lIDTm\ S{]9gOڒMNCV\G*2JRŨ;Rҏ^ڽ̱mq1Eu?To3I)y^#jJw^Ńj^vvlB_⋌P4x>0$c>K†Aļ9s_VjTt0l#m>E-,,x,-W)سo&96RE XR.6bXw+)GAEvL)͞K4$p=Ũi_ѱOjb HY/+@θH9޼]Nԥ%n{ &zjT? Ty) s^ULlb,PiTf^<À] 62R^V7)S!nllS6~͝V}-=%* ʻ>G DnK<y&>LPy7'r=Hj 9V`[c"*^8HpcO8bnU`4JȪAƋ#1_\ XϘHPRgik(~G~0DAA_2p|J묭a2\NCr]M_0 ^T%e#vD^%xy-n}-E\3aS%yN!r_{ )sAw ڼp1pEAk~v<:`'ӭ^5 ArXOI驻T (dk)_\ PuA*BY]yB"l\ey hH*tbK)3 IKZ򹞋XjN n *n>k]X_d!ryBH ]*R 0(#'7 %es9??ښFC,ՁQPjARJ\Ρw K#jahgw;2$l*) %Xq5!U᢯6Re] |0[__64ch&_}iL8KEgҎ7 M/\`|.p,~`a=BR?xܐrQ8K XR2M8f ?`sgWS%" Ԉ 7R%$ N}?QL1|-эټwIZ%pvL3Hk>,ImgW7{E xPHx73RA @RS CC !\ȟ5IXR^ZxHл$Q[ŝ40 (>+ _C >BRt<,TrT {O/H+˟Pl6 I B)/VC<6a2~(XwV4gnXR ϱ5ǀHٻ?tw똤Eyxp{#WK qG%5],(0ӈH HZ])ג=K1j&G(FbM@)%I` XRg ʔ KZG(vP,<`[ Kn^ SJRsAʠ5xՅF`0&RbV tx:EaUE/{fi2;.IAwW8/tTxAGOoN?G}l L(n`Zv?pB8K_gI+ܗ #i?ޙ.) p$utc ~DžfՈEo3l/)I-U?aԅ^jxArA ΧX}DmZ@QLےbTXGd.^|xKHR{|ΕW_h] IJ`[G9{).y) 0X YA1]qp?p_k+J*Y@HI>^?gt.06Rn ,` ?);p pSF9ZXLBJPWjgQ|&)7! HjQt<| ؅W5 x W HIzYoVMGP Hjn`+\(dNW)F+IrS[|/a`K|ͻ0Hj{R,Q=\ (F}\WR)AgSG`IsnAR=|8$}G(vC$)s FBJ?]_u XRvύ6z ŨG[36-T9HzpW̞ú Xg큽=7CufzI$)ki^qk-) 0H*N` QZkk]/tnnsI^Gu't=7$ Z;{8^jB% IItRQS7[ϭ3 $_OQJ`7!]W"W,)Iy W AJA;KWG`IY{8k$I$^%9.^(`N|LJ%@$I}ֽp=FB*xN=gI?Q{٥4B)mw $Igc~dZ@G9K X?7)aK%݅K$IZ-`IpC U6$I\0>!9k} Xa IIS0H$I H ?1R.Чj:4~Rw@p$IrA*u}WjWFPJ$I➓/6#! LӾ+ X36x8J |+L;v$Io4301R20M I$-E}@,pS^ޟR[/s¹'0H$IKyfŸfVOπFT*a$I>He~VY/3R/)>d$I>28`Cjw,n@FU*9ttf$I~<;=/4RD~@ X-ѕzἱI$: ԍR a@b X{+Qxuq$IЛzo /~3\8ڒ4BN7$IҀj V]n18H$IYFBj3̵̚ja pp $Is/3R Ӻ-Yj+L;.0ŔI$Av? #!5"aʄj}UKmɽH$IjCYs?h$IDl843.v}m7UiI=&=0Lg0$I4: embe` eQbm0u? $IT!Sƍ'-sv)s#C0:XB2a w I$zbww{."pPzO =Ɔ\[ o($Iaw]`E).Kvi:L*#gР7[$IyGPI=@R 4yR~̮´cg I$I/<tPͽ hDgo 94Z^k盇΄8I56^W$I^0̜N?4*H`237}g+hxoq)SJ@p|` $I%>-hO0eO>\ԣNߌZD6R=K ~n($I$y3D>o4b#px2$yڪtzW~a $I~?x'BwwpH$IZݑnC㧄Pc_9sO gwJ=l1:mKB>Ab<4Lp$Ib o1ZQ@85b̍ S'F,Fe,^I$IjEdù{l4 8Ys_s Z8.x m"+{~?q,Z D!I$ϻ'|XhB)=…']M>5 rgotԎ 獽PH$IjIPhh)n#cÔqA'ug5qwU&rF|1E%I$%]!'3AFD/;Ck_`9 v!ٴtPV;x`'*bQa w I$Ix5 FC3D_~A_#O݆DvV?<qw+I$I{=Z8".#RIYyjǪ=fDl9%M,a8$I$Ywi[7ݍFe$s1ՋBVA?`]#!oz4zjLJo8$I$%@3jAa4(o ;p,,dya=F9ً[LSPH$IJYЉ+3> 5"39aZ<ñh!{TpBGkj}Sp $IlvF.F$I z< '\K*qq.f<2Y!S"-\I$IYwčjF$ w9 \ߪB.1v!Ʊ?+r:^!I$BϹB H"B;L'G[ 4U#5>੐)|#o0aڱ$I>}k&1`U#V?YsV x>{t1[I~D&(I$I/{H0fw"q"y%4 IXyE~M3 8XψL}qE$I[> nD?~sf ]o΁ cT6"?'_Ἣ $I>~.f|'!N?⟩0G KkXZE]ޡ;/&?k OۘH$IRۀwXӨ<7@PnS04aӶp.:@\IWQJ6sS%I$e5ڑv`3:x';wq_vpgHyXZ 3gЂ7{{EuԹn±}$I$8t;b|591nءQ"P6O5i }iR̈́%Q̄p!I䮢]O{H$IRϻ9s֧ a=`- aB\X0"+5"C1Hb?߮3x3&gşggl_hZ^,`5?ߎvĸ%̀M!OZC2#0x LJ0 Gw$I$I}<{Eb+y;iI,`ܚF:5ܛA8-O-|8K7s|#Z8a&><a&/VtbtLʌI$I$I$I$I$I$IRjDD%tEXtdate:create2022-05-31T04:40:26+00:00!Î%tEXtdate:modify2022-05-31T04:40:26+00:00|{2IENDB`Mini Shell

HOME


Mini Shell 1.0
DIR:/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/
Upload File :
Current File : //usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pyo
�
oB�]c@s@ddlZddlZddlZddlZddlZddlZddlZddlZddlm	Z	ddl
mZddl
mZddl
mZddlmZddl
mZddl
mZdd	l
mZdd
l
mZddlmZddlmZdd
lmZeje�ZdZdZdZdZ ej!ddddde"�Z#d�Z$d�Z%e$d��Z&e$d��Z'd�Z(ed��Z)d�Z*de+fd��YZ,d e+fd!��YZ-d"e+fd#��YZ.d$e+fd%��YZ/e$dddd&��Z1d'e+fd(��YZ2dS()i����N(tdhcp(tstages(t
temp_utils(tcontextmanager(tElementTree(t
url_helper(tutil(tversion(tdistros(tevents(tEphemeralDHCPv4(tdatetimesa8:3f:81:10sboot-telemetryssystem-infot
diagnostictnamesazure-dstdescriptions initialize reporter for azure dstreporting_enabledcs�fd�}|S(Ncs<tjd�jd�jdt���||�SWdQXdS(NR
Rtparent(R	tReportEventStackt__name__tazure_ds_reporter(targstkwargs(tfunc(sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pytimpl+s
			
((RR((RsC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pytazure_ds_telemetry_reporter*scCsy||krtSdd�}|jd�}dj||d�||d�||d�|d|dg�}||kS(s�
    Azure stores the instance ID with an incorrect byte ordering for the
    first parts. This corrects the byte order such that it is consistent with
    that returned by the metadata service.
    icSs<gtj|d�D]}|^q}|j�dj|�S(Nit(ttextwraptwraptreversetjoin(tstwidthtbytetdd((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pytswap_bytestring=s%
t-iiii(tFalsetsplitR(tprevious_idt
current_idR"tpartst
swapped_id((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pytis_byte_swapped4s


c
Cs}tj�std��ntjd�y&ttj��ttj��}Wnt	k
rmtd��nXy�tj
ddddgdt�\}}d}|r�d	|kr�|j
d	�d
}n|s�td��n|t|�d}WnHtjk
r}td
|��n#t	k
r:}td|��nXy�tj
dddddgdt�\}}d}|r�d	|kr�|j
d	�d
}n|s�td��n|t|�d}WnHtjk
r�}td|��n#t	k
r
}td|��nXtjtddtj|�j�dtj|�j�dtj|�j�dftj�}tj|�|S(s^Report timestamps related to kernel initialization and systemd
       activation of cloud-inits1distro not using systemd, skipping boot telemetrysCollecting boot telemetrys*Failed to determine kernel start timestamps/bin/systemctltshows-ptUserspaceTimestampMonotonictcapturet=is8Failed to parse UserspaceTimestampMonotonic from systemdi@Bs-Failed to get UserspaceTimestampMonotonic: %ss<Failed to parse UserspaceTimestampMonotonic from systemd: %sscloud-init-localtInactiveExitTimestampMonotonics;Failed to parse InactiveExitTimestampMonotonic from systemds0Failed to get InactiveExitTimestampMonotonic: %ss?Failed to parse InactiveExitTimestampMonotonic from systemd: %ssboot-telemetrys5kernel_start=%s user_start=%s cloudinit_activation=%stZN(Rtuses_systemdtRuntimeErrortLOGtdebugtfloatttimeRtuptimet
ValueErrortsubptTruetNoneR%tProcessExecutionErrorR	tReportingEventtBOOT_EVENT_TYPERtutcfromtimestampt	isoformattDEFAULT_EVENT_ORIGINtreport_event(tkernel_starttoutt_ttsmt
user_starttetcloudinit_activationtevt((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pytget_boot_telemetryNsf
&
		
	

cCs{tj�}tjtddtj�|d|d|dd|dd|dd|d	ftj�}tj|�|S(
s%Collect and report system informationssystem informationstcloudinit_version=%s, kernel_version=%s, variant=%s, distro_name=%s, distro_version=%s, flavor=%s, python_version=%streleasetvarianttdistiiitpython(	Rtsystem_infoR	R=tSYSTEMINFO_EVENT_TYPERtversion_stringRARB(tinfoRJ((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pytget_system_info�s!
cCs,tjtd|tj�}tj|�|S(sReport a diagnostic eventsdiagnostic message(R	R=tDIAGNOSTIC_EVENT_TYPERARB(tstrRJ((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pytreport_diagnostic_event�s

ccsCtj�}tjtjj|��z	dVWdtj|�XdS(N(tostgetcwdtchdirtpatht
expanduser(tnewdirtprevdir((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pytcd�s
	cCstj�rd}nd}|S(Ns
option-245sunknown-245(Rt
is_FreeBSD(tazure_endpoint((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pyt_get_dhcp_endpoint_option_name�s	tAzureEndpointHttpClientcBs@eZidd6dd6Zd�Zed�Zddd�ZRS(tWALinuxAgentsx-ms-agent-names
2012-11-30sx-ms-versioncCsidd6|d6|_dS(NtDES_EDE3_CBCsx-ms-cipher-names!x-ms-guest-agent-public-x509-cert(textra_secure_headers(tselftcertificate((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pyt__init__�scCsP|j}|r1|jj�}|j|j�ntj|d|dddd�S(Ntheadersttimeoutitretriesi
(RjtcopytupdateRfRtread_file_or_url(RgturltsecureRj((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pytget�s	c
CsY|j}|dk	r4|jj�}|j|�ntj|d|d|dddd�S(NtdataRjRkiRli
(RjR;RmRnRRo(RgRpRst
extra_headersRj((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pytpost�s	N(Rt
__module__RjRiR$RrR;Ru(((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pyRc�s
	t	GoalStatecBsVeZd�Zd�Zed��Zed��Zed��Zed��ZRS(cCs(||_tj|�|_d|_dS(N(thttp_clientRt
fromstringtrootR;t_certificates_xml(RgtxmlRx((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pyRi�s	cCs)|jj|�}|dk	r%|jSdS(N(RztfindR;ttext(Rgtxpathtelement((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pyt_text_from_xpath�scCs
|jd�S(Ns./Container/ContainerId(R�(Rg((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pytcontainer_id�scCs
|jd�S(Ns
./Incarnation(R�(Rg((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pytincarnation�scCs
|jd�S(Ns4./Container/RoleInstanceList/RoleInstance/InstanceId(R�(Rg((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pytinstance_id�scCsU|jdkrN|jd�}|dk	rN|jj|dt�j|_qNn|jS(NsD./Container/RoleInstanceList/RoleInstance/Configuration/CertificatesRq(R{R;R�RxRrR:tcontents(RgRp((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pytcertificates_xml�s		(	RRvRiR�tpropertyR�R�R�R�(((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pyRw�s		tOpenSSLManagercBs�eZidd6dd6Zd�Zd�Zed��Zeed���Zed��Z	ed	��Z
ed
��Zed��ZRS(sTransportPrivate.pemtprivate_keysTransportCert.pemRhcCs&tj�|_d|_|j�dS(N(RtmkdtempttmpdirR;Rhtgenerate_certificate(Rg((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pyRis	cCstj|j�dS(N(Rtdel_dirR�(Rg((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pytclean_upscCs�tjd�|jdk	r-tjd�dSt|j���tjddddddd	d
ddd
|jdd|jdg�d}x:t	|jd�D]%}d|kr�||j
�7}q�q�W||_WdQXtjd�dS(Ns7Generating certificate for communication with fabric...sCertificate already generated.topenssltreqs-x509s-nodess-subjs/CN=LinuxTransports-dayst32768s-newkeysrsa:2048s-keyoutR�s-outRhRtCERTIFICATEsNew certificate generated.(R3R4RhR;R_R�RR9tcertificate_namestopentrstrip(RgRhtline((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pyR�s 


cCs1ddd|g}tj|d|�\}}|S(NR�tx509s-nooutRs(RR9(tactiontcerttcmdtresultRE((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pyt_run_x509_action*scCsI|jd|�}ddddddg}tj|d|�\}}|S(	Ns-pubkeys
ssh-keygens-is-mtPKCS8s-fs
/dev/stdinRs(R�RR9(RgRhtpub_keyt
keygen_cmdtssh_keyRE((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pyt_get_ssh_key_from_cert1scCsH|jd|�}|jd�}||dd!jd�}dj|�S(sopenssl x509 formats fingerprints as so:
        'SHA1 Fingerprint=07:3E:19:D1:4D:1C:79:92:24:C6:A0:FD:8D:DA:        B6:A8:BF:27:D4:73
'

        Azure control plane passes that fingerprint as so:
        '073E19D14D1C799224C6A0FD8DDAB6A8BF27D473'
        s-fingerprintR.ii����t:R(R�R}R%R(RgRhtraw_fpteqtoctets((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pyt_get_fingerprint_from_cert8s	cCs�tj|�jd�}|j}ddddd|jd�g}t|j��;tjdj	|j
�d	td
dj|��\}}WdQX|S(
s�Decrypt the certificates XML document using the our private key;
           return the list of certs and private keys contained in the doc.
        s.//DatasMIME-Version: 1.0s<Content-Disposition: attachment; filename="Certificates.p7m"s?Content-Type: application/x-pkcs7-mime; name="Certificates.p7m"s!Content-Transfer-Encoding: base64Rsutf-8suopenssl cms -decrypt -in /dev/stdin -inkey {private_key} -recip {certificate} | openssl pkcs12 -nodes -password pass:tshellRss
N(
RRyR}R~tencodeR_R�RR9tformatR�R:R(RgR�ttagtcertificates_contenttlinesRDRE((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pyt_decrypt_certs_from_xmlFs	$c	Cs�|j|�}g}i}x�|j�D]�}|j|�tjd|�rVg}q(tjd|�r(dj|�}|j|�}|j|�}|||<g}q(q(W|S(s�Given the Certificates XML document, return a dictionary of
           fingerprints and associated SSH keys derived from the certs.s[-]+END .*?KEY[-]+$s[-]+END .*?CERTIFICATE[-]+$s
(R�t
splitlinestappendtretmatchRR�R�(	RgR�RDtcurrenttkeysR�RhR�tfingerprint((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pytparse_certificates]s
	

(
RRvR�RiR�RR�tstaticmethodR�R�R�R�R�(((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pyR�s
		tWALinuxAgentShimcBs%eZdjddddddddd	d
ddd
ddg�Zddd�Zd�Zed��Ze	d��Z
ed��Zeedd���Z
eed���Zeed���Zeed���Zeeddd���Zedd��Zd�Zed��ZRS(s
s&<?xml version="1.0" encoding="utf-8"?>sk<Health xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">s<  <GoalStateIncarnation>{incarnation}</GoalStateIncarnation>s
  <Container>s-    <ContainerId>{container_id}</ContainerId>s    <RoleInstanceList>s      <Role>s.        <InstanceId>{instance_id}</InstanceId>s        <Health>s          <State>Ready</State>s        </Health>s
      </Role>s    </RoleInstanceList>s  </Container>s	</Health>cCs8tjd|�||_d|_d|_||_dS(Ns5WALinuxAgentShim instantiated, fallback_lease_file=%s(R3R4tdhcpoptionsR;t	_endpointtopenssl_managert
lease_file(Rgtfallback_lease_filetdhcp_options((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pyRi�s				cCs#|jdk	r|jj�ndS(N(R�R;R�(Rg((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pyR��scCs(tj�}tjj|jj�d�S(Nsdhclient.hooks(RtInitRXR[Rtpathstget_runpath(t_paths((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pyt_get_hooks_dir�scCs4|jdkr-|j|j|j�|_n|jS(N(R�R;t
find_endpointR�R�(Rg((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pytendpoint�scCs�|jdd�}t|�dkr�d}x@|jd�D]/}t|�dkr_d|}n||7}q:Wtjdt|jdd�d��}n|jd	�}tj|�S(
Ns\RiR�it0s>Lisutf-8(	treplacetlenR%tstructtpacktintR�tsockett	inet_ntoa(tfallback_lease_valuetunescaped_valuet
hex_stringthex_pairtpacked_bytes((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pytget_ip_from_lease_value�s
$cCstjdd|�S(Nt
OPTION_245tleases_d(Rtnetworkd_get_option_from_leases(R�((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pyt_networkd_get_value_from_leases�scCs�g}ytj|�}Wn'tk
rB}tjd||�dSXtjd|�t�}xR|j�D]D}||kri|j	|j
d�jdd�dj
d��qiqiWt|�dkr�dS|dSdS(NsFailed to read %s: %ss
content is %st ii����s;
"i(
Rt	load_filetIOErrorR3terrorR;R4RbR�R�tstripR%R�(R�tleasestcontenttextoption_nameR�((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pyt_get_value_from_leases_file�s	6cCs�i}tj�}tjj|�s8tjd|�dSgtj|�D]}tjj	||�^qH}xx|D]p}y>tjj
|�jdd�}tj
tj|��||<Wqptk
r�tdjd|���qpXqpW|S(Ns
%s not found.s.jsonRs{_file} is not valid JSON datat_file(R�R�RXR[texistsR3R4R;tlistdirRtbasenameR�tjsontloadsRR�R8R�(R�t	hooks_dirtxt
hook_filest	hook_fileR
((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pyt_load_dhclient_json�s.
 
cCs^|dkrdSd}xA|D]9}||jdd�}|dk	rtjd�PqqW|S(Ntunknown_245s)Endpoint server found in dhclient options(R;RrR3R4(R�t_valuet	interface((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pyt_get_value_from_dhcpoptions�s

cCshd}|dk	r(|}tjd�n|dkrZtd�tjd�tj�}n|dkr�td�tjd�tj�}tj|�}n|dkrtd�tjd�|dkr�tjd�d}qtjd	|�tj	|�}n|dkr4d
}t|�tj|�t
}ntj|�}d|}t|�tj|�|S(Ns&Using Azure Endpoint from dhcp optionss#No Azure endpoint from dhcp optionss'Finding Azure endpoint from networkd...sNo Azure endpoint from networkds(Finding Azure endpoint from hook json...s$No Azure endpoint from dhclient logssLUnable to find endpoint in dhclient logs.  Falling back to check lease filess%No fallback lease file was specified.s%Looking for endpoint in lease file %ss&No lease found; using default endpointsAzure endpoint found at %s(R;R3R4RWR�R�R�R�twarningR�tDEFAULT_WIRESERVER_ENDPOINTR�(R�tdhcp245tvalueR�tmsgtendpoint_ip_address((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pyR��sB






		

	


c	Csd|jdkrt�|_nt|jj�}tjd�d}x{tr�y|jdj	|j
��}WnDtk
r�}|dkr�tj
|d�q�td|��nXP|d7}qFWtjd�t|j|�}td|j�g}|jdk	rI|dk	rItjd	�|jj|j�}|j||�}n|j||�i|d
6S(NsRegistering with Azure...is"http://{0}/machine/?comp=goalstatei
is!failed to register with Azure: %ss#Successfully fetched GoalState XML.scontainer_id %ss/Certificate XML found; parsing out public keys.spublic-keys(R�R;R�RcRhR3RSR:RrR�R�t	ExceptionR6tsleepRWR4RwR�R�R�R�t_filter_pubkeyst
_report_ready(	Rgtpubkey_infoRxtattemptstresponseRHt
goal_statetssh_keystkeys_by_fingerprint((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pyt"register_with_azure_and_fetch_datas8
	

	cCs�g}x�|D]�}d|kr=|dr=|j|d�q
d|kr�|dr�|d}||kr}|j||�q�tjd|�q
tjd|�q
W|S(s$cloud-init expects a straightforward array of keys to be dropped
           into the user's authorized_keys file. Azure control plane exposes
           multiple public keys to the VM via wireserver. Select just the
           user's key(s) and return them, ignoring any other certs.
        R�R�sIovf-env.xml specified PublicKey fingerprint %s not found in goalstate XMLsFovf-env.xml specified PublicKey with neither value nor fingerprint: %s(R�R3R�(RgR�R�R�tpubkeyR�((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pyR�7s

	
	cCs�tjd�|jjd|jd|jd|j�}tjd�y0|j	dj|j
�d|did	d
6�Wn$tk
r�}td|��nXtj
d�dS(
Ns Reporting ready to Azure fabric.R�R�R�ishttp://{0}/machine?comp=healthRsRtstext/xml; charset=utf-8sContent-Types#exception while reporting ready: %ssReported ready to Azure fabric.(R3R4tREPORT_READY_XML_TEMPLATER�R�R�R�R6R�RuR�R�RWRS(RgR�RxtdocumentRH((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pyR�Ns
		
N(RRvRRR;RiR�R�R�R�R�R�RR�R�R�R�R�RR�R�(((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pyR�rsJ	
) 	cCs;td|d|�}z|jd|�SWd|j�XdS(NR�R�R�(R�RR�(R�t	dhcp_optsR�tshim((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pytget_metadata_from_fabricgs
	tEphemeralDHCPv4WithReportingcBs&eZdd�Zd�Zd�ZRS(cCs||_td|�|_dS(Ntiface(treporterR
tephemeralDHCPv4(RgR	tnic((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pyRiss	cCs9tjddddd|j��|jj�SWdQXdS(NR
sobtain-dhcp-leaseRsobtain dhcp leaseR(R	RR	R
t	__enter__(Rg((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pyRws
	
cCs|jj|||�dS(N(R
t__exit__(Rgt	excp_typet
excp_valuetexcp_traceback((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pyR
~s	N(RRvR;RiRR
(((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pyRrs	(3R�tloggingRXR�R�R�R6Rt
cloudinit.netRt	cloudinitRRt
contextlibRt	xml.etreeRRRRRtcloudinit.reportingR	tcloudinit.net.dhcpR
Rt	getLoggerRR3R�R>RQRURR:RRR*RKRTRWR_RbtobjectRcRwR�R�R;RR(((sC/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/azure.pyt<module>sV			
	F	
	&k�