@@ -5900,15 +5900,63 @@ def data_store_read(data_set):
59005900
59015901 sModuleInfo = inspect .currentframe ().f_code .co_name + " : " + MODULE_NAME
59025902
5903+ import logging
5904+ from datetime import datetime
5905+ from settings import ZEUZ_NODE_ARTIFACTS_DIR
5906+
5907+ log_dir = ZEUZ_NODE_ARTIFACTS_DIR / "data_store_logs"
5908+ log_dir .mkdir (parents = True , exist_ok = True )
5909+
5910+ current_time = datetime .now ()
5911+ log_filename = f"data_store_read_{ current_time .strftime ('%Y-%m-%d_%H' )} .log"
5912+ log_file = log_dir / log_filename
5913+
5914+ logger = logging .getLogger (f"data_store_read_{ current_time .strftime ('%Y%m%d%H' )} " )
5915+ logger .setLevel (logging .DEBUG )
5916+
5917+ # Remove existing handlers to avoid duplicate logs
5918+ if logger .handlers :
5919+ logger .handlers .clear ()
5920+
5921+ handler = logging .FileHandler (str (log_file ), mode = 'a' )
5922+ handler .setFormatter (logging .Formatter (
5923+ '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
5924+ ))
5925+ logger .addHandler (handler )
5926+
5927+ logger .info ("=" * 80 )
5928+ logger .info (f"Function data_store_read called" )
5929+ logger .info (f"Module Info: { sModuleInfo } " )
5930+ logger .info (f"Received data_set: { data_set } " )
5931+
5932+
5933+
59035934 try :
5935+ test_id = None
5936+ node_id = sr .Get_Shared_Variables ("node_id" ) or None
5937+ action_no = CommonUtil .current_action_no
5938+ step_no = CommonUtil .current_step_no
5939+ if sr .Test_Shared_Variables ("zeuz_current_tc" ):
5940+ current_tc = sr .Get_Shared_Variables ("zeuz_current_tc" )
5941+ if isinstance (current_tc , dict ) and "testcase_no" in current_tc :
5942+ test_id = current_tc ["testcase_no" ]
59045943 table_name = columns = var_name = ""
5905- params = {}
5944+ params = {
5945+ 'test_id' : test_id ,
5946+ 'node_id' : node_id ,
5947+ 'action_no' : action_no ,
5948+ 'step_no' : step_no
5949+ }
5950+ logger .debug ("Starting to parse data_set" )
59065951 for left , mid , right in data_set :
5952+ logger .debug (f"Processing row: left='{ left } ', mid='{ mid } ', right='{ right } '" )
59075953 if left .strip () == 'table name' :
59085954 table_name = right .strip ()
59095955 params ['table_name' ] = table_name
5956+ logger .info (f"Table name set to: { table_name } " )
59105957 if left .strip () == 'where' :
59115958 q = right .strip ()
5959+ logger .info (f"Processing WHERE clause: { q } " )
59125960 # q = re.sub(r"\band\b",",",q)
59135961 # q = re.sub(r"\bor\b",",",q)
59145962 logic = []
@@ -5917,10 +5965,12 @@ def data_store_read(data_set):
59175965 logic .append ('and' )
59185966 elif s == 'or' :
59195967 logic .append ('or' )
5968+ logger .debug (f"Detected logic operators: { logic } " )
59205969 q = right .strip ()
59215970 q = re .sub (r"\band\b" ,"," ,q )
59225971 q = re .sub (r"\bor\b" ,"," ,q )
59235972 temp = q .split (',' )
5973+ logger .debug (f"Split WHERE clause into: { temp } " )
59245974 t = temp [0 ].split ('=' )
59255975 params ['and_' + t [0 ].strip ()] = [t [1 ].strip ()]
59265976 i = 1
@@ -5941,26 +5991,54 @@ def data_store_read(data_set):
59415991
59425992 i += 1
59435993 j += 1
5994+ logger .info (f"Final WHERE params: { params } " )
59445995 if mid .strip () == "action" :
59455996 var_name = right .strip ()
5997+ logger .info (f"Variable name set to: { var_name } " )
5998+
5999+ logger .info (f"Final table_name: { table_name } " )
6000+ logger .info (f"Final params: { params } " )
6001+ logger .info (f"Final var_name: { var_name } " )
6002+
6003+ logger .debug ("Preparing request headers" )
59466004 headers = RequestFormatter .add_api_key_to_headers ({})
59476005 headers ['headers' ]['content-type' ] = 'application/json'
59486006 headers ['headers' ]['X-API-KEY' ] = ConfigModule .get_config_value ("Authentication" , "api-key" )
6007+ logger .debug (f"Headers prepared (API key masked)" )
6008+
6009+ logger .info (f"Making GET request to data_store/data_store/custom_operation/" )
6010+ logger .debug (f"Request params: { json .dumps (params )} " )
6011+
59496012 res = RequestFormatter .request ("get" ,
59506013 RequestFormatter .form_uri ('data_store/data_store/custom_operation/' ),
59516014 params = json .dumps (params ),
59526015 verify = False ,
59536016 ** headers
59546017 )
6018+
6019+ logger .info (f"Response status code: { res .status_code } " )
6020+ logger .debug (f"Response text: { res .text } " )
6021+
59556022 if res .status_code == 200 :
59566023 response_json = json .loads (res .text )
59576024 response_json = response_json ["data" ]
5958- return sr .Set_Shared_Variables (var_name , response_json , pretty = True )
6025+ logger .info (f"Successfully retrieved { len (response_json ) if isinstance (response_json , (list , dict )) else 'N/A' } items from datastore" )
6026+ logger .debug (f"Response data: { response_json } " )
6027+ result = sr .Set_Shared_Variables (var_name , response_json , pretty = True )
6028+ logger .info (f"Data stored in variable '{ var_name } ' successfully" )
6029+ logger .info ("=" * 80 )
6030+ return result
59596031 else :
59606032 CommonUtil .ExecLog (sModuleInfo , "No data found, please check your dataset" , 1 )
6033+ logger .warning ("No data found in datastore, please check your dataset" )
6034+ logger .info ("=" * 80 )
6035+ return "zeuz_failed"
59616036 return "passed"
59626037
5963- except Exception :
6038+ except Exception as e :
6039+ logger .error (f"Exception occurred: { str (e )} " , exc_info = True )
6040+ logger .error (f"Traceback: { traceback .format_exc ()} " )
6041+ logger .info ("=" * 80 )
59646042 return CommonUtil .Exception_Handler (sys .exc_info ())
59656043
59666044def data_store_get_data (data_set ):
@@ -6063,16 +6141,62 @@ def data_store_write(data_set):
60636141
60646142 sModuleInfo = inspect .currentframe ().f_code .co_name + " : " + MODULE_NAME
60656143
6144+ import logging
6145+ from datetime import datetime
6146+ from settings import ZEUZ_NODE_ARTIFACTS_DIR
6147+
6148+ log_dir = ZEUZ_NODE_ARTIFACTS_DIR / "data_store_logs"
6149+ log_dir .mkdir (parents = True , exist_ok = True )
6150+
6151+ current_time = datetime .now ()
6152+ log_filename = f"data_store_write_{ current_time .strftime ('%Y-%m-%d_%H' )} .log"
6153+ log_file = log_dir / log_filename
6154+
6155+ logger = logging .getLogger (f"data_store_write_{ current_time .strftime ('%Y%m%d%H' )} " )
6156+ logger .setLevel (logging .DEBUG )
6157+
6158+ # Remove existing handlers to avoid duplicate logs
6159+ if logger .handlers :
6160+ logger .handlers .clear ()
6161+
6162+ handler = logging .FileHandler (str (log_file ), mode = 'a' )
6163+ handler .setFormatter (logging .Formatter (
6164+ '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
6165+ ))
6166+ logger .addHandler (handler )
6167+
6168+ logger .info ("=" * 80 )
6169+ logger .info ("Function data_store_write called" )
6170+ logger .info (f"Module Info: { sModuleInfo } " )
6171+ logger .info (f"Received data_set: { data_set } " )
6172+
60666173 try :
6174+ test_id = None
6175+ node_id = sr .Get_Shared_Variables ("node_id" ) or None
6176+ action_no = CommonUtil .current_action_no
6177+ step_no = CommonUtil .current_step_no
6178+ if sr .Test_Shared_Variables ("zeuz_current_tc" ):
6179+ current_tc = sr .Get_Shared_Variables ("zeuz_current_tc" )
6180+ if isinstance (current_tc , dict ) and "testcase_no" in current_tc :
6181+ test_id = current_tc ["testcase_no" ]
60676182 table_name = columns = var_name = ""
6068- params = {}
6183+ params = {
6184+ 'test_id' : test_id ,
6185+ 'node_id' : node_id ,
6186+ 'action_no' : action_no ,
6187+ 'step_no' : step_no
6188+ }
60696189 data = {}
6190+ logger .debug ("Starting to parse data_set" )
60706191 for left , mid , right in data_set :
6192+ logger .debug (f"Processing row: left='{ left } ', mid='{ mid } ', right='{ right } '" )
60716193 if left .strip () == 'table name' :
60726194 table_name = right .strip ()
60736195 params ['table_name' ] = table_name
6196+ logger .info (f"Table name set to: { table_name } " )
60746197 if left .strip () == 'where' :
60756198 q = right .strip ()
6199+ logger .info (f"Processing WHERE clause: { q } " )
60766200 # q = re.sub(r"\band\b",",",q)
60776201 # q = re.sub(r"\bor\b",",",q)
60786202 logic = []
@@ -6081,10 +6205,12 @@ def data_store_write(data_set):
60816205 logic .append ('and' )
60826206 elif s == 'or' :
60836207 logic .append ('or' )
6208+ logger .debug (f"Detected logic operators: { logic } " )
60846209 q = right .strip ()
60856210 q = re .sub (r"\band\b" ,"," ,q )
60866211 q = re .sub (r"\bor\b" ,"," ,q )
60876212 temp = q .split (',' )
6213+ logger .debug (f"Split WHERE clause into: { temp } " )
60886214 t = temp [0 ].split ('=' )
60896215 params ['and_' + t [0 ].strip ()] = [t [1 ].strip ()]
60906216 i = 1
@@ -6105,40 +6231,71 @@ def data_store_write(data_set):
61056231
61066232 i += 1
61076233 j += 1
6234+ logger .info (f"Final WHERE params: { params } " )
61086235 if left .strip () == 'data' :
61096236 temp = [right .strip ()]
6237+ logger .debug (f"Processing data field: { temp } " )
61106238 print (temp )
61116239 for t in temp :
61126240 tt = t .split ('=' , 1 )
6241+ logger .debug (f"Split data into: { tt } " )
61136242 print (tt )
61146243 data [tt [0 ].strip ()]= tt [1 ].strip ()
6244+ logger .debug (f"Data field '{ tt [0 ].strip ()} ' = '{ tt [1 ].strip ()} '" )
61156245 print (data [tt [0 ].strip ()])
6246+ logger .info (f"Complete data dict: { data } " )
61166247 if mid .strip () == "action" :
61176248 var_name = right .strip ()
6249+ logger .info (f"Variable name set to: { var_name } " )
61186250
6251+ logger .info (f"Final table_name: { table_name } " )
6252+ logger .info (f"Final params: { params } " )
6253+ logger .info (f"Final data: { data } " )
6254+ logger .info (f"Final var_name: { var_name } " )
61196255
6256+ logger .debug ("Preparing request headers" )
61206257 headers = RequestFormatter .add_api_key_to_headers ({})
61216258 headers ['headers' ]['content-type' ] = 'application/json'
61226259 headers ['headers' ]['X-API-KEY' ] = ConfigModule .get_config_value ("Authentication" , "api-key" )
6260+ logger .debug ("Headers prepared (API key masked)" )
6261+
6262+ logger .info ("Making PATCH request to data_store/data_store/custom_operation/" )
6263+ logger .debug (f"Request params: { json .dumps (params )} " )
6264+ logger .debug (f"Request data: { json .dumps (data )} " )
6265+
61236266 res = requests .patch (
61246267 RequestFormatter .form_uri ('data_store/data_store/custom_operation/' ),
61256268 params = json .dumps (params ),
61266269 data = json .dumps (data ),
61276270 verify = False ,
61286271 ** headers
61296272 )
6273+
6274+ logger .info (f"Response status code: { res .status_code } " )
6275+ logger .debug (f"Response text: { res .text } " )
61306276 #
61316277
61326278 # print(res.text)
61336279 if res .status_code == 200 :
61346280 # CommonUtil.ExecLog(sModuleInfo, f"Captured following output:\n{res.text}", 1)
6135-
6136- return sr .Set_Shared_Variables (var_name , json .loads (res .text ),pretty = True )
6281+ response_json = json .loads (res .text )
6282+ logger .info (f"Successfully updated datastore" )
6283+ logger .debug (f"Response data: { response_json } " )
6284+ result = sr .Set_Shared_Variables (var_name , response_json , pretty = True )
6285+ logger .info (f"Response stored in variable '{ var_name } ' successfully" )
6286+ logger .info ("=" * 80 )
6287+ return result
61376288 else :
61386289 CommonUtil .ExecLog (sModuleInfo , "No data found to update , please check your dataset" , 1 )
6290+ logger .warning ("No data found to update in datastore, please check your dataset" )
6291+ logger .info ("=" * 80 )
6292+ return "zeuz_failed"
61396293 return "passed"
61406294
6141- except Exception :
6295+ except Exception as e :
6296+ logger .error (f"Exception occurred: { str (e )} " , exc_info = True )
6297+ logger .error (f"Traceback: { traceback .format_exc ()} " )
6298+ logger .info ("=" * 80 )
61426299 return CommonUtil .Exception_Handler (sys .exc_info ())
61436300
61446301
0 commit comments