def create_db_user()

in nuvolaris/redis.py [0:0]


def create_db_user(ucfg: UserConfig, user_metadata: UserMetadata, read_only_mode = False):
    logging.info(f"authorizing new redis namespace {ucfg.get('namespace')}")    
    try:
        wait_for_redis_ready()
        data = util.get_redis_config_data()

        # if prefix not provided defaults to user namespace
        prefix = ucfg.get('redis.prefix') or ucfg.get('namespace') 
        if(not prefix.endswith(":")):
            prefix = f"{prefix}:"
        data['prefix']=prefix
        data['namespace']=ucfg.get('namespace')
        data['password']=ucfg.get('redis.password')
        data['mode']="create"

        if read_only_mode:
            logging.warn(f"activating {prefix} in read-only mode")
            data['mode']="create_readonly"

        path_to_script = render_redis_script(ucfg.get('namespace'),"redis_manage_user_tpl.txt",data)
        pod_name = util.get_pod_name("{.items[?(@.metadata.labels.name == 'redis')].metadata.name}")

        if(pod_name):
            res = exec_redis_command(pod_name,path_to_script)

            if res:
                user_metadata.add_metadata("REDIS_PREFIX",prefix)
                _add_redis_user_metadata(ucfg, user_metadata)
                return res
            else:
                logging.error(f"failed to add redis namespace {ucfg.get('namespace')}")

        return None
    except Exception as e:
        logging.error(f"failed to add redis namespace {ucfg.get('namespace')}: {e}")
        return None