Skip to content
Snippets Groups Projects
Unverified Commit ba9cc23e authored by Ravi Tripathi's avatar Ravi Tripathi Committed by GitHub
Browse files

Merge pull request #129 from eesaanatluri/feat-add-exception-handling-acctmgr

Add exception handling to acctmr workflow agent
parents dec2f974 095bfd22
No related branches found
No related tags found
1 merge request!147Merge previous default branch feat-cod-rmq into main
...@@ -25,64 +25,69 @@ def manage_acct(ch, method, properties, body): ...@@ -25,64 +25,69 @@ def manage_acct(ch, method, properties, body):
service = msg["service"] service = msg["service"]
queuename = msg["queuename"] queuename = msg["queuename"]
if username in tracking: try:
current = tracking[username] if username in tracking:
else: current = tracking[username]
current = tracking[username] = {}
if op == 'request':
if state == 'hold' or state == 'certification':
msg["action"] = "lock"
elif state == 'ok':
msg["action"] = "unlock"
else: else:
print("Invalid state provided. Check the help menu.") current = tracking[username] = {}
if service == 'all': if op == 'request':
current["new_jobs"] = None if state == 'hold' or state == 'certification':
current["expire_account"] = None msg["action"] = "lock"
# send a broadcast message to all agents elif state == 'ok':
rc_rmq.publish_msg( msg["action"] = "unlock"
{ else:
"routing_key": f"{msg['action']}.{queuename}", print("Invalid state provided. Check the help menu.")
"msg": msg,
} if service == 'all':
) current["new_jobs"] = None
else: current["expire_account"] = None
for each_service in service: # send a broadcast message to all agents
current[each_service] = None
rc_rmq.publish_msg( rc_rmq.publish_msg(
{ {
"routing_key": f"{each_service}.{queuename}", "routing_key": f"{msg['action']}.{queuename}",
"msg": msg "msg": msg,
} }
) )
else:
for each_service in service:
current[each_service] = None
rc_rmq.publish_msg(
{
"routing_key": f"{each_service}.{queuename}",
"msg": msg
}
)
elif op == 'done':
# Check if each task/agent returned success
current[msg["task"]] = msg["success"]
done = True
for task in current.keys():
if current[task] is None:
done = False
if done:
rc_util.update_state(
username, state, msg.get("updated_by"), msg.get("host")
)
# Send done msg to account_manager.py
rc_rmq.publish_msg(
{
"routing_key": f'certified.{queuename}',
"msg": msg,
}
)
elif op == 'done': ch.basic_ack(delivery_tag=method.delivery_tag)
# Check if each task/agent returned success
current[msg["task"]] = msg["success"]
done = True
for task in current.keys():
if current[task] is None:
done = False
if done:
rc_util.update_state(
username, state, msg.get("updated_by"), msg.get("host")
)
# Send done msg to account_manager.py
rc_rmq.publish_msg(
{
"routing_key": f'certified.{queuename}',
"msg": msg,
}
)
ch.basic_ack(delivery_tag=method.delivery_tag) except Exception:
msg["errmsg"] = "Exception raised in account manager workflow agent , check the logs for stack trace"
logger.error("", exc_info=True)
rc_rmq.bind_queue(queue=task, routing_key='acctmgr.request.*', durable=True) rc_rmq.bind_queue(queue=task, routing_key='acctmgr.request.*', durable=True)
rc_rmq.bind_queue(queue=task, routing_key='acctmgr.done.*', durable=True) rc_rmq.bind_queue(queue=task, routing_key='acctmgr.done.*', durable=True)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment