aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--env_clout.list10
-rw-r--r--etc/config.json2
-rw-r--r--etc/config_clout.json1
-rw-r--r--miss_htbt_service/db_monitoring.py72
-rw-r--r--miss_htbt_service/get_logger.py5
-rw-r--r--miss_htbt_service/htbtworker.py22
-rw-r--r--miss_htbt_service/misshtbtd.py58
-rw-r--r--miss_htbt_service/mod/trapd_vnf_table.py36
-rw-r--r--tests/test_trapd_vnf_table.py12
9 files changed, 184 insertions, 34 deletions
diff --git a/env_clout.list b/env_clout.list
new file mode 100644
index 0000000..b162a12
--- /dev/null
+++ b/env_clout.list
@@ -0,0 +1,10 @@
+pg_ipAddress=10.0.4.1
+pg_portNum=5432
+pg_userName=postgres
+pg_passwd=abc
+SERVICE_NAME=mvp-dcaegen2-heartbeat-static
+groupID=group1
+consumerID=1
+CONSUL_HOST=10.12.6.50
+HOSTNAME=mvp-dcaegen2-heartbeat-static
+cl_out_hb=yes
diff --git a/etc/config.json b/etc/config.json
index e853f6a..25cae77 100644
--- a/etc/config.json
+++ b/etc/config.json
@@ -1 +1 @@
-{"pg_ipAddress": "10.0.4.1", "pg_userName": "postgres", "pg_dbName": "postgres", "streams_subscribes": {"ves-heartbeat": {"type": "message_router", "dmaap_info": {"topic_url": "http://10.12.5.252:3904/events/unauthenticated.SEC_HEARTBEAT_INPUT"}}}, "consumerID": "1", "CBS_polling_interval": "300", "pg_passwd": "postgres", "streams_publishes": {"dcae_cl_out": {"type": "message_router", "dmaap_info": {"topic_url": "http://10.12.5.252:3904/events/unauthenticated.DCAE_CL_OUTPUT"}}}, "pg_portNum": "5432", "CBS_polling_allowed": "True", "groupID": "groupID", "heartbeat_config": "{\"vnfs\": [{\"eventName\": \"Heartbeat_vDNS\",\"heartbeatcountmissed\": 3,\"heartbeatinterval\": 60,\"closedLoopControlName\": \"ControlLoopEvent1\",\t\"policyVersion\": \"1.0.0.5\",\t\"policyName\":\"vFireWall\",\"policyScope\": \"resource=sampleResource,type=sampletype,CLName=sampleCLName\",\"target_type\": \"VNF\",\t\"target\": \"genVnfName\",\t\"version\": \"1.0\"}, {\"eventName\": \"Heartbeat_vFW\",\"heartbeatcountmissed\": 3,\t\"heartbeatinterval\": 60,\"closedLoopControlName\": \"ControlLoopEvent1\",\"policyVersion\": \"1.0.0.5\",\"policyName\": \"vFireWall\",\"policyScope\": \"resource=sampleResource,type=sampletype,CLName=sampleCLName\",\t\"target_type\":\"VNF\",\t\"target\": \"genVnfName\",\t\"version\": \"1.0\"}, {\"eventName\": \"Heartbeat_xx\",\"heartbeatcountmissed\": 3,\t\"heartbeatinterval\": 60,\"closedLoopControlName\": \"ControlLoopEvent1\",\"policyVersion\": \"1.0.0.5\",\"policyName\": \"vFireWall\",\t\"policyScope\": \"resource=sampleResource,type=sampletype,CLName=sampleCLName\",\"target_type\": \"VNF\",\"target\": \"genVnfName\",\"version\": \"1.0\"}]}"}
+{"ves-cl-outputsupport": "no", "pg_ipAddress": "10.0.4.1", "pg_userName": "postgres", "pg_dbName": "postgres", "streams_subscribes": {"ves-heartbeat": {"type": "message_router", "dmaap_info": {"topic_url": "http://10.12.5.252:3904/events/unauthenticated.SEC_HEARTBEAT_INPUT"}}}, "consumerID": "1", "CBS_polling_interval": "300", "pg_passwd": "postgres", "streams_publishes": {"dcae_cl_out": {"type": "message_router", "dmaap_info": {"topic_url": "http://10.12.5.252:3904/events/unauthenticated.DCAE_CL_OUTPUT"}}}, "pg_portNum": "5432", "CBS_polling_allowed": "True", "groupID": "groupID", "heartbeat_config": "{\"vnfs\": [{\"eventName\": \"Heartbeat_vDNS\",\"heartbeatcountmissed\": 3,\"heartbeatinterval\": 60,\"closedLoopControlName\": \"ControlLoopEvent1\",\t\"policyVersion\": \"1.0.0.5\",\t\"policyName\":\"vFireWall\",\"policyScope\": \"resource=sampleResource,type=sampletype,CLName=sampleCLName\",\"target_type\": \"VNF\",\t\"target\": \"genVnfName\",\t\"version\": \"1.0\"}, {\"eventName\": \"Heartbeat_vFW\",\"heartbeatcountmissed\": 3,\t\"heartbeatinterval\": 60,\"closedLoopControlName\": \"ControlLoopEvent1\",\"policyVersion\": \"1.0.0.5\",\"policyName\": \"vFireWall\",\"policyScope\": \"resource=sampleResource,type=sampletype,CLName=sampleCLName\",\t\"target_type\":\"VNF\",\t\"target\": \"genVnfName\",\t\"version\": \"1.0\"}, {\"eventName\": \"Heartbeat_xx\",\"heartbeatcountmissed\": 3,\t\"heartbeatinterval\": 60,\"closedLoopControlName\": \"ControlLoopEvent1\",\"policyVersion\": \"1.0.0.5\",\"policyName\": \"vFireWall\",\t\"policyScope\": \"resource=sampleResource,type=sampletype,CLName=sampleCLName\",\"target_type\": \"VNF\",\"target\": \"genVnfName\",\"version\": \"1.0\"}]}"}
diff --git a/etc/config_clout.json b/etc/config_clout.json
new file mode 100644
index 0000000..66414be
--- /dev/null
+++ b/etc/config_clout.json
@@ -0,0 +1 @@
+{"ves-cl-outputsupport": "yes", "pg_ipAddress": "10.0.4.1", "pg_userName": "postgres", "pg_dbName": "postgres", "streams_subscribes": {"ves-heartbeat": {"type": "message_router", "dmaap_info": {"topic_url": "http://10.12.5.252:3904/events/unauthenticated.SEC_HEARTBEAT_INPUT"}}}, "consumerID": "1", "CBS_polling_interval": "300", "pg_passwd": "postgres", "streams_publishes": {"dcae_cl_out": {"type": "message_router", "dmaap_info": {"topic_url": "http://10.12.5.252:3904/events/unauthenticated.DCAE_CL_OUTPUT"}}}, "pg_portNum": "5432", "CBS_polling_allowed": "True", "groupID": "groupID", "heartbeat_config": "{\"vnfs\": [{\"eventName\": \"Heartbeat_vDNS\",\"heartbeatcountmissed\": 3,\"heartbeatinterval\": 60,\"closedLoopControlName\": \"ControlLoopEvent1\",\t\"policyName\":\"vFireWall\",\"closedLoopFlag\": \"CLFlag\",\t\"policyType\": \"polTyp\"}, {\"eventName\": \"Heartbeat_vFW\",\"heartbeatcountmissed\": 3,\t\"heartbeatinterval\": 60,\"closedLoopControlName\": \"ControlLoopEvent1\",\"policyName\": \"vFireWall\",\t\"closedLoopFlag\":\"CLFlag\",\t\"policyType\": \"polTyp\"}, {\"eventName\": \"Heartbeat_xx\",\"heartbeatcountmissed\": 3,\t\"heartbeatinterval\": 60,\"closedLoopControlName\": \"ControlLoopEvent1\",\"policyName\": \"vFireWall\",\"closedLoopFlag\": \"CLFlag\",\"policyType\": \"polTyp\"}]}"}
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
diff --git a/tests/test_trapd_vnf_table.py b/tests/test_trapd_vnf_table.py
index 9e11ce9..2afff96 100644
--- a/tests/test_trapd_vnf_table.py
+++ b/tests/test_trapd_vnf_table.py
@@ -31,7 +31,7 @@ import misshtbtd as db
import htbtworker as pm
import db_monitoring as dbmon
import get_logger
-from trapd_vnf_table import verify_DB_creation_1,verify_DB_creation_2,verify_DB_creation_hb_common,verify_cbsPolling_required,hb_properties,verify_cbspolling,verify_sendControlLoop_VNF_ONSET, verify_sendControlLoop_VM_ONSET, verify_sendControlLoop_VNF_ABATED, verify_sendControlLoop_VM_ABATED, verify_fetch_json_file, verify_misshtbtdmain, verify_dbmonitoring, verify_dbmon_startup
+from trapd_vnf_table import verify_DB_creation_1,verify_DB_creation_2,verify_DB_creation_hb_common,verify_cbsPolling_required,hb_properties,verify_cbspolling,verify_sendControlLoop_VNF_ONSET, verify_sendControlLoop_VM_ONSET, verify_sendControlLoop_VNF_ABATED, verify_sendControlLoop_VM_ABATED, verify_fetch_json_file, verify_misshtbtdmain, verify_dbmonitoring, verify_dbmon_startup, verify_misshtbtdmainV2, verify_sendControlLoopV2
_logger = get_logger.get_logger(__name__)
@@ -74,6 +74,11 @@ class test_vnf_tables(unittest.TestCase):
_logger.info(result)
self.assertEqual(result, True)
+ def test_misshtbtdmainV2(self):
+ result= verify_misshtbtdmainV2()
+ _logger.info(result)
+ self.assertEqual(result, True)
+
def test_dbmon_startup(self):
result= verify_dbmon_startup()
_logger.info(result)
@@ -104,5 +109,10 @@ class test_vnf_tables(unittest.TestCase):
_logger.info(result)
self.assertEqual(result, True)
+ def test_sendControlLoopV2(self):
+ result= verify_sendControlLoopV2()
+ _logger.info(result)
+ self.assertEqual(result, True)
+
#if __name__ == '__main__':
# unittest.main()