aboutsummaryrefslogtreecommitdiffstats
path: root/test/mocks/pmsh-pnf-sim/docker-compose/subscriber.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/mocks/pmsh-pnf-sim/docker-compose/subscriber.py')
-rwxr-xr-xtest/mocks/pmsh-pnf-sim/docker-compose/subscriber.py112
1 files changed, 69 insertions, 43 deletions
diff --git a/test/mocks/pmsh-pnf-sim/docker-compose/subscriber.py b/test/mocks/pmsh-pnf-sim/docker-compose/subscriber.py
index 628b330ac..cc2a24e46 100755
--- a/test/mocks/pmsh-pnf-sim/docker-compose/subscriber.py
+++ b/test/mocks/pmsh-pnf-sim/docker-compose/subscriber.py
@@ -1,78 +1,104 @@
#!/usr/bin/env python3
+import logging.config
+import os
import re
+
import sysrepo as sr
+import yaml
+
from pnf import PNF
+log_file_path = os.path.join(os.path.dirname(__file__), 'app_config/logger_config.yaml')
+with open(log_file_path, 'r') as f:
+ log_cfg = yaml.safe_load(f.read())
+logging.config.dictConfig(log_cfg)
+logger = logging.getLogger('dev')
+
def module_change_cb(sess, module_name, event, private_ctx):
""" Handle event change based on yang operation. """
try:
- change_path = "/" + module_name + ":*"
+ change_path = f'/{module_name}:*'
iterate = sess.get_changes_iter(change_path)
change = sess.get_change_next(iterate)
changelist = []
operation = change.oper()
pnf = PNF()
if event == sr.SR_EV_APPLY:
- print("------------------> Start Handle Change <------------------")
+ logger.info('------------------> Start Handle Change <------------------')
if operation == sr.SR_OP_CREATED:
- while True:
- change = sess.get_change_next(iterate)
- if change is None:
- break
- changelist.append(change.new_val().to_string())
- result = re.findall(r'\'(.*?)\'', changelist[0])
- jobid = result[0]
- print("Subscription Created : " + changelist[0])
- pnf.create_job_id(jobid, changelist)
- pnf.pm_job()
+ create_sub(changelist, iterate, pnf, sess)
elif operation == sr.SR_OP_DELETED:
- changelist.append(change.old_val().to_string())
- result = re.findall(r'\'(.*?)\'', changelist[0])
- jobid = result[0]
- print("Subscription Deleted : " + changelist[0])
- pnf.delete_job_id(jobid)
- pnf.pm_job()
+ delete_sub(change, changelist, pnf)
elif operation == sr.SR_OP_MODIFIED:
- changelist.append(change.new_val().to_string())
- element = changelist[0]
- print("Subscription Modified :" + element)
- result = re.findall(r'\'(.*?)\'', changelist[0])
- jobid = result[0]
- administrative_state = ((element.rsplit('/', 1)[1]).split('=', 1))[1].strip()
- if administrative_state == "LOCKED":
- pnf.delete_job_id(jobid)
- pnf.pm_job()
- elif administrative_state == "UNLOCKED":
- select_xpath = "/" + module_name + ":*//*"
- values = sess.get_items(select_xpath)
- if values is not None:
- for i in range(values.val_cnt()):
- if jobid in values.val(i).to_string():
- changelist.append(values.val(i).to_string())
- pnf.create_job_id(jobid, changelist)
- pnf.pm_job()
+ edit_sub(change, changelist, module_name, pnf, sess)
else:
- print("Unknown Operation")
- print("------------------> End Handle Change <------------------")
+ logger.info('Unknown Operation')
+ logger.info('------------------> End Handle Change <------------------')
except Exception as error:
- print(error)
+ logger.info(error, exc_info=True)
return sr.SR_ERR_OK
+def edit_sub(change, changelist, module_name, pnf, sess):
+ changelist.append(change.new_val().to_string())
+ element = changelist[0]
+ jobid = get_job_id(changelist)
+ administrative_state = ((element.rsplit('/', 1)[1]).split('=', 1))[1].strip()
+ if administrative_state == 'LOCKED':
+ pnf.delete_job_id(jobid)
+ pnf.pm_job()
+ elif administrative_state == 'UNLOCKED':
+ select_xpath = '/' + module_name + ':*//*'
+ values = sess.get_items(select_xpath)
+ if values is not None:
+ for i in range(values.val_cnt()):
+ if jobid in values.val(i).to_string():
+ changelist.append(values.val(i).to_string())
+ pnf.create_job_id(jobid, changelist)
+ pnf.pm_job()
+ logger.info(f'Subscription Modified : {element}')
+
+
+def create_sub(changelist, iterate, pnf, sess):
+ while True:
+ change = sess.get_change_next(iterate)
+ if change is None:
+ break
+ changelist.append(change.new_val().to_string())
+ jobid = get_job_id(changelist)
+ pnf.create_job_id(jobid, changelist)
+ pnf.pm_job()
+ logger.info(f'Subscription Created : {changelist[0]}')
+
+
+def delete_sub(change, changelist, pnf):
+ changelist.append(change.old_val().to_string())
+ jobid = get_job_id(changelist)
+ pnf.delete_job_id(jobid)
+ pnf.pm_job()
+ logger.info(f'Subscription Deleted : {changelist[0]}')
+
+
+def get_job_id(changelist):
+ result = re.findall(r'\'(.*?)\'', changelist[0])
+ jobid = result[0]
+ return jobid
+
+
def start():
- """ main function to create connection based on moudule name. """
+ """ main function to create connection based on module name. """
try:
- module_name = "pnf-subscriptions"
+ module_name = 'pnf-subscriptions'
conn = sr.Connection(module_name)
sess = sr.Session(conn)
subscribe = sr.Subscribe(sess)
subscribe.module_change_subscribe(module_name, module_change_cb)
sr.global_loop()
- print("Application exit requested, exiting.")
+ logger.info('Application exit requested, exiting.')
except Exception as error:
- print(error)
+ logger.error(error, exc_info=True)
if __name__ == '__main__':