From b210d8eae0057de7c2da6f262b9abe76fcdda642 Mon Sep 17 00:00:00 2001 From: adutt Date: Sat, 23 Nov 2024 00:30:41 +0530 Subject: [PATCH] Fix git pipeline errors Fix git pipeline errors --- .../AzureFunctionCommvaultSecurityIQ/main.py | 23 ++++++++++-------- .../CommvaultSecurityIQDataConnector.zip | Bin 10399721 -> 10399758 bytes 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/Solutions/Commvault Security IQ/Data Connectors/AzureFunctionCommvaultSecurityIQ/main.py b/Solutions/Commvault Security IQ/Data Connectors/AzureFunctionCommvaultSecurityIQ/main.py index 960e5a7d63..b526130e7a 100644 --- a/Solutions/Commvault Security IQ/Data Connectors/AzureFunctionCommvaultSecurityIQ/main.py +++ b/Solutions/Commvault Security IQ/Data Connectors/AzureFunctionCommvaultSecurityIQ/main.py @@ -1,4 +1,4 @@ -from datetime import datetime, timedelta +from datetime import datetime, timedelta, timezone import base64 import hashlib import hmac @@ -116,23 +116,26 @@ def main(mytimer: func.TimerRequest) -> None: headers["authtoken"] = "QSDK " + qsdk_token ustring = "/events?level=10&showInfo=false&showMinor=false&showMajor=true&showCritical=true&showAnomalous=true" f_url = url + ustring - current_date = datetime.now(datetime.timezone.utc) + current_date = datetime.now(timezone.utc) to_time = int(current_date.timestamp()) fromtime = read_blob(cs, container_name, blob_name) if fromtime is None: fromtime = int((current_date - timedelta(days=2)).timestamp()) logging.info("From Time : [{}] , since the time read from blob is None".format(fromtime)) else: - time_diff = current_date - fromtime - if time_diff > datetime.timedelta(days=2): - fromtime = int((current_date - timedelta(days=2)).timestamp()) - logging.info("From Time : [{}] , since the time read from blob : [{}] is older than 2 days".format(fromtime)) - if time_diff < datetime.timedelta(minutes = 5): - fromtime = int((current_date - timedelta(minutes=5)).timestamp()) - logging.info("From Time : [{}] , since the time read from blob : [{}] is less than 5 minutes".format(fromtime)) + fromtime_dt = datetime.fromtimestamp(fromtime, tz=timezone.utc) + time_diff = current_date - fromtime_dt + if time_diff > timedelta(days=2): + updatedfromtime = int((current_date - timedelta(days=2)).timestamp()) + logging.info("From Time : [{}] , since the time read from blob : [{}] is older than 2 days".format(updatedfromtime,fromtime)) + fromtime = updatedfromtime + elif time_diff < timedelta(minutes = 5): + updatedfromtime = int((current_date - timedelta(minutes=5)).timestamp()) + logging.info("From Time : [{}] , since the time read from blob : [{}] is less than 5 minutes".format(updatedfromtime,fromtime)) + fromtime = updatedfromtime max_fetch = 1000 headers["pagingInfo"] = f"0,{max_fetch}" - logging.info("Starts at: [{}]".format(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))) + logging.info("Starts at: [{}]".format(datetime.now(timezone.utc).strftime("%Y-%m-%d %H:%M:%S"))) event_endpoint = f"{f_url}&fromTime={fromtime}&toTime={to_time}" logging.info("Event endpoint : [{}]".format(event_endpoint)) response = requests.get(event_endpoint, headers=headers, verify=verify) diff --git a/Solutions/Commvault Security IQ/Data Connectors/CommvaultSecurityIQDataConnector.zip b/Solutions/Commvault Security IQ/Data Connectors/CommvaultSecurityIQDataConnector.zip index f79eaa0544352a8c5eb9c1370bfcdb183c0bcb72..4e249c30b1ed83010cbb7485d995867c14bcc40a 100644 GIT binary patch delta 6299 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 JM53Ue{0}A*AeR6D delta 6313 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

