Skip to content
Snippets Groups Projects
create_account.py 1.96 KiB
Newer Older
Bo-Chun Chen's avatar
Bo-Chun Chen committed
#!/usr/bin/env python3
import json
Bo-Chun Chen's avatar
Bo-Chun Chen committed
import rc_util
Bo-Chun Chen's avatar
Bo-Chun Chen committed
import argparse
Bo-Chun Chen's avatar
Bo-Chun Chen committed
import signal
Bo-Chun Chen's avatar
Bo-Chun Chen committed
parser = argparse.ArgumentParser()
parser.add_argument("username", help="username that will be created")
parser.add_argument("email", nargs="?", default="", help="User's email")
parser.add_argument(
    "full_name", nargs="?", default="", help="User's full name"
)
parser.add_argument(
    "reason", nargs="?", default="", help="Reason of requesting"
)
Bo-Chun Chen's avatar
Bo-Chun Chen committed
parser.add_argument("--domain", default="localhost", help="domain of email")
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"
)
Bo-Chun Chen's avatar
Bo-Chun Chen committed
args = parser.parse_args()
Bo-Chun Chen's avatar
Bo-Chun Chen committed
timeout = 60
Ravi Tripathi's avatar
Ravi Tripathi committed
queuename = rc_util.encode_name(args.username)
updated_by, host = rc_util.get_caller_info()
Ravi Tripathi's avatar
Ravi Tripathi committed

if args.email == "":
Bo-Chun Chen's avatar
Bo-Chun Chen committed
    args.email = args.username
    if "@" not in args.email:
        args.email = args.username + "@" + args.domain

Bo-Chun Chen's avatar
Bo-Chun Chen committed
def timeout_handler(signum, frame):
    print("Process timeout, there's might some issue with agents")
    rc_util.rc_rmq.disconnect()
def callback(channel, method, properties, body):
    msg = json.loads(body)
    username = msg["username"]
    if msg["success"]:
        print(f"Account for {username} has been created.")
    else:
        print(f"There's some issue while creating account for {username}")
        errmsg = msg.get("errmsg", [])
        for err in errmsg:
            print(err)
    rc_util.rc_rmq.disconnect()
Ravi Tripathi's avatar
Ravi Tripathi committed
rc_util.add_account(
    args.username,
    queuename=queuename,
    email=args.email,
    full=args.full_name,
    reason=args.reason,
    updated_by=updated_by,
Ravi Tripathi's avatar
Ravi Tripathi committed
)
print(f"Account for {args.username} requested.")
Bo-Chun Chen's avatar
Bo-Chun Chen committed
# Set initial timeout timer
signal.signal(signal.SIGALRM, timeout_handler)
signal.setitimer(signal.ITIMER_REAL, timeout)

Ravi Tripathi's avatar
Ravi Tripathi committed
print("Waiting for completion...")
rc_util.consume(
    queuename,
    routing_key=f"complete.{queuename}",
    exclusive=True,
    callback=callback,