From 235db9ca1ded4f36284108e8f95c6abe64bcd462 Mon Sep 17 00:00:00 2001 From: PrakashH Date: Thu, 31 Jan 2019 19:34:38 +0000 Subject: Heartbeat Microservice CL-OUT support Support the control loop having heartbeat event Issue-ID: DCAEGEN2-1138 Change-Id: I14f4d6bb723794450fbaf3c86f063148364bc023 Signed-off-by: PrakashH --- miss_htbt_service/db_monitoring.py | 72 +++++++++++++++++++++++++++----- miss_htbt_service/get_logger.py | 5 +++ miss_htbt_service/htbtworker.py | 22 +++++++--- miss_htbt_service/misshtbtd.py | 58 ++++++++++++++++++------- miss_htbt_service/mod/trapd_vnf_table.py | 36 +++++++++++++++- 5 files changed, 161 insertions(+), 32 deletions(-) (limited to 'miss_htbt_service') diff --git a/miss_htbt_service/db_monitoring.py b/miss_htbt_service/db_monitoring.py index b435f2a..4eb33ff 100644 --- a/miss_htbt_service/db_monitoring.py +++ b/miss_htbt_service/db_monitoring.py @@ -34,6 +34,37 @@ import get_logger _logger = get_logger.get_logger(__name__) +def sendHBControlLoopEventV2(pol_url, closed_control_loop_name, closedLoopFlag, policy_name, policy_type, last_recvd_hb_event): + msg="DBM:Time to send Control Loop Event, CL name, CL flag, policy name/type - ",closed_control_loop_name, closedLoopFlag, policy_name, policy_type + _logger.info(msg) + try: + jpayload = json.loads(last_recvd_hb_event) + jpayload['event']['commonEventHeader']['internalHeaderFields'] = {} + jpayload['event']['commonEventHeader']['internalHeaderFields']['closedLoopControlName'] = closed_control_loop_name + jpayload['event']['commonEventHeader']['internalHeaderFields']['closedLoopFlag'] = closedLoopFlag + jpayload['event']['commonEventHeader']['internalHeaderFields']['policyName'] = policy_name + jpayload['event']['commonEventHeader']['internalHeaderFields']['policyType'] = policy_type + jpayload['event']['commonEventHeader']['internalHeaderFields']['internalHeaderFieldsVersion'] = '2.0' + msg="DBM: HB1 Json object is", jpayload + _logger.info(msg) + payload = json.dumps(jpayload) + msg="DBM: HB2 Json object is", payload + _logger.info(msg) + psend_url = pol_url + msg="DBM:",psend_url + _logger.info(msg) + r = requests.post(psend_url, data=payload) + msg="DBM:",r.status_code, r.reason + _logger.info(msg) + ret = r.status_code + msg="DBM:Status code for sending the control loop event is",ret + _logger.info(msg) + except(Exception) as err: + msg = "HBT message process error - ",err + _logger.error(msg) + return True + + def sendControlLoopEvent(CLType, pol_url, policy_version, policy_name, policy_scope, target_type, srcName, epoc_time, closed_control_loop_name, version, target): msg="DBM:Time to raise Control Loop Event for Control loop typ /target type - ",CLType, target_type _logger.info(msg) @@ -147,6 +178,7 @@ def db_monitoring(current_pid,json_file,user_name,password,ip_address,port_num,d except(Exception) as err: msg='Json file process error : ', err _logger.error(msg) + continue hbc_pid, hbc_state, hbc_srcName, hbc_time = db.read_hb_common(user_name,password,ip_address,port_num,db_name) source_name = socket.gethostname() @@ -166,8 +198,10 @@ def db_monitoring(current_pid,json_file,user_name,password,ip_address,port_num,d if( hbc_state == "RECONFIGURATION"): _logger.info("DBM:Waiting for hb_common state to become RUNNING") break - - db_query = "Select validity_flag,source_name_count,heartbeat_interval,heartbeat_missed_count,closed_control_loop_name,policy_version, policy_name,policy_scope, target_type,target,version from vnf_table_1 where event_name= '%s'" %(event_name) + if(os.getenv('cl_out_hb', "") == 'yes'): + db_query = "Select validity_flag,source_name_count,heartbeat_interval,heartbeat_missed_count,closed_control_loop_name,policy_name,policy_type,closed_loop_flag from vnf_table_1 where event_name= '%s'" %(event_name) + else: + db_query = "Select validity_flag,source_name_count,heartbeat_interval,heartbeat_missed_count,closed_control_loop_name,policy_name, policy_version,policy_scope, target_type,target,version from vnf_table_1 where event_name= '%s'" %(event_name) cur.execute(db_query) rows = cur.fetchall() validity_flag = rows[0][0] @@ -175,17 +209,25 @@ def db_monitoring(current_pid,json_file,user_name,password,ip_address,port_num,d heartbeat_interval = rows[0][2] heartbeat_missed_count = rows[0][3] closed_control_loop_name = rows[0][4] - policy_version = rows[0][5] - policy_name = rows[0][6] - policy_scope = rows[0][7] - target_type = rows[0][8] - target = rows[0][9] - version = rows[0][10] + policy_name = rows[0][5] + + if(os.getenv('cl_out_hb', "") == 'yes'): + policy_type = rows[0][6] + closed_loop_flag = rows[0][7] + else: + policy_version = rows[0][6] + policy_scope = rows[0][7] + target_type = rows[0][8] + target = rows[0][9] + version = rows[0][10] comparision_time = (heartbeat_interval*heartbeat_missed_count)*1000 if (validity_flag ==1): for source_name_key in range(source_name_count): epoc_time = int(round(time.time()*1000)) - epoc_query = "Select last_epo_time,source_name,cl_flag from vnf_table_2 where event_name= '%s' and source_name_key=%d" %(event_name,(source_name_key+1)) + if(os.getenv('cl_out_hb', "") == 'yes'): + epoc_query = "Select last_epo_time,source_name,cl_flag,last_recvd_hb_event from vnf_table_2 where event_name= '%s' and source_name_key=%d" %(event_name,(source_name_key+1)) + else: + epoc_query = "Select last_epo_time,source_name,cl_flag from vnf_table_2 where event_name= '%s' and source_name_key=%d" %(event_name,(source_name_key+1)) cur.execute(epoc_query) row = cur.fetchall() if (len(row)==0): @@ -193,14 +235,22 @@ def db_monitoring(current_pid,json_file,user_name,password,ip_address,port_num,d epoc_time_sec = row[0][0] srcName = row[0][1] cl_flag = row[0][2] + if(os.getenv('cl_out_hb', "") == 'yes'): + last_recvd_hb_event = row[0][3] if((epoc_time-epoc_time_sec)>comparision_time and cl_flag ==0): - sendControlLoopEvent("ONSET", pol_url, policy_version, policy_name, policy_scope, target_type, srcName, epoc_time, closed_control_loop_name, version, target) + if(os.getenv('cl_out_hb', "") == 'yes'): + sendHBControlLoopEventV2(pol_url, closed_control_loop_name, closed_loop_flag, policy_name, policy_type, last_recvd_hb_event) + else: + sendControlLoopEvent("ONSET", pol_url, policy_version, policy_name, policy_scope, target_type, srcName, epoc_time, closed_control_loop_name, version, target) cl_flag = 1 update_query = "UPDATE vnf_table_2 SET CL_FLAG=%d where EVENT_NAME ='%s' and source_name_key=%d" %(cl_flag,event_name,(source_name_key+1)) cur.execute(update_query) connection_db.commit() elif((epoc_time - epoc_time_sec) < comparision_time and cl_flag ==1): - sendControlLoopEvent("ABATED", pol_url, policy_version, policy_name, policy_scope, target_type, srcName, epoc_time, closed_control_loop_name, version, target) + if(os.getenv('cl_out_hb', "") == 'yes'): + sendHBControlLoopEventV2(pol_url, closed_control_loop_name, closed_loop_flag, policy_name, policy_type, last_recvd_hb_event) + else: + sendControlLoopEvent("ABATED", pol_url, policy_version, policy_name, policy_scope, target_type, srcName, epoc_time, closed_control_loop_name, version, target) cl_flag = 0 update_query = "UPDATE vnf_table_2 SET CL_FLAG=%d where EVENT_NAME ='%s' and source_name_key=%d" %(cl_flag,event_name,(source_name_key+1)) cur.execute(update_query) diff --git a/miss_htbt_service/get_logger.py b/miss_htbt_service/get_logger.py index e8d008c..3e474cd 100644 --- a/miss_htbt_service/get_logger.py +++ b/miss_htbt_service/get_logger.py @@ -18,6 +18,7 @@ import os import logging +import logging.handlers '''Configures the module root logger''' root = logging.getLogger() @@ -28,6 +29,10 @@ formatter = logging.Formatter('%(asctime)s | %(name)s | %(module)s | %(funcName) handler = logging.StreamHandler() handler.setFormatter(formatter) root.addHandler(handler) +if(os.getenv('pytest', "") != 'test'): + fhandler = logging.handlers.RotatingFileHandler('./hb_logs.txt', maxBytes=(1048576*5), backupCount=10) + fhandler.setFormatter(formatter) + root.addHandler(fhandler) root.setLevel("DEBUG") class BadEnviornmentENVNotFound(Exception): diff --git a/miss_htbt_service/htbtworker.py b/miss_htbt_service/htbtworker.py index 6dbd6cd..d0315e6 100644 --- a/miss_htbt_service/htbtworker.py +++ b/miss_htbt_service/htbtworker.py @@ -71,7 +71,7 @@ def process_msg(jsfile,user_name, password, ip_address, port_num, db_name): msg="\n\nHBT:eventnameList values ", eventnameList _logger.info(msg) if "groupID" not in os.environ or "consumerID" not in os.environ: - get_url = mr_url + 'DefaultGroup/1?timeout=15000' + get_url = mr_url + '/DefaultGroup/1?timeout=15000' else: get_url = mr_url + '/' + os.getenv('groupID', "") + '/' + os.getenv('consumerID', "") + '?timeout=15000' msg="HBT:Getting :"+get_url @@ -129,7 +129,10 @@ def process_msg(jsfile,user_name, password, ip_address, port_num, db_name): if(db_table_creation_check(connection_db,"vnf_table_2") ==False): msg="HBT:Creating vnf_table_2" _logger.info(msg) - cur.execute("CREATE TABLE vnf_table_2 (EVENT_NAME varchar , SOURCE_NAME_KEY integer , PRIMARY KEY(EVENT_NAME,SOURCE_NAME_KEY),LAST_EPO_TIME BIGINT, SOURCE_NAME varchar, CL_FLAG integer);") + if(os.getenv('cl_out_hb', "") == 'yes'): + cur.execute("CREATE TABLE vnf_table_2 (EVENT_NAME varchar , SOURCE_NAME_KEY integer , PRIMARY KEY(EVENT_NAME,SOURCE_NAME_KEY),LAST_EPO_TIME BIGINT, SOURCE_NAME varchar, CL_FLAG integer, LAST_RECVD_HB_EVENT varchar);") + else: + cur.execute("CREATE TABLE vnf_table_2 (EVENT_NAME varchar , SOURCE_NAME_KEY integer , PRIMARY KEY(EVENT_NAME,SOURCE_NAME_KEY),LAST_EPO_TIME BIGINT, SOURCE_NAME varchar, CL_FLAG integer);") else: msg="HBT:vnf_table_2 is already there" _logger.info(msg) @@ -147,7 +150,10 @@ def process_msg(jsfile,user_name, password, ip_address, port_num, db_name): if(source_name_count==0): msg="HBT: Insert entry in table_2,source_name_count=0 : ",row _logger.info(msg) - query_value = "INSERT INTO vnf_table_2 VALUES('%s',%d,%d,'%s',%d);" %(eventName,source_name_key,lastepo,srcname,cl_flag) + if(os.getenv('cl_out_hb', "") == 'yes'): + query_value = "INSERT INTO vnf_table_2 VALUES('%s',%d,%d,'%s',%d,'%s');" %(eventName,source_name_key,lastepo,srcname,cl_flag, str(item)) + else: + query_value = "INSERT INTO vnf_table_2 VALUES('%s',%d,%d,'%s',%d);" %(eventName,source_name_key,lastepo,srcname,cl_flag) cur.execute(query_value) update_query = "UPDATE vnf_table_1 SET SOURCE_NAME_COUNT='%d' where EVENT_NAME ='%s'" %(source_name_key,eventName) cur.execute(update_query) @@ -166,7 +172,10 @@ def process_msg(jsfile,user_name, password, ip_address, port_num, db_name): if (db_srcname == srcname): msg="HBT: Update vnf_table_2 : ",source_name_key, row _logger.info(msg) - update_query = "UPDATE vnf_table_2 SET LAST_EPO_TIME='%d',SOURCE_NAME='%s' where EVENT_NAME='%s' and SOURCE_NAME_KEY=%d" %(lastepo,srcname,eventName,(source_name_key+1)) + if(os.getenv('cl_out_hb', "") == 'yes'): + update_query = "UPDATE vnf_table_2 SET LAST_EPO_TIME='%d',SOURCE_NAME='%s', LAST_RECVD_HB_EVENT='%s' where EVENT_NAME='%s' and SOURCE_NAME_KEY=%d" %(lastepo,srcname, str(item), eventName,(source_name_key+1)) + else: + update_query = "UPDATE vnf_table_2 SET LAST_EPO_TIME='%d',SOURCE_NAME='%s' where EVENT_NAME='%s' and SOURCE_NAME_KEY=%d" %(lastepo,srcname, eventName,(source_name_key+1)) cur.execute(update_query) source_name_key = source_name_count break @@ -178,7 +187,10 @@ def process_msg(jsfile,user_name, password, ip_address, port_num, db_name): source_name_key = source_name_count+1 msg="HBT: Insert entry in table_2 : ",row _logger.info(msg) - insert_query = "INSERT INTO vnf_table_2 VALUES('%s',%d,%d,'%s',%d);" %(eventName,source_name_key,lastepo,srcname,cl_flag) + if(os.getenv('cl_out_hb', "") == 'yes'): + insert_query = "INSERT INTO vnf_table_2 VALUES('%s',%d,%d,'%s',%d, '%s');" %(eventName,source_name_key,lastepo,srcname,cl_flag,str(item)) + else: + insert_query = "INSERT INTO vnf_table_2 VALUES('%s',%d,%d,'%s',%d);" %(eventName,source_name_key,lastepo,srcname,cl_flag) cur.execute(insert_query) update_query = "UPDATE vnf_table_1 SET SOURCE_NAME_COUNT='%d' where EVENT_NAME ='%s'" %(source_name_key,eventName) cur.execute(update_query) diff --git a/miss_htbt_service/misshtbtd.py b/miss_htbt_service/misshtbtd.py index 36683dc..cd8f297 100644 --- a/miss_htbt_service/misshtbtd.py +++ b/miss_htbt_service/misshtbtd.py @@ -156,7 +156,10 @@ def create_update_vnf_table_1(jsfile,update_db,connection_db): else: cur = connection_db.cursor() if(heartbeat.db_table_creation_check(connection_db,"vnf_table_1") ==False): - cur.execute("CREATE TABLE vnf_table_1 (EVENT_NAME varchar primary key,HEARTBEAT_MISSED_COUNT integer,HEARTBEAT_INTERVAL integer,CLOSED_CONTROL_LOOP_NAME varchar,POLICY_VERSION varchar,POLICY_NAME varchar,POLICY_SCOPE varchar,TARGET_TYPE varchar,TARGET varchar, VERSION varchar,SOURCE_NAME_COUNT integer,VALIDITY_FLAG integer);") + if(os.getenv('cl_out_hb', "") == 'yes'): + cur.execute("CREATE TABLE vnf_table_1 (EVENT_NAME varchar primary key,HEARTBEAT_MISSED_COUNT integer,HEARTBEAT_INTERVAL integer,CLOSED_CONTROL_LOOP_NAME varchar,POLICY_NAME varchar,POLICY_TYPE varchar,CLOSED_LOOP_FLAG varchar,SOURCE_NAME_COUNT integer,VALIDITY_FLAG integer);") + else: + cur.execute("CREATE TABLE vnf_table_1 (EVENT_NAME varchar primary key,HEARTBEAT_MISSED_COUNT integer,HEARTBEAT_INTERVAL integer,CLOSED_CONTROL_LOOP_NAME varchar,POLICY_VERSION varchar,POLICY_NAME varchar,POLICY_SCOPE varchar,TARGET_TYPE varchar,TARGET varchar, VERSION varchar,SOURCE_NAME_COUNT integer,VALIDITY_FLAG integer);") _logger.info("MSHBT:Created vnf_table_1 table") if(update_db == 1): query_value = "UPDATE vnf_table_1 SET VALIDITY_FLAG=0 where VALIDITY_FLAG=1;" @@ -174,17 +177,28 @@ def create_update_vnf_table_1(jsfile,update_db,connection_db): missed = vnf['heartbeatcountmissed'] intvl = vnf['heartbeatinterval'] clloop = vnf['closedLoopControlName'] - policyVersion = vnf['policyVersion'] policyName = vnf['policyName'] - policyScope = vnf['policyScope'] - target_type = vnf['target_type'] - target = vnf['target'] - version = vnf['version'] + + if(os.getenv('cl_out_hb', "") == 'yes'): + closed_loop_flag = vnf['closedLoopFlag'] + policyType = vnf['policyType'] + else: + policyVersion = vnf['policyVersion'] + policyScope = vnf['policyScope'] + target_type = vnf['target_type'] + target = vnf['target'] + version = vnf['version'] if(nfc not in vnf_list): - query_value = "INSERT INTO vnf_table_1 VALUES('%s',%d,%d,'%s','%s','%s','%s','%s','%s','%s',%d,%d);" %(nfc,missed,intvl,clloop,policyVersion,policyName,policyScope,target_type, target,version,source_name_count,validity_flag) + if(os.getenv('cl_out_hb', "") == 'yes'): + query_value = "INSERT INTO vnf_table_1 VALUES('%s',%d,%d,'%s','%s','%s','%s',%d,%d);" %(nfc,missed,intvl,clloop,policyName,policyType,closed_loop_flag,source_name_count,validity_flag) + else: + query_value = "INSERT INTO vnf_table_1 VALUES('%s',%d,%d,'%s','%s','%s','%s','%s','%s','%s',%d,%d);" %(nfc,missed,intvl,clloop,policyVersion,policyName,policyScope,target_type, target,version,source_name_count,validity_flag) else: - query_value = "UPDATE vnf_table_1 SET HEARTBEAT_MISSED_COUNT='%d',HEARTBEAT_INTERVAL='%d', CLOSED_CONTROL_LOOP_NAME='%s',POLICY_VERSION='%s',POLICY_NAME='%s', POLICY_SCOPE='%s',TARGET_TYPE='%s', TARGET='%s',VERSION='%s',VALIDITY_FLAG='%d' where EVENT_NAME='%s'" %(missed,intvl,clloop,policyVersion,policyName,policyScope,target_type,target,version,validity_flag,nfc) + if(os.getenv('cl_out_hb', "") == 'yes'): + query_value = "UPDATE vnf_table_1 SET HEARTBEAT_MISSED_COUNT='%d',HEARTBEAT_INTERVAL='%d', CLOSED_CONTROL_LOOP_NAME='%s',POLICY_NAME='%s',POLICY_TYPE='%s', CLOSED_LOOP_FLAG='%s',VALIDITY_FLAG='%d' where EVENT_NAME='%s'" %(missed,intvl,clloop,policyName,policyType,closed_loop_flag,validity_flag,nfc) + else: + query_value = "UPDATE vnf_table_1 SET HEARTBEAT_MISSED_COUNT='%d',HEARTBEAT_INTERVAL='%d', CLOSED_CONTROL_LOOP_NAME='%s',POLICY_VERSION='%s',POLICY_NAME='%s', POLICY_SCOPE='%s',TARGET_TYPE='%s', TARGET='%s',VERSION='%s',VALIDITY_FLAG='%d' where EVENT_NAME='%s'" %(missed,intvl,clloop,policyVersion,policyName,policyScope,target_type,target,version,validity_flag,nfc) if (envPytest != 'test'): cur.execute(query_value) #heartbeat.commit_and_close_db(connection_db) @@ -267,6 +281,11 @@ def read_hb_properties(jsfile): os.environ['groupID'] = group_id if("SERVICE_NAME" in cfg.keys()): os.environ['SERVICE_NAME'] = str(cfg['SERVICE_NAME']) + if("ves-cl-outputsupport" in cfg.keys()): + ves_cl_out = str(cfg['ves-cl-outputsupport']) + if (ves_cl_out == 'yes'): + os.environ['cl_out_hb'] = ves_cl_out + except(Exception) as err: msg = "CBS Json file read parameter error - ",err _logger.error(msg) @@ -288,17 +307,28 @@ def fetch_json_file(): if os.getenv('pytest', "") == 'test': jsfile = current_runtime_config_file_name else: - jsfile = "../etc/config.json" - os.system('cp ../etc/download.json ../etc/config.json') + if(os.getenv('cl_out_hb', "") == 'yes'): + jsfile = "../etc/config_clout.json" + os.system('cp ../etc/download.json ../etc/config_clout.json') + else: + jsfile = "../etc/config.json" + os.system('cp ../etc/download.json ../etc/config.json') os.remove("../etc/download.json") else: msg = "MSHBD:CBS Config not available, using local config" _logger.warning(msg) - my_file = Path("./etc/config.json") - if my_file.is_file(): - jsfile = "./etc/config.json" + if(os.getenv('cl_out_hb', "") == 'yes'): + my_file = Path("./etc/config_clout.json") + if my_file.is_file(): + jsfile = "./etc/config_clout.json" + else: + jsfile = "../etc/config_clout.json" else: - jsfile = "../etc/config.json" + my_file = Path("./etc/config.json") + if my_file.is_file(): + jsfile = "./etc/config.json" + else: + jsfile = "../etc/config.json" msg = "MSHBT: The json file is - ", jsfile _logger.info(msg) return jsfile diff --git a/miss_htbt_service/mod/trapd_vnf_table.py b/miss_htbt_service/mod/trapd_vnf_table.py index b180bf5..24e0f3d 100644 --- a/miss_htbt_service/mod/trapd_vnf_table.py +++ b/miss_htbt_service/mod/trapd_vnf_table.py @@ -162,6 +162,27 @@ def verify_misshtbtdmain(): os.unsetenv('HOSTNAME') return result +def verify_misshtbtdmainV2(): + os.environ['pytest']='test' + os.environ['cl_out_hb']='yes' + os.environ['SERVICE_NAME']='mvp-dcaegen2-heartbeat-static' + os.environ['CONSUL_HOST']='localhost' + os.environ['HOSTNAME']='mvp-dcaegen2-heartbeat-static' + + try: + db.main() + result = True + except Exception as e: + print( "verify_misshtbtdmainV2 error - ", e) + result = False + print(result) + os.unsetenv('pytest') + os.unsetenv('cl_out_hb') + os.unsetenv('SERVICE_NAME') + os.unsetenv('CONSUL_HOST') + os.unsetenv('HOSTNAME') + return result + def verify_dbmonitoring(): os.environ['pytest']='test' os.environ['SERVICE_NAME']='mvp-dcaegen2-heartbeat-static' @@ -229,7 +250,18 @@ def verify_sendControlLoop_VM_ABATED(): pol_url = "http://10.12.5.252:3904/events/unauthenticated.DCAE_CL_OUTPUT/" _CL_return = dbmon.sendControlLoopEvent("ABATED", pol_url, "1.0", "vFireWall", "pscope", "VM", "srcname1", 1541234567, "SampleCLName", "1.0", "genVnfName") except Exception as e: -# msg = "Message process error - ",err -# _logger.error(msg) + print("Message process error - ",e) + return None + return _CL_return + +def verify_sendControlLoopV2(): + try: +# _CL_return = sendHBControlLoopEvent(CLType, pol_url, policy_version, policy_name, policy_scope, target_type, srcName, epoc_time, closed_control_loop_name, version, target, last_recvd_hb_event) + pol_url = "http://10.12.5.252:3904/events/unauthenticated.DCAE_CL_OUTPUT/" + last_recvd_hb_event = '{ "event": { "commonEventHeader": { "vesEventListenerVersion": "7.0.2", "domain": "heartbeat", "eventId": "mvfs10", "eventName": "Heartbeat_S", "lastEpochMicrosec": 1538313727714, "priority": "Normal", "reportingEntityName": "ibcx0001vm002oam001", "sequence": 1000, "sourceName": "SOURCE_NAME1", "startEpochMicrosec": 1538313727714, "version": "4.0.2", "reportingEntityId": "cc305d54-75b4-431b-adb2-eb6b9e541234", "sourceId": "VNFA_SRC1", "eventType": "platform", "nfcNamingCode": "VNFA", "nfNamingCode": "VNFA", "timeZoneOffset": "UTC-05:30" }, "heartbeatFields": { "heartbeatInterval": 20, "heartbeatFieldsVersion": "3.0" } } }' + + _CL_return = dbmon.sendHBControlLoopEventV2(pol_url, "SampleCLName", "CL_FLAG", "Policy_name", "Policy_type", last_recvd_hb_event) + except Exception as e: + print("Message process error - ",e) return None return _CL_return -- cgit 1.2.3-korg