From a58f745a637783469c8f4907b74f7ad8f61037fb Mon Sep 17 00:00:00 2001
From: Krish Moodbidri <krish94@uab.edu>
Date: Wed, 2 Sep 2020 14:08:27 +0000
Subject: [PATCH] copied rc_util

---
 rc_util.py | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 72 insertions(+)
 create mode 100644 rc_util.py

diff --git a/rc_util.py b/rc_util.py
new file mode 100644
index 0000000..0e7c4c1
--- /dev/null
+++ b/rc_util.py
@@ -0,0 +1,72 @@
+import logging
+import argparse
+from rc_rmq import RCRMQ
+import json
+
+rc_rmq = RCRMQ({'exchange': 'RegUsr', 'exchange_type': 'topic'})
+tasks = {'ohpc_account': None, 'ood_account': None, 'slurm_account': None}
+logger_fmt = '%(asctime)s [%(module)s] - %(message)s'
+
+def add_account(username, email, full='', reason=''):
+  rc_rmq.publish_msg({
+    'routing_key': 'request.' + username,
+    'msg': {
+      "username": username,
+      "email": email,
+      "fullname": full,
+      "reason": reason
+    }
+  })
+  rc_rmq.disconnect()
+
+def worker(ch, method, properties, body):
+    msg = json.loads(body)
+    task = msg['task']
+    tasks[task] = msg['success']
+    print("Got msg: {}({})".format(msg['task'], msg['success']))
+
+    # Check if all tasks are done
+    done = True
+    for key, status in tasks.items():
+        if not status:
+            print("{} is not done yet.".format(key))
+            done = False
+    if done:
+        rc_rmq.stop_consume()
+        rc_rmq.delete_queue()
+
+def consume(username, callback=worker, debug=False):
+    if debug:
+        sleep(5)
+    else:
+        rc_rmq.start_consume({
+            'queue': username,
+            'routing_key': 'confirm.' + username,
+            'cb': callback
+        })
+        rc_rmq.disconnect()
+
+    return { 'success' : True }
+
+def get_args():
+    # Parse arguments
+    parser = argparse.ArgumentParser()
+    parser.add_argument('-v', '--verbose', action='store_true', help='verbose output')
+    parser.add_argument('-n', '--dry-run', action='store_true', help='enable dry run mode')
+    return parser.parse_args()
+
+def get_logger(args=None):
+    if args is None:
+        args = get_args()
+
+    logger_lvl = logging.WARNING
+
+    if args.verbose:
+        logger_lvl = logging.DEBUG
+
+    if args.dry_run:
+        logger_lvl = logging.INFO
+
+    logging.basicConfig(format=logger_fmt, level=logger_lvl)
+    return logging.getLogger(__name__)
+
-- 
GitLab