From fc49e2aad3c20b3bccaf727c056efee99b435a65 Mon Sep 17 00:00:00 2001 From: Joe Keen Date: Tue, 10 Feb 2015 10:54:49 -0700 Subject: [PATCH] Python persister batches data points with common name Removed some checked in .pyc files Change-Id: I39896e4669ca98378d1d6c5825405fe24e667093 --- monasca_persister/persister.py | 33 ++++++++++++++++++++++-------- openstack/__init__.pyc | Bin 199 -> 0 bytes openstack/common/__init__.pyc | Bin 311 -> 0 bytes openstack/common/gettextutils.pyc | Bin 17888 -> 0 bytes openstack/common/importutils.pyc | Bin 2915 -> 0 bytes openstack/common/jsonutils.pyc | Bin 5736 -> 0 bytes openstack/common/local.pyc | Bin 1303 -> 0 bytes openstack/common/log.pyc | Bin 27386 -> 0 bytes openstack/common/strutils.pyc | Bin 10179 -> 0 bytes openstack/common/timeutils.pyc | Bin 8667 -> 0 bytes 10 files changed, 25 insertions(+), 8 deletions(-) delete mode 100644 openstack/__init__.pyc delete mode 100644 openstack/common/__init__.pyc delete mode 100644 openstack/common/gettextutils.pyc delete mode 100644 openstack/common/importutils.pyc delete mode 100644 openstack/common/jsonutils.pyc delete mode 100644 openstack/common/local.pyc delete mode 100644 openstack/common/log.pyc delete mode 100644 openstack/common/strutils.pyc delete mode 100644 openstack/common/timeutils.pyc diff --git a/monasca_persister/persister.py b/monasca_persister/persister.py index 60b485e7..04a5662d 100644 --- a/monasca_persister/persister.py +++ b/monasca_persister/persister.py @@ -212,7 +212,8 @@ class AbstractPersister(threading.Thread): self._database_batch_size = kafka_conf.database_batch_size self._kafka_topic = kafka_conf.topic - self._json_body = [] + self._message_count = 0 + self._data_points = {} self._last_flush = datetime.now() self._last_partition_check = datetime.now() @@ -222,12 +223,19 @@ class AbstractPersister(threading.Thread): def _flush(self, partitions): - if self._json_body: - self._influxdb_client.write_points(self._json_body) + if self._data_points: + try: + self._influxdb_client.write_points(self._data_points.values()) + except Exception: + log.exception("Error writing to influxdb: {}" + .format(self._data_points.values())) + raise + self._consumer.commit(partitions=partitions) LOG.info("Processed {} messages from topic '{}'".format( - len(self._json_body), self._kafka_topic)) - self._json_body = [] + self._message_count, self._kafka_topic)) + self._data_points = {} + self._message_count = 0 self._last_flush = datetime.now() def _is_time_for_repartition_check(self): @@ -238,7 +246,6 @@ class AbstractPersister(threading.Thread): self._partition_interval_recheck_secs) def _process_messages(self, partitions): - while 1: if self._is_time_for_repartition_check(): @@ -252,7 +259,17 @@ class AbstractPersister(threading.Thread): try: - self._json_body.append(self.process_message(message)) + data_point = self.process_message(message) + + key = data_point['name'] + + if key in self._data_points: + points = data_point['points'] + self._data_points[key]['points'].extend(points) + else: + self._data_points[key] = data_point + + self._message_count += 1 if self._is_time_for_repartition_check(): return @@ -261,7 +278,7 @@ class AbstractPersister(threading.Thread): LOG.exception('Error processing message. Message is ' 'being dropped. {}'.format(message)) - if len(self._json_body) >= self._database_batch_size: + if self._message_count >= self._database_batch_size: self._flush(partitions) def _get_set_partitioner(self): diff --git a/openstack/__init__.pyc b/openstack/__init__.pyc deleted file mode 100644 index 7fbb220b987e2e9fa0255b5abd9d3b8700ba029e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 199 zcmZ9Gu?hk)42CN@h~NYG2DjYh1wLNa9j*GzMD|v~Gl5g;P>p6^3Dh4riGvekW^f)0=5BDXBijdzg&|`iu3KNO{kgFe xfQzxW3*{CeP&8~!ouuqps$Zjjh7!hi1+@0j7pLD{uSm~bwiuXUFxG}HBx~z_lXG6i O9P8=~IdlRzDSrVz)Khl= diff --git a/openstack/common/gettextutils.pyc b/openstack/common/gettextutils.pyc deleted file mode 100644 index e58b46576d6e521f4b6561f9837420c2d93336da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17888 zcmd5^&2!vFc5lp(Lk=|(C9N#$%WLe1Eh-U*UfWS^6v?|X^;wZ=2c)buH_8+^zzjjn z3`PJ((rD!^$MVM7RHbstB{^)4d(1JZ`~#^{aLd)YaCmzW;Sc`Y{vBFOn=^N&KJ+>X0vW0^sr#U1IBNdVAg~OO$R;H z%ooNyGv<@cLnb_Af;saHy)T+@(d-;Hn@6N@)NFo33dhXmD^fUaHeZ#(3A1_91oLcV z^OOndQaEh_^i(%HXQYn{QLp44>}IQrIw} zSJCCC6*G{kdWrg77ew^KRHUel+3dyLX7SR+Y&^`n zzv!k}Qa(`%dj6B~MfYmh^T+AbAVvcS)I`%!>W2LYavhYd7sRk|HSGAKUWQg;_qyLp z!?K=IpAAFbk93I9RzFw@3YOkfke0IE>TfF2*?8qQ0+) znSjmchAS`>e%khz(QO)~cs0M%D(@7QWkrp}%A_S|4#%SRtyVOMvR3OnXh~@ZOr!2J zoY$Q;hfJ!;4vsbL;`AJ>nGxMML2cP_%+C!KLG^@BMT?*?&RnNxwLfTcTgCb>z~ z+JWNKq%d!O?wBu)`O+~Rs9e?jnK7SM&C@DWiA)t$^1^JC!1lR=@X^#%=PK<&*@LlY z(uguu%>0IbKZL;>K-~OxJBGZvkG4Z-8*Fak4&uzEz)iIY8Quz^F-02z=6B79vyBb!{CN1o^#3R6UF> zD4N&`+dgi%k3!c^Q;3Ugr@Pz>ABMfDG36@Z`bkMcM3>Wpb*En;wJ8luP$-rUEyZ0L zCD$Jgdl6cJ_~A(WLqSvgNC=@&)W1YJSarp;C#9`WyU1OO(s$TS%JhnbDZ_( zat*V(zC^K0DUEU3i<{B+zCW1uV7XPFG^9;YFL_l+xU+t(b^FTZC!(((sO?k7MnUeU zU8yQBffC$V!pZEpK9ZEqIw_&fnM%z$?5r)(s(91~rI#kiDspxJFC9+M~ zgu>p74JBfjM14OQBMdhwHON%OezQoCm+_xKLC3F_n~@B{8b&j!c55lcY#9NIdsW%dyVNT-SiXn#RO5YkzuIE7Gfv_@|`KR!1u?=OPNBIk*E8dB^tkWTS9B^w_wPdQw(V*QHH>w_fnov zB=ZXUoGlHIN=eDdeNb{{ZHe~72GRq>P_35c6fMo-aY>D6wSu_aYN;1zbK*?owPAuV zJ;}!2Y2Ky<@m}YNj>)5dc~rjA)=FuwBNdMZgOsF<7;2STrE#S3+Tv`zx;V>!GH9Ek zv{6HTXlTUb(hnmH^Z^s(o+n+!)75zJFdRhTpdA*zSK|71Jm^H-QNmodwRDc5Hltq& z-)%gjVgD*ZPXw-vnl-dWlnb;2>38@zYy$y7@{O0n0kU(AnWs{smPE5fV)2r03cCDW zl#QG22K&M<$mxuFZq$($#_=d|F|j*HQ~6Xu7opz9*u61)3eq+|AaSFV&+;5$iX
mB_L{NLvPIxBGlXW4KVCv=YE#F5hdkZVB**ndXo_hqxb1c$ z$lFx1G=;<5kjMT@Dx8Tb~Fekxgl#Dwi!wRBKCrniC3E|oIo8_Aj zqHG&7&4jPliyw)Y*>uy&PLXhy>Eu$_>^9w%QJSoz+erUb^wBvLIB8>Qbjv#YWt-Ht zp(p}%5RPyk`bi{eBdyBIYaf1mr9@B8*|dT)|Qw|dCVZZ^E}aZiM18`yETe>85uo~ z+pyD78(@fFHxl^DD}w%Hol=?h+Wv}twbJo7pj-3B!-tXnc#F7h(F!gLj8;K+K=O*k0++P_I_fKc-XJ`` zbI2q=C6fLHI$b0}1b~*FFa1xPuDCWScjK+xNc!$*5Vd2VC-$C*kcCcUCsqRH1u%>+gL9s?rChOCRxijV5FG%dann(ITWz%WJK#W@F(E^PDvldC(mOc8q@}0n z8-c44j-D~kDi&#m4B|eGpPD_X%%{N8P_t%Qz^L(y!Ym;)7VxMBgGk3K>ogV@S1c_b zg>riW15cFzQw+zBL;06+5wnEn8*2)=ZdG$ z=1AMAV#=K6b}#jQ4}Uc}QUbgSxS_95SN)`$dhB)o*c$I$kn{IAQU(;JQFC6Yo+iqI ze}XZPZXT;R(lwl{{6dPwTdR|PRu!L(n=mzwAjnP1`#P{;=HIfyLV1Sh;h`NdHt0+gp0 zg&7kqfYO!IFU|udm@&U>5TqlLI)_JC3u)oCM@SIXEUY*W&bVP zzpNon+_uVrx+?2??oyfj7WDlKE)-Q?YFJm zKg$;}Amu01HyFP{k{`THndU8A4A9ey>xxxfSDdk{C9vvnz%c1>y=cFS%NjGyXHNCg zS%bBvoduJ8X`W)exkfKAs7v{Pcm&ZYhRJj0=^R`DE!A3t6W3(8gw?vU?$IVGWGsol zKj@CI(wursX~kE|N|;KTm_o#*R{r#+Cy^D~_Q(#8&3Humy<GsEBi;(r4p*M!g42; zDRtfd7qWgOvjdNn{F2*KbiOzRGC{mQGLPSpNs$c%unSl3y>9+kTpVXeW{V*n!Z-1F zmmYj*?!q=a{sH^K{Qf4de2!NZ^Tu+?L3`G3{xwFsZs%D%gAJ}_nUh;h=%REPoj&yg z^{ErybJ@KT1c+XTvTuY@7++$}d6o;~XI%tqxk@rG>^m5TFN zkd4~gd9>^U(ZSj_f;ZW#f#nPYlUP+9^u|R~h}sc0-VeDMK@#G4)I&(w&ahJkfp{Kc za@lf{tm6G;cYWXw(`~H&(yzXR8_exN5qe>T!h32iPe+}PHVjY|DfzD0mbVb%VyRhI zRxL~AW?MF)QX#!tsH3%M z*uf%M_e{T62y%XPi^cN#|5$Q5BInI>)?lHjU#r7_5yUfhqndfYeLgvnC7@Zjxz|Wqg;+oJYYpRp*FvP?!BE0A!)C?+gkE$zjJ7H{;s7 zxRTFd+{h=^TuV8yTvk;rm`lq(iCp`AC_Y)$RK_f`Ve)VTyt>BK55-N$FqOvrmC4wA z4Wqzz7xIm!-sHBQTqtdQr?Im-BGwjMUG>Vh-9DT%~smLn^x=HLfWd0>e>?3 z!sA+*ca|p#k1h?p%hG!|WdfC9=VjDZq)PL%n|w|i>QVPa5WP=WqB*tuJl^(xjEhnr zrL@=Cm4uXk2f9)&)z@lRGIAQPG)`BY#pCrx{X~7fK2xs(P@sa*q|o@&iV1G@TnyO# znn_-xlmZ-sJ;TkDFlg(rYbXM0cxKG;sSRZn*-!=}S7r9Z01crT@+tftGQcB-o%{}> zWTkk}kdJJQy4N-i^?#>`=V`Kon5u z1%RKxR4-uDF!l;xK!*1C8lj(^d7^S??drXEB^sPFpW+r0HFz@&@hkHbmndVy9Lm}g z(>~)o_{!k-F7E00FDWx{O-3v+Q%@h`bQ?PY6=d@t`cY3%d*)A)-W7XJzh?C#hfQQ> zs-g;tw=*U~CWv5dqD2X?QcCR`X}KiO=5+F4qR7NhybOrP6k^gabwwWhTucvh8EkK2 zxuW}N*Ca#reu$Sf)?qW^&pXi|*p-3m0suRFtOlAEUK&_JVefb9%!7zaJ-@#d`0rf@ znc{&O2!FgE;E9Y1yM{A?P;CAS3<(=;I}vQAr0!3)TdQl}nlVqd^BXt+P%>jYy6F$H z7A~nixZJoaR>(e(yIHUG(M>TGov5dq%QPFj^6`~hx39c^n>**$Zrr(YkthMA;Ml@~Glzc*2!~HN$ABKRInlI(JXUd}wEj>LS~C;`B!KNo&st5wBiI5w zCB`&SAz2kuq9`kj1?t&_fnR~98=_6#ZZyE>A$b+udQj2;W@FPcl4DK-^5T+x(xn>H+mI&3e+8%G8kEEzx_O;K zhvq#&>E>`@vtd;`T<^I>6=JbBz=-SN;>2PV`cyrrnnSlk1H^%(&vBwkhB zQi)`_ZE6)yx0w{OAUyyf7|BL?fE`>E74axLP>3cPw0k40&DzSe0;3_mQldB(cumBw zmMDQQH3h!D!Z-Z#9c;j-G}~q1jNeLtbZMoOSgM;EkNh4fpSC;yceaB|9BMpRnpzbS zx_%4OVH^7Yvm3gmE8SRLT2QYPC)iD9WU{1ft$1!kWLOfc(ce&Gh`9)k4Vk@njC*gW z5xQT$Vm@{r0C&z^h<-(;c7yLrbkclFocKct$;5())!1wAoH9hY)C~vNA&|WHSF{`? zxn^{i2<@SUNtABy16=CP5x7%p8EI3z-{(opB7^Q+D8oSZkI2C9dt*LfL_G2Mp_)!~ ztFP}hJG_ga_z}-WoWyJSh*pk4H zb70Nrpu6yWvSY4aSiTS-vwopi(&=XM4G@53`Tk3Ga`?Cjlo|Ppw$jWyRlQNm6EjP~ z&fvhk9d|wH-P$Oz2Yv@ZZb4u{if#woRvt-1LCD}3R&tO->qRq)z>^38k`?Kol~2O% z2tYVL#zV{e4wNQ!16Ixs4RPzC{9(P@IVs0Hv?Z={Q z^vAZv^q%y=TLP_LF2)uHXaz95Wo?|4-&f@?my5%!Tebv>($u}2Q=K;N`dNEB46aAL z(DJ@ok*_kd{3(UlgFCM=LYC7*jkh=$G`2q{<`f2g{GdN+-prtjG}Z8PhP4TWHG3 z=K6v(1`6|fd0450{$TE<3ndFtR8K-cLk>jn46d0 zXS|1FpR7ZZ&VQgyrz1CwGv$&BU7d)=F%&TOz_)d$8A4uX!k@FAj7o9HFuR^BT#0)t zhS1OU(ZD|k+5g0WlYT(n{6iiTD@puV3{sC_BSU5ZsdCjkIU>A}J7mONZ~`iV=lmEP z>Vkq}CfAgxW&$@$AdsEJWoZRlu>aV|&~2&Ln%FEu&D5L1*F5^-zA`~aiW@X1`-iWB zOYz(8e1QcuH`o92bpa*rGw$XDmI(sgz9bXS~F*PxSE%Q1TU7$N4wTiP;mCHQfmFCa!m{ z0f?2MB+IBgzFdw)N_!qO{uDI*f&=23b?rp0vbYHFzOnROQcV&SI3!Xl_ELa6Yv2hf z8i8#k&ffC3!k!|Ef!&bf-|aI7#)>8Lmdkr!!)hTDNb> zCp7lru6#;kFRsZaHTGiF`(3{HJ)Q*qU_kGUc%s=*!4q-&Q(kiD`)oSIqg}$r3jD7j y?-6`Vn>gW<9IR|M@C9)LIAfzytJbQ=HyYLYobE%a*RbyL%E`Z|ztuR=IQ8EsYM?Rz diff --git a/openstack/common/importutils.pyc b/openstack/common/importutils.pyc deleted file mode 100644 index c7b43e894116a2e14fadac749c2fec39cc5260fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2915 zcmd5;&u`;I6n=Knv`yQ` z(Ftroc}P`2CvdzU(n&~phhE@;4&_~Ox|FYovqE`KoE`_}tMme~YvQko-)H}D)aQLZ zh8cW2U)07$Mpda(dDOVFDqX2;lQ`JJ5sAzQN%39laQ2vA8K^7pii?)Kck7l34 zToTO$^L0Q!cIYagtB|fb4 z@G!J7i2V#^qFiG%phsDiS{oIno}*)(DfMYo z>a1#V_U3ioR7y@L55_=96x;V;_a$;@qb$|BcF|NtMcsgl(a=6R7!B}KV8C>$#`9XIHcKBPQEX`udNY#T zjnoUJC1i|X1dKgSPBt4amTn!}x6lRM4*HglP2o;32s*(|uo3j|FNw#ba{C_5z769f z_mCCHsmqXlCnN>msNI9{ydn)`Ww~@Cc>)(X0a!XyQC&o(izRCECZa~X!G!Nc$V<(s zMN$%-KWF#;Ft-6rEpzpBrZV>-1}v8n3N!v=g>nqzGNr`#onPVv>OqBf-=E!i_aCPMIL>`Y9VXlg_sa&Mfxv~o+c03qF z`1#AZQ!E#q|GJ&Ms3?tvBA1afOXyfuzdvCFh*q$NeQm8+!YtD|wDHg$jF@T3n+dCb#51BtK5rrimRy=} zPEX$A*_TrOBCQ&Ae^QDuzLHXjwvRAox$M#E1ITb2aug}D%J}U2X!aeLTPX%eo*B}K zXtxz3uj}s{_v4FU>}4kGagCZVabAQhz5Bz-OEUAwKLtF?kSQDlA~e(H^9PDGka*cjz7p8wZw;-d5H4VrVDml4O{aqFG()$rcasZc^qi zxb)&hByaU*>Jdu0^6vfNaT}1^+-gCqJnI1G)p!V<>#2*S@_6Y)x4C=*gQM$=Ic@IGBCA5x`U~j5UtM#~*H1q5wEjcRh z16FwZ*!>|^zDvxq{R(*sh@Q)^6Kq1P{=0>dCrMssNiq?+G2OmwJ!FpsEU6`lc2H|I rd6$RyyXfwy;{D%W42=A9pEzGKcKKT9h3mn3r@!7`>2LOX>#P3)DNY0E diff --git a/openstack/common/jsonutils.pyc b/openstack/common/jsonutils.pyc deleted file mode 100644 index 032023b419ff4f7cb074bea7e22b39356fe0e740..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5736 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 diff --git a/openstack/common/log.pyc b/openstack/common/log.pyc deleted file mode 100644 index d82e4958a6e87757dda1e23be79c4830356c0a8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27386 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 G?Ee6N(xQI= diff --git a/openstack/common/strutils.pyc b/openstack/common/strutils.pyc deleted file mode 100644 index f2c8b3735a8b3a559b2e42d35877c7d6421c8c7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10179 zcmdT~TXP#ncJ2Ww-Xxh4b&GtRrA-4A2~v{1S}!b1rbSZbQleA?$g(L?;1DwahXiKe z>47C|$d|Qq+dq)XQ>wP|mVHZ}_c2e&56E*WRe4WU9#WM`zVGx5KuMI6+Em2~W%Tsr zboc4*bG~yj#+3J&TF00-)cT2x;(b!A zpUjFMND(tlDept&<&{@Z4J>C|HLwY%Bt5OXY1Kfl3FTc<-i-2Ql~+{Wobu+CcUgH? zRAWS~pHWYLt^9GdxcMu!epWsGRQYF6_(-jvOK0=XslZbHS>;_-*Uobx=hgSv(+kQ! zrFQ>7`4`BI_3a(&A$w2!k9(g!-22zo!*6d|5514n4_LxQ<-f`QypPonnCdN_srOUm zU6bNFQv8|Je4>89nZC;%CH>EZ;Ju8#Bt=_!pDORV`T@J~6E>9#Hz_r9NXE)to%pR{ z)BnzI+MOh521(#++YLQ?$8Wa%*sgcNS`tK|o*N7P6Mt(33mp?CRqRZf-II#d1d^y$ z1DtwVe^+Ym2Ejm9b6aX|2f<)gQ<0iV5GYjX4^drs{HQpyd2_?Nv@wTtX1efb_3rJ; zW^i-*W?_4OJ4p7wnEoK)m@7-Sf`36qe{giaJ@$L17kMkM2)|b(O%h=x?)bt;6iRJZ zhVS}XN|z%$^`UeOBTbcj^myaRhAwXEAr^`odUGZjMb`CNL3rQQ zIvLAK)i#Ul#LSZ@_L4WAX=9as7gdF+!k*uq)*JfLqt7;xPGcJVcq9LKV{&swzkd|T zqm9Xp{O0uBrJIE`tKWHsZsrJzJSiR(H~;YJL2t?#PR5xYe}+jnXE2=Jyfm%fB<=N- z?1oHqeZE)JMHxz%NGr{J;J(ClyvQC!5`*U_H^FqT4~l7*&P{1dmxTIh{rM}p%%a;y zzF55ZXrcJa&6$ln%B;gM>?<21gV-D-oe%B(9@yuN@=O7B({kWAgBoR?KT6*%{PcMw ziBkKDNDu>XEY&_|6pb|cpOLJDi66IPKe1g~CvgxqY!_-~Z%0wncSBJ)w07dq_Jd>x zdUwT+V*B#k*qDvKg|M4-`_654d^-qBriHDAd93Y+Rf%fa2rd`MMzbM~ZD|&t{@<6YXPQ5OS)}pW;H0*lN^zF7AYph1N6gUX5 zT4gZe6mnc(wH`;Us#&&a8AgllZ14KDq#*Q6^b;iWm_F9?Uf_e%X4jivjB1^hA0~P} z_S=yzHn2UN?YUain%9Y2+XJ5sf4&ukuCBR7AeIgQX>nFl?bk$YKa?)>=!_2N9~1KQ zT)UfGz}(m!!>Tat>XhZL$Qw~Z9k1~~sn^7TTlnd}MPd#gNU)ouZ2%N8Kafhqfl{GJ z$L^r|Ua8$Bcal?8CNYkh6s81C~2$5e7s?PE$y{mN3|pxOui!a4iabEF@?)?br>#tSbxpib}l{$Jl`K-Tl8w#Rx!+>K1S0BE7N7{D^b9UzYltf%^s{!2Xh->{ z@N51qB7vlBj;jMWnaEq}{8!eu;#-yrB-J#j`6-=WGy2UsF_Lq}lIqt(?KKVa^@bn% zPuuYgEXgSPkkVA{2QQqZou4Y;P^T%aZms6G6L%XRXwI4YTe7DL{f22RRs+q(=J$H6 z6=>(BG5~x6mBN~FDRl4@`V2ng2&+lA4G)A|CjQezisFN?xh=V7^u&*)OT~GxR4rGW zm9^VtacL-$P=BSC7w(k%O~ft{2qD^y0DFWq9mR?7Imj8t`Z8HyvqLw;5Q_2vvVb*4 zl_W2WV1V~YM^S0%#_Ms)4&5GzsS;O8ot&^Hauc}|)}Y1T5dOVmjap;Yacey1TmhZH zJeRn+-HcS@h?b0XxDoL{oN4;Mr~j6 zV`3P9(n@vDl5Y1nH4BK1p5=$(yJ`^Uyf>!ezf_iG83I^_l;CR^fpUR*r~d*PyC`Ox zCLh+0&_e;5-|i-G?~QQT9a?UCE2G%5gE~R8n+E`gQ6d-s7;u}h?|NN8TR=}Bg}xFj zzuW2!U$QG0KdD+S*=65H*n!#U zd_ZdgFXJIov7IDom*(fas3ul>Ckp3a|L3pHH-qiijk_@I@K^NQPSR?cnNw>}lJ(QX zxY@nnY|LVL4N6 zcEqL&NBRtoXbKzUhWW(a_U+Wc($vdNQZIh8R-n>4A269>@*xr!e|S?th(#J0ASm=E zHz5pIap=H{`e}rA98xDZ1_?5nuud5> z6CObZbH1;K(#w8nx9(TXlKzNWL04TJf6Ka6+<Qr8WMQlC;Pg7BV%>A5W_!{O>j_UD9!U~W zpk)x0p1@TXkd)DLpGkhy0Fm%3aAJ7=EsFvtm)~Ep>4t#}E*~+rzL3vkv8kS-(ZI4lfz51RMyE zN&JRLu@}Et>T85{2qdBNAUPOP`-mTZBc2CfW{80z>e)2RCe}!3crcO`5ro2LAC*A! zcWQrFdBds%>TiFi!nf(8<9-(unBe)@_eYfe2lhA^RpA9@;K7)v6-^fbS7*@ztcw4G z0W7>*Ixv7cVW^B;xxg*a{{%?76@}lyZ{;0G>W#oiMYNgqW`y|hMKKmNNMWgh&<^eh zy6aB6Esm>bG;Ra!(xID?)$Kx%OwZb@L7KUneY1+&X~pfVqLNlrOhr$>R=?mdNbd5- z%x(UdsqhzkVQyJo##(vh8P4`HMzZ;{Y319Sbq_;xLe5o5XIP68-vrr=a4{}-!lt?R zTecSg=jnZ<8v{3^9VBkkZu$wXMeO`)-td_MDlxERmkqoGVY`#aMy7ruqF9FFI4KSH zCv|)bIC9denY3iXRp@a*-;LdE{fgekE34wn#cg7wGTRH>QR_Fr>x(i#ZhL!k81;}x zG;Bn~E~MtAMAs^4AzqU{rJgIeh8rbZAYfOHo}xci+L58Uw)+uL-`CsWH69&3aaWC- znhL3e$t!8Yp))GklT&)qT$V8|?%$1Xi{pmt?O=p@!Z17QpDGFOSzPSdl$J2tStK3p zJUSH^HzvGvd$6`rsg}PfSC;NpSJsyAiKn*ecg2a52+z4pT7r|@;z&*uPjZbo>a>NI zcJw4Un~iwiSz2ECy1MlB{d;RmYZW2DS&2i4VRj@_^Mj_SxnQ|?VTVLTLf-!2OOI__ zEQ$LV`;Dsq)cF|mIbV`Ly0|SDmnlid^ZP@=C9fk)=Ca|Ozb5u!9Nd^gswPoYB=PTA zMc-Xr5GNDX;gmIwaPu6}bFdPp;D8QUqqz%6&se>vlg_8uj0Q5sN2I?8XcvFaTr|Q+ z&?K+`b&P6V7t**Yq%CSv8A5Y4gvM;NI!idd7n zYnGEra|+mW@g&mcbs$x?72zr{jKU({D(u=0qC&WWF>by1h-AP6*wA)sz7}o506X0_ zZnf~DBo!;6ZU?;S!{yxKt{XNYc!*oN*=Ypz?iR0^FRF*ilO0n3ixZbCcdR#}vo zahsjjehpHQr!8#xTDy(sZhq2AXd%3i)I6n^*K*wrgNY$JagcN|hA~{vI}v7%k};bS zFQ)h3P->XwXV?N<(Bk*4cp znJsG)EKLealX&Oj20hn?VJ7o0#Xk%KB1ub?KY3U~RwZ z{z9d)4wpI3kA-g$^y706g9( z4J~g^9bV$fvB*=J5a9m?ad;yjJ;SIliM;GlwTk=dYSmd|#~mheDYD7j6p7wJ(tDkr zGq2OU3uCw=FVx0oze8G@B2cvP`0gwt?_6Rs%cRQ0Wm0F-U=kpa+uZ8%J?HL1rP>pO zD@Rvf6*Y01?8l>DyjNMcbH^!XWw(uIbkBJYWv9r5%p2DNZ<}(JkU|K&z=Cm~g~bsAsWIyW%-#`sUh^8?oSd*gHC7yk>B6kyK) diff --git a/openstack/common/timeutils.pyc b/openstack/common/timeutils.pyc deleted file mode 100644 index 8ef1e167d273d251208b99fa48190e1878c4c3d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8667 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