diff --git a/account_manager.py b/account_manager.py index 109a516bb9b875a18046a377d674c913975a61bd..4c5d5ded8e2891ef926c60fe9206a802dbd75910 100755 --- a/account_manager.py +++ b/account_manager.py @@ -1,24 +1,31 @@ #!/usr/bin/env python3 import json -import rc_util import argparse import signal -import uuid -import pika import rc_util from rc_rmq import RCRMQ import rabbit_config as rcfg -import time -parser = argparse.ArgumentParser(description = "Account management driver script") -parser.add_argument( - "username", help="Username that should be locked/unlocked") +parser = argparse.ArgumentParser( + description="Account management driver script" +) +parser.add_argument("username", help="Username that should be locked/unlocked") parser.add_argument( - "state", choices=['ok', 'hold', 'certification', 'pre_certification'], help="Choose from states (ok,hold,certification,pre_certification)") + "state", + choices=["ok", "hold", "certification", "pre_certification"], + help="Choose from states (ok,hold,certification,pre_certification)", +) parser.add_argument( - "-s", "--service", nargs='+', default='all', choices=['ssh', 'newjobs', 'expiration', 'all'], help="List one or more services to be blocked (default: %(default)s)") + "-s", + "--service", + nargs="+", + default="all", + choices=["ssh", "newjobs", "expiration", "all"], + help="List one or more services to be blocked (default: %(default)s)", +) parser.add_argument( - "-v", "--verbose", action="store_true", help="verbose output") + "-v", "--verbose", action="store_true", help="verbose output" +) parser.add_argument( "-n", "--dry-run", action="store_true", help="enable dry run mode" ) @@ -41,11 +48,12 @@ msg["state"] = state msg["service"] = service msg["queuename"] = queuename msg["updated_by"], msg["host"] = rc_util.get_caller_info() +msg["interface"] = "CLI" # publish msg with acctmgr.{uname} routing key. rc_rmq.publish_msg( { - "routing_key": f'acctmgr.request.{queuename}', + "routing_key": f"acctmgr.request.{queuename}", "msg": msg, } ) @@ -61,18 +69,23 @@ def callback(ch, method, properties, body): username = msg["username"] if msg["success"]: - print(f"Account for {username} has been {msg['action']}ed.\n Updating the user state in DB") + print( + f"Account for {username} has been {msg['action']}ed.\n " + "Updating the user state in DB" + ) else: - print(f"There's some issue in account management agents for {username}") + print( + f"There's some issue in account management agents for {username}" + ) errmsg = msg.get("errmsg", []) for err in errmsg: print(err) - ch.basic_ack(delivery_tag=method.delivery_tag) rc_rmq.stop_consume() rc_rmq.delete_queue(queuename) + print(f"Request {username} account state set to {state}.") # Set initial timeout timer @@ -83,7 +96,7 @@ print("Waiting for completion...") rc_rmq.start_consume( { "queue": queuename, - "routing_key": f'certified.{queuename}', + "routing_key": f"certified.{queuename}", "cb": callback, } ) diff --git a/group_manager.py b/group_manager.py index 3422dc84b761f3ea0d4b97af247f44bb01a00a0d..205dadf6d950bb82f2c08d17b532e6269adc1d14 100755 --- a/group_manager.py +++ b/group_manager.py @@ -40,7 +40,7 @@ def manage_group(op, usernames, groupname, debug=False): response = 0 interface = "CLI" - executed_by, host = get_caller_info() + updated_by, host = get_caller_info() def handler(ch, method, properties, body): if debug: @@ -78,7 +78,7 @@ def manage_group(op, usernames, groupname, debug=False): "groups": {f"{op}": [f"{groupname}"]}, "username": user, "host": host, - "executed_by": executed_by, + "updated_by": updated_by, "interface": interface, }, } diff --git a/migrations/20240729_groups_rename_column.sql b/migrations/20240729_groups_rename_column.sql new file mode 100644 index 0000000000000000000000000000000000000000..d9abac056501428e081b26c88ea17cfdde63b63e --- /dev/null +++ b/migrations/20240729_groups_rename_column.sql @@ -0,0 +1,27 @@ +BEGIN TRANSACTION; + +-- Create new table with updated_by column +CREATE TABLE groups_temp ( + id INTEGER PRIMARY KEY, + user TEXT, + "group" TEXT, + operation INTEGER, + date DATETIME, + host TEXT, + updated_by TEXT, + interface TEXT +); + +-- Copy all entries from old table +INSERT INTO groups_temp(user,"group",operation,date,host,updated_by,interface) +SELECT user,"group",operation,date,host,executed_by,interface +FROM groups; + +-- Drop old table +DROP TABLE groups; + +-- Rename new table +ALTER TABLE groups_temp +RENAME TO groups; + +COMMIT; diff --git a/prod_rmq_agents/group_member.py b/prod_rmq_agents/group_member.py index ae7e1f2a8a7b644188ac70867f48ab9387523d79..d0fb17ca9d2dbbe80d6689649879266a81a4b345 100644 --- a/prod_rmq_agents/group_member.py +++ b/prod_rmq_agents/group_member.py @@ -36,8 +36,8 @@ def insert_db(operation, groupname, msg): "operation": op, "date": datetime.now(), "host": msg["host"], - "executed_by": msg["executed_by"], - "interface": msg["interface"], + "updated_by": msg["updated_by"], + "interface": msg.get("interface", ""), } ) @@ -53,7 +53,7 @@ def group_member(ch, method, properties, body): groups (dict): A dictionary with `add` or `remove` key. add (list): A list of groups to be added for the user. remove (list): A list of groups to be removed for the user. - executed_by (str): The user who request the change. + updated_by (str): The user who request the change. host (str): Hostname where the request comes from. interface (str): whether it's from CLI or WebUI. diff --git a/pyproject.toml b/pyproject.toml index 1d15ad7d9a23fece8d2321b3f09abba072fa4c6e..8b9f29313a2c22986854bca71d94a8625353db71 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,3 +1,9 @@ [tool.black] -line-length=79 -target-version=['py36'] +line-length = 79 +target-version = ['py36'] +preview = true +[tool.pylint.main] +disable = ["invalid-name", "import-error", "unused-argument", "broad-except"] +ignore = ["config.py", "tests.py"] +[tool.pylint.format] +max-line-length = 79