jK6; zu2n@koSb;4hyB^KjWs_j*3ht$7l1eh4XM9FjQyM((Qo`cM~}|kZHGW-j(J^J%Ah@J z_OuKXd;TA#oXniWOr@;s91KH7wkYldePyX8HnN-HF#-|8&W}K_^SQGxEwy)|ApZc? zE78(i8~!>6xgtwE-6(emqhhF*K2zBHU5-@O0j5T=j*uEp(wH$@;<&#}S0qn>rCn3~ zMxEz;{$&k;-~E09-DG3HN{}Z3x(A)HbrmagV>GDv@}G3C+s-xFD+#0UTepRuo<<%s z2ha6*a%zT>8-V{3FZg z2Vo`@*S%Rh85;P9_~>9?p%5F2dF2D$kUQeFg$ED*Fd=`Fl*jKPfwH4*i;=&v1GP4x zl8kFh_t!pJ1#6qvIDchUHy_Rw`0+YK`~OB9 zh3tkPqT`J8(+}6?|Gh6YPNBCJueP#s@x?;uhcG7gY*%`xu!4fOSn9shE|bk4a+MiZ z;%sI{IEh!yQ!r5Z9qx30AaPWw^?8>ckiLNF2Zz7c(`0|UTW26BoT)RWahcr?<+_tw zs9>~_X?-$j{Vm;M*wbxaB9_iE2cJ-+kfxCPP^do8XHvG-U!~WL}4l8@JUn2amoC!=;hZo@j={f}%4$}K7 zLdFMdZLkR(e6ev`JUdB}kQz+X!l?evV*m2mm&m`#Z;&Cs!CdLaS`bWtAgvK*)G@ou zDwW-HMJDa^;1QGQ#pm3`V$v~dQLazk!UgHpuDWXQ@HLGGA7kF-?kX@2b4=pnUTiaP z6@9ganLoBPW6Q%Mdy6j`y54W

?^G_SB~%N~4(El_&xAG%|dD(b4X7VyvSQ8h7S; zgmp7}Y^o~9x}@$qo=PWoXy1RqsGQ4A*i->;x%tqNQC_H5Ob_ncGHB;#saQ-tPnoG^ zUq#k0A+j{KG8$8vs6ju&AX4|m3DESFDc!>C>ZC%p=3Tt!uAAbbelPUK^Gu%isext9 z#m8WEuV5n*Gnv$sIG97`*Zb1E;gLzYl?(Z!Na2iL#qbF8^4h`!2r(}_KF|HZguruy z1S5a(z5|r`j9t;yC6k$~8HE2e!J57RbHFZRMxt~?-ywp_^_aJ<;#kKgWiFv{??m6RK2;J_!xgVXAisTuD$LXm7`%>2JcJ zw)j>a&@uay>wb zC&%v_AExg#+FU)bB&oPwh=dA%lj5h+BZ=+cO2$?{%K!MqXkh-$y>{|2nke?r?eR4h=Ny2QVAEag>mNl_!5Z%N#F=b~a6WH9cCq2d#%)}K>}M1yc{@F&HINUa$L zP4FyDM@JG>Hx+_QcUyOvbb-r1x2_qxV++OOT}nN=bc!U7kMPk5nnOcy0`*aw%+4d- zgs1{f-R<(JN!kx`K8SvY5BNaXb`)sBoyy*bimel%Ec@A@r|EjvS9P|1@o*>30O-MsJEc}qjJY@zRGL+O9a&KL7K^wsjdo4yd`OFQ)` zpGNq;3c4?IuDucr!JM|XC#7hNhk7D zWp_7E#lZ7YnW)?mC0W!fFIOTM8j6Efe#_U--t?!{qF#MuIV>)dY7eir(Tc6*tjJjO zZ$4B|yHPrt`jIMWNQAb)?@Ep%u~SHyPhQ=FXMm2qtuHz=%o{OLp@5iZf!fNfS76bM z&H|OKidN{;ZE?J)#c|@lmTY>884u(->`uK)>Al#8jTAS6L6(^BsYRqb$u^fdUZjs+ zaYece{bCgs?R#np$&crk&ZJD#2gc#y_7jlaXIOJ5W!vrvZ{(eDvi+^AXNF#>Gs$C) zm%{7j&O>1&_amptL>-zj&P+cqV%@m;rv)q;jpkC#EC-WhxfZphY5{+}xQ3-C^6}dc zSBr!D7LoHGD|(qH{~=BlgI|8;`tb^U{c*4shD{ZAK8`zhb-bFDy64983F(_^>~54V zg<{{gyWqloA2a_a>wmIad>?aO{rLaOJhmn`3{m$nGcD~glRZtUHkTdVF3r9+*AN~) Rt-m%`78&g&6AljU{{YE(H8%hN