seitime-frappe/frappe/commands/redis_utils.py
2024-02-19 18:10:07 +05:30

69 lines
2 KiB
Python

import os
import click
import frappe
@click.command("create-rq-users")
@click.option(
"--set-admin-password",
is_flag=True,
default=False,
help="Set new Redis admin(default user) password",
)
@click.option("--use-rq-auth", is_flag=True, default=False, help="Enable Redis authentication for sites")
def create_rq_users(set_admin_password=False, use_rq_auth=False):
"""Create Redis Queue users and add to acl and app configs.
acl config file will be used by redis server while starting the server
and app config is used by app while connecting to redis server.
"""
from frappe.installer import update_site_config
from frappe.utils.redis_queue import RedisQueue
acl_file_path = os.path.abspath("../config/redis_queue.acl")
with frappe.init_site():
acl_list, user_credentials = RedisQueue.gen_acl_list(set_admin_password=set_admin_password)
with open(acl_file_path, "w") as f:
f.writelines([acl + "\n" for acl in acl_list])
sites_path = os.getcwd()
common_site_config_path = os.path.join(sites_path, "common_site_config.json")
update_site_config(
"rq_username",
user_credentials["bench"][0],
validate=False,
site_config_path=common_site_config_path,
)
update_site_config(
"rq_password",
user_credentials["bench"][1],
validate=False,
site_config_path=common_site_config_path,
)
update_site_config("use_rq_auth", use_rq_auth, validate=False, site_config_path=common_site_config_path)
click.secho(
"* ACL and site configs are updated with new user credentials. "
"Please restart Redis Queue server to enable namespaces.",
fg="green",
)
if set_admin_password:
env_key = "RQ_ADMIN_PASWORD"
click.secho(
"* Redis admin password is successfully set up. "
"Include below line in .bashrc file for system to use",
fg="green",
)
click.secho(f"`export {env_key}={user_credentials['default'][1]}`")
click.secho(
"NOTE: Please save the admin password as you " "can not access redis server without the password",
fg="yellow",
)
commands = [create_rq_users]