From c98835c7004206b6a6dd968683c82502bc41176a Mon Sep 17 00:00:00 2001 From: Meena Kumari Chatla Date: Tue, 17 Oct 2023 00:25:18 +0530 Subject: [PATCH 1/2] Added condition to skip message with Test Added condition to skip message with Test --- .../AzureFunctionOCILogs/main.py | 2 +- .../Data Connectors/OCILogsConn.zip | Bin 30556232 -> 30556241 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/Solutions/Oracle Cloud Infrastructure/Data Connectors/AzureFunctionOCILogs/main.py b/Solutions/Oracle Cloud Infrastructure/Data Connectors/AzureFunctionOCILogs/main.py index d0c8c0b4499..771bf2dc01c 100644 --- a/Solutions/Oracle Cloud Infrastructure/Data Connectors/AzureFunctionOCILogs/main.py +++ b/Solutions/Oracle Cloud Infrastructure/Data Connectors/AzureFunctionOCILogs/main.py @@ -119,7 +119,7 @@ def process_events(client: oci.streaming.StreamClient, stream_id, initial_cursor return for message in get_response.data: - if message: + if message and message != 'Test': event = b64decode(message.value.encode()).decode() logging.info('event details {}'.format(event)) event = json.loads(event) diff --git a/Solutions/Oracle Cloud Infrastructure/Data Connectors/OCILogsConn.zip b/Solutions/Oracle Cloud Infrastructure/Data Connectors/OCILogsConn.zip index 4c0b4610fd7f67fbf4c41a1966ae748d829411e8..f4b0f4bce0925b157cfc63964183c2b01cf862ba 100644 GIT binary patch delta 3429 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 H2gm;ahVmdY delta 3413 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 From 9e86d4c34c02e269285aa0090f8975faf50219a1 Mon Sep 17 00:00:00 2001 From: Meena Kumari Chatla Date: Tue, 17 Oct 2023 01:53:39 +0530 Subject: [PATCH 2/2] Updated the code to fix runtime error --- .../AzureFunctionOCILogs/main.py | 41 +++++++++--------- .../Data Connectors/OCILogsConn.zip | Bin 30556241 -> 30556249 bytes 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/Solutions/Oracle Cloud Infrastructure/Data Connectors/AzureFunctionOCILogs/main.py b/Solutions/Oracle Cloud Infrastructure/Data Connectors/AzureFunctionOCILogs/main.py index 771bf2dc01c..9e4e4eb1e49 100644 --- a/Solutions/Oracle Cloud Infrastructure/Data Connectors/AzureFunctionOCILogs/main.py +++ b/Solutions/Oracle Cloud Infrastructure/Data Connectors/AzureFunctionOCILogs/main.py @@ -119,28 +119,29 @@ def process_events(client: oci.streaming.StreamClient, stream_id, initial_cursor return for message in get_response.data: - if message and message != 'Test': + if message: event = b64decode(message.value.encode()).decode() logging.info('event details {}'.format(event)) - event = json.loads(event) - if "data" in event: - if "request" in event["data"] and event["type"] != "com.oraclecloud.loadbalancer.access": - if event["data"]["request"] is not None and "headers" in event["data"]["request"]: - event["data"]["request"]["headers"] = json.dumps(event["data"]["request"]["headers"]) - if event["data"]["request"] is not None and "parameters" in event["data"]["request"]: - event["data"]["request"]["parameters"] = json.dumps( - event["data"]["request"]["parameters"]) - if "response" in event["data"]: - if event["data"]["response"] is not None and "headers" in event["data"]["response"]: - event["data"]["response"]["headers"] = json.dumps(event["data"]["response"]["headers"]) - if "additionalDetails" in event["data"]: - event["data"]["additionalDetails"] = json.dumps(event["data"]["additionalDetails"]) - if "stateChange" in event["data"]: - logging.info("In data.stateChange : {}".format(event["data"]["stateChange"])) - if event["data"]["stateChange"] is not None and "current" in event["data"]["stateChange"] : - event["data"]["stateChange"]["current"] = json.dumps( - event["data"]["stateChange"]["current"]) - sentinel.send(event) + if event != 'Test': + event = json.loads(event) + if "data" in event: + if "request" in event["data"] and event["type"] != "com.oraclecloud.loadbalancer.access": + if event["data"]["request"] is not None and "headers" in event["data"]["request"]: + event["data"]["request"]["headers"] = json.dumps(event["data"]["request"]["headers"]) + if event["data"]["request"] is not None and "parameters" in event["data"]["request"]: + event["data"]["request"]["parameters"] = json.dumps( + event["data"]["request"]["parameters"]) + if "response" in event["data"]: + if event["data"]["response"] is not None and "headers" in event["data"]["response"]: + event["data"]["response"]["headers"] = json.dumps(event["data"]["response"]["headers"]) + if "additionalDetails" in event["data"]: + event["data"]["additionalDetails"] = json.dumps(event["data"]["additionalDetails"]) + if "stateChange" in event["data"]: + logging.info("In data.stateChange : {}".format(event["data"]["stateChange"])) + if event["data"]["stateChange"] is not None and "current" in event["data"]["stateChange"] : + event["data"]["stateChange"]["current"] = json.dumps( + event["data"]["stateChange"]["current"]) + sentinel.send(event) sentinel.flush() if check_if_script_runs_too_long(start_ts): diff --git a/Solutions/Oracle Cloud Infrastructure/Data Connectors/OCILogsConn.zip b/Solutions/Oracle Cloud Infrastructure/Data Connectors/OCILogsConn.zip index f4b0f4bce0925b157cfc63964183c2b01cf862ba..f3213d5314e5673fddb43d21126e5b26353b0e28 100644 GIT binary patch delta 3294 zcmZA3XFL{)7YA@hL`BL@5oJ`iD_MmQl8ov;Rz|r=$;_rFoU)FsWj#ehsgS)=R#9ek zZz_d08kbOV^Y3~4e{sIQH|NDUZ_elR9q(8=@Vky9ASW(BF673A$b-DN2p8iL= zHB?6p`~x*{BWmF$)J7fDMLpEV&A0^(&=8GqD;lE-n&LJzLvysi?P!TR&noMsGZVKIn^n=#K#y zh(|F9gE0g{F$}{o0wXaBk0BF}V>HHKEFzx3lNg8bn1G3xgoMeMf~lB>>6n3;n1!eC zG@ik;cn-5M2XiqG^O1$;@d6fLAzs8wcp0x?5njb>Sd7>42HwOHEX6Xsh2>a*l~{$< zScA1#hxOQijd&ZI@DAR^W^BP$Y{PcEhxf4qJMjTN#4hZ{9_+xLbb=nj+p{%~Vx zt}*vp2Q$U@J{IBJsi;#WICk%AdM~2kTX}!;sO>fNmXEj&uTcsS2p03W!g!N_JG*@} zat6EWwzqB^e(^lRLReNk*-n$|b&YIzfl|upVE#iTJ-U-w%YB(+kItWT;v8pg)E%1( z){EHGv@%&CG~A&@GiA={;mgU^$qvo5ai(OK{F(2AZ-#~YBHybEHmv0_3JCfssw(wa z-q7t;$`$b)ZJ)}!zaP_T%6q%ajr&h7pOnqr;;928Y0K*4#+8%GTNfU7PCa&S@?Y=p z>N}aQ6!tfqb+P_B_3hm;^>Yhi|MARY*7td<@7>|+`%b<^FZI%Hljy;6mFqt4yCY3! zG&lP5rw#rbp5h*glMvW3F3#I;F%nsr)AyuhpKku^p97CeX=wcE&@%;En)7-2Mjdrs zId6feX23L0`mncj`OCfW?^pbA-4>e7e6C`>N#e-9d%sK>i*1%QpWwRrHQg}ti}u@R z^D)JWTXJu1JDyQ?!HFaGN?EwSCU0VPaj^5%nll-zjQ`7Yv|QiCsi|)lk^OFLh0o^; z8Ws`jdTvX_w0Lp_&L;3NYierNnLcPf{$HBl9ydd;N`>o%o$dCVmHk5|&G|*vYJDd> znf8h%+`fK?{hvQ8*j>%Z=i}V$- zj*9PjoD@0HcuCS|EAPekrgCAIwB>FZN}T34OR{AxN{TAwIawfeX--&Ct~Smi`eP-R zQ3-F8k7ch-t*>9#TZZI)6M*B zc7BZr@Ea0%w5}uZg~h;yeO+dpy6$~ryE_9%)bEEKm}#30n+Oh%J#8b^JL~+}aIdOP zU1!r^#$H(9(^me#Trjbpu{id#8{@vTckK)1|BZnWS`unM|ob+m8{hHF0T12`I_Axzww~z?RlX# zXEP;ZpU28rBzuVzDephOeX*SAwn*)AVP_FW^x3)?&fb$tSzP+;3nsNy&o^bFGD!SZ z`_S<2(5Dad-Y)zlEA;J$We2B=l9-`dh0ZHYP{ z4gJO$>aK6g)(ef<+lW4WVz1;7X*zz+ogvYf`!n%MqGbwel)Z_-h>BYc-^re=aG5O{ zJxfzqlACKmoEZ_MFl<%m#U1BprM5`V?GC50uRwo7z=OuzIgPp|$Dsia^@ux@ZQd1U z8=};%X!v{H7?tLKd2q1#-H$wTrRBAb2HK2W4A&7=k^dyZY}3BPdz_H8`8y{3L;J%?RjQS(z$jW(Lg z--Sckh@6ez6$Ld#(INka6VWTC2g?8Ie@A$_CYHDp5*uH@Y&^pD5I{Iz83Pb=YAn zpekY@q2T)h-RV6cX{vWg_Q0nLCSzigIhin~HSba6*I*BCTvsS0vu z&Wr2MbJ|!g;9}_-^n*ldfI%(%rjAWLn+7(GY;Ln@VsnShT{g{ZTG+I*X=BsQ<{q2- zY&zIgBK_B4!|Nk0Xzh`m;XO`>lWPm!W`gdx9DC_g@)PX40 QI>UZgyYT6@THxULAEQ0o@&Et; delta 3283 zcmZA3SvVF769;fZ2-zcLOO`@~a%5k!D}>5Y%9>E&6d}B5%84OMNm*W@bQFmSrIM{e zmU1dtk|ZI?(J4~C-rMhDe*b5lXKv5|3dNMq>;zFc#x59*-m92|S4j_!pkSL`*`$WK6-+n2Kqbjv06c z&tfK?!z?_H7cd)hFc_GyYw!-<#ag_F_wfPN;X|y)25iJ8Y{p0U7@uGZwqhGT#dhq#PVB;G_#C_OAAEr? z@fG&qYwX27?8gCogM;`MhwvQ^<9i&z4>*b+aSX?C0zcs-e#R;Mg46gf&fr)455M7e zoW(i(f%Etif8oMkKmf!J!~wJjh!cnlh#P1z5DyS95FgMIAbubLAVDA@AYmX8AW@*D zKw?1RK+Aw6fR+QT0Fnff0+I%j0g?q;2_y%!3P>JE0Z0)@31~IY8X#pL6(CihwLt5D z)&r>lsRL;MZ2;N`qzUu~kQUG;AZ;KWAYC9mAblVMAVVM{AY&jCpv^$0KxRPZKo&rj zKvqE3KsG>IfVKkJ0@(rC18oCx0CEI!0@@C=1866ZGms0AE07z|E}-2&?m&Bh_5yhT zc>;L>c?0<(Vs08RL&^4e^ zpfaHAK;=L;fGU70fo=lb0=f-U1yl{SH87+lz{cU=d~J9ke)D2BwmwPblvWKWFn$CL zSo&(3SsBY*zLGs&%*>A3@Fnm1Q!MTd<)*baWj1lo42MjQSQb?= z2j(S&j0CLWMx$FKLaJPci#1cUr?nX(YMlC)xQ$=5?Y1j8W1-L(BW2!b@11#AhR2YP zU*^L$lb)K+mKweEfjW85l+wmIjVJ|8Ik{~$)>4j4k;%#Dnh!55ZtXAZ=j{2&AE9(H zqcXegLuG{XscOZXV|p7-#VcHPNIdBwb<>a7oI4jCN-=1cINdXyC3H7oLOQ9kkt?t-C8i5--dMMeF<8add_%pSvG?=Xg73{69*);-1ai*Z1^{iYz~L-|V&|cVDvT ziV((~-r~Ne@4kBQC5x!p@+8IbR4zUD_3Bquzgxe`Cxh1C4K%q|mU{hL9zMAWIo#%H zzlbYzU9KARu=B0ZNho|Atd;8ed41ErIrHa*^F|oATc0Oe^uD^mcyX3}DF(~MsYWSu z4(r*~{P$pREK#uds&Kx~fsX=pgZ|g{Nb$!PjFd<_t4v-}c(iSy=!K(AB^$qeci!dM z$dlQ}u55iK(^7doVQ^~s!K;Z#W?~ZC+&=M)U#ZZ@G%nTDPAm5t z6Ww~`?Q+HoUWbR0Ic`r5Zz3b(w26YZ>h=eUa^?7yMU6HUMLo2)Tq`VXx<%W|;c4XK zbcr{+nw(^ZHhx{jj0*C%Oci4PI9`xm>zE_zypq2)zOd;^2R0eL;xKhM?HH4CHoecZ zqHe}5KHnMlRw?eU^6ft4Z#FAaFMcZA#71+jZ+LW?(YEaM!AkW;_G|w%I)sIqJsLFetFA~H0l|Q_GYDVbYGgVz9xc{*7 z(fqP=Qtt2H9C}g~3splsz6w0%A5~A794%M%5u(+hS$*ydJ^nvU_-73>eiUqf6~-g< zCDv)w@8FnyKS#ORg?_fuUu<8OJhhQYwNlDXoZaP{CHYi7kyBn&Jg)ol%df-k4Bm3B zTd!+&v@=}KskwFNR&)qwwcLEm{FbO(K9YSsLvkpv+dd>%letT;29#IvxX9eOqtepu zru8bZF>?IYYBG5^UtTN+`}VMzFOJ&EyvV%#dvKNhz>JDjJ)bfEJ2&2H-{ca<9l;Z} zRW`Zd+p;nYj`tpyvrhIGyRyzZ--cIF+#*W5a_Md{=eVpp@$8)^Q<#hNSr-g8>jkAu z-wKteXdZmKJ^WRx-h1(13ZgT!Tb{7*S-Z?w{iaT_`S9U%$Mq}!wlp1(&=d$h##f_i zo>3Kl{?6jvs`I=HZ>=3n-<5g|Jh)+Iz5I5`ob4;7?sZizrP>_(pf75bvoqg%`m1yV zXihzFP`h48y+N_nDy>>SE~#Ra!?f>c^xv7h^3pp6)GRaml9G$gt=%ng#6aWAz9IwN zRvlGl;!LVfn{&j0mPTE%Gn`?6h;I>JFr7H>>Ad1z&X2_6#4UErG1ex6BkMh?mz?Z4 z6Den?(IH^Rls2dV2?lrQ>bJIq{+tPJw(2~3UUlrIpHrTl`m^<3-n@Qfwd>HVj}D_T z>3!7AoZ4v3;te5wrDH4k2ln^ZkId#;trf0uGtwS&ULKnx)teMQG^>}TmKj`lD{$1y z+A`iGF{oL}_EJ1VQr|?FJO89sMAjysCJpAz&<%-Rnz>s;eeS$(Adt4y7F7DIr&_TpH0Rd z>y$cPCZ%v+64VWxW9TtFPcS~E?)@CYNFL|ea;4f)`IY`_zCzQ=2>9C5lZ*GX1o+V^(l2?a56?lG&jvvq7d zT(?S9#1!gZLk5)wp8<@dI^@J3A;4)G?=Tfgg5Q(Z6%DjR&)^7Ccj;a6%|^Sy(! zdr$8+s)66!VR4s5EsJ|B?z4EnqK?Hw7WFI|STwR|V$sav5sSwxp0H?P(aNHY#ZwmT zEIL?p!h_vLT~M&_|DVMYqi5j8zTJq~ZuktAF&V#GBT!~O_?=oH!2Iub>Od${-S`>E Mb9GwO02|x?0N8rjP5=M^