mirror of
https://github.com/infiniflow/ragflow.git
synced 2026-01-31 15:45:08 +08:00
Add list configs and environments (#12438)
### What problem does this PR solve?
1. list configs;
3. list envs;
```
admin> list configs;
+-------------------------------------------------------------------------------------------+-----------+----+---------------+-------+----------------+
| extra | host | id | name | port | service_type |
+-------------------------------------------------------------------------------------------+-----------+----+---------------+-------+----------------+
| {} | 0.0.0.0 | 0 | ragflow_0 | 9380 | ragflow_server |
| {'meta_type': 'mysql', 'password': 'infini_rag_flow', 'username': 'root'} | localhost | 1 | mysql | 5455 | meta_data |
| {'password': 'infini_rag_flow', 'store_type': 'minio', 'user': 'rag_flow'} | localhost | 2 | minio | 9000 | file_store |
| {'password': 'infini_rag_flow', 'retrieval_type': 'elasticsearch', 'username': 'elastic'} | localhost | 3 | elasticsearch | 1200 | retrieval |
| {'db_name': 'default_db', 'retrieval_type': 'infinity'} | localhost | 4 | infinity | 23817 | retrieval |
| {'database': 1, 'mq_type': 'redis', 'password': 'infini_rag_flow'} | localhost | 5 | redis | 6379 | message_queue |
| {'message_queue_type': 'redis'} | | 6 | task_executor | 0 | task_executor |
+-------------------------------------------------------------------------------------------+-----------+----+---------------+-------+----------------+
admin> list envs;
+-------------------------+------------------+
| env | value |
+-------------------------+------------------+
| DOC_ENGINE | elasticsearch |
| DEFAULT_SUPERUSER_EMAIL | admin@ragflow.io |
| DB_TYPE | mysql |
| DEVICE | cpu |
| STORAGE_IMPL | MINIO |
+-------------------------+------------------+
admin>
```
### Type of change
- [x] New Feature (non-breaking change which adds functionality)
Signed-off-by: Jin Hai <haijin.chn@gmail.com>
This commit is contained in:
@ -58,6 +58,8 @@ sql_command: list_services
|
|||||||
| set_variable
|
| set_variable
|
||||||
| show_variable
|
| show_variable
|
||||||
| list_variables
|
| list_variables
|
||||||
|
| list_configs
|
||||||
|
| list_environments
|
||||||
|
|
||||||
// meta command definition
|
// meta command definition
|
||||||
meta_command: "\\" meta_command_name [meta_args]
|
meta_command: "\\" meta_command_name [meta_args]
|
||||||
@ -103,6 +105,8 @@ SET: "SET"i
|
|||||||
VERSION: "VERSION"i
|
VERSION: "VERSION"i
|
||||||
VAR: "VAR"i
|
VAR: "VAR"i
|
||||||
VARS: "VARS"i
|
VARS: "VARS"i
|
||||||
|
CONFIGS: "CONFIGS"i
|
||||||
|
ENVS: "ENVS"i
|
||||||
|
|
||||||
list_services: LIST SERVICES ";"
|
list_services: LIST SERVICES ";"
|
||||||
show_service: SHOW SERVICE NUMBER ";"
|
show_service: SHOW SERVICE NUMBER ";"
|
||||||
@ -137,6 +141,8 @@ revoke_admin: REVOKE ADMIN quoted_string ";"
|
|||||||
set_variable: SET VAR identifier identifier ";"
|
set_variable: SET VAR identifier identifier ";"
|
||||||
show_variable: SHOW VAR identifier ";"
|
show_variable: SHOW VAR identifier ";"
|
||||||
list_variables: LIST VARS ";"
|
list_variables: LIST VARS ";"
|
||||||
|
list_configs: LIST CONFIGS ";"
|
||||||
|
list_environments: LIST ENVS ";"
|
||||||
|
|
||||||
show_version: SHOW VERSION ";"
|
show_version: SHOW VERSION ";"
|
||||||
|
|
||||||
@ -284,6 +290,12 @@ class AdminTransformer(Transformer):
|
|||||||
def list_variables(self, items):
|
def list_variables(self, items):
|
||||||
return {"type": "list_variables"}
|
return {"type": "list_variables"}
|
||||||
|
|
||||||
|
def list_configs(self, items):
|
||||||
|
return {"type": "list_configs"}
|
||||||
|
|
||||||
|
def list_environments(self, items):
|
||||||
|
return {"type": "list_environments"}
|
||||||
|
|
||||||
def action_list(self, items):
|
def action_list(self, items):
|
||||||
return items
|
return items
|
||||||
|
|
||||||
@ -648,6 +660,10 @@ class AdminCLI(Cmd):
|
|||||||
self._show_variable(command_dict)
|
self._show_variable(command_dict)
|
||||||
case "list_variables":
|
case "list_variables":
|
||||||
self._list_variables(command_dict)
|
self._list_variables(command_dict)
|
||||||
|
case "list_configs":
|
||||||
|
self._list_configs(command_dict)
|
||||||
|
case "list_environments":
|
||||||
|
self._list_environments(command_dict)
|
||||||
case "meta":
|
case "meta":
|
||||||
self._handle_meta_command(command_dict)
|
self._handle_meta_command(command_dict)
|
||||||
case _:
|
case _:
|
||||||
@ -840,6 +856,24 @@ class AdminCLI(Cmd):
|
|||||||
else:
|
else:
|
||||||
print(f"Fail to list variables, code: {res_json['code']}, message: {res_json['message']}")
|
print(f"Fail to list variables, code: {res_json['code']}, message: {res_json['message']}")
|
||||||
|
|
||||||
|
def _list_configs(self, command):
|
||||||
|
url = f"http://{self.host}:{self.port}/api/v1/admin/configs"
|
||||||
|
response = self.session.get(url)
|
||||||
|
res_json = response.json()
|
||||||
|
if response.status_code == 200:
|
||||||
|
self._print_table_simple(res_json["data"])
|
||||||
|
else:
|
||||||
|
print(f"Fail to list variables, code: {res_json['code']}, message: {res_json['message']}")
|
||||||
|
|
||||||
|
def _list_environments(self, command):
|
||||||
|
url = f"http://{self.host}:{self.port}/api/v1/admin/environments"
|
||||||
|
response = self.session.get(url)
|
||||||
|
res_json = response.json()
|
||||||
|
if response.status_code == 200:
|
||||||
|
self._print_table_simple(res_json["data"])
|
||||||
|
else:
|
||||||
|
print(f"Fail to list variables, code: {res_json['code']}, message: {res_json['message']}")
|
||||||
|
|
||||||
def _handle_list_datasets(self, command):
|
def _handle_list_datasets(self, command):
|
||||||
username_tree: Tree = command["user_name"]
|
username_tree: Tree = command["user_name"]
|
||||||
user_name: str = username_tree.children[0].strip("'\"")
|
user_name: str = username_tree.children[0].strip("'\"")
|
||||||
|
|||||||
@ -21,7 +21,7 @@ from flask_login import current_user, login_required, logout_user
|
|||||||
|
|
||||||
from auth import login_verify, login_admin, check_admin_auth
|
from auth import login_verify, login_admin, check_admin_auth
|
||||||
from responses import success_response, error_response
|
from responses import success_response, error_response
|
||||||
from services import UserMgr, ServiceMgr, UserServiceMgr, SettingsMgr
|
from services import UserMgr, ServiceMgr, UserServiceMgr, SettingsMgr, ConfigMgr, EnvironmentsMgr
|
||||||
from roles import RoleMgr
|
from roles import RoleMgr
|
||||||
from api.common.exceptions import AdminException
|
from api.common.exceptions import AdminException
|
||||||
from common.versions import get_ragflow_version
|
from common.versions import get_ragflow_version
|
||||||
@ -449,6 +449,30 @@ def get_variable():
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
return error_response(str(e), 500)
|
return error_response(str(e), 500)
|
||||||
|
|
||||||
|
@admin_bp.route('/configs', methods=['GET'])
|
||||||
|
@login_required
|
||||||
|
@check_admin_auth
|
||||||
|
def get_config():
|
||||||
|
try:
|
||||||
|
res = list(ConfigMgr.get_all())
|
||||||
|
return success_response(res)
|
||||||
|
except AdminException as e:
|
||||||
|
return error_response(str(e), 400)
|
||||||
|
except Exception as e:
|
||||||
|
return error_response(str(e), 500)
|
||||||
|
|
||||||
|
@admin_bp.route('/environments', methods=['GET'])
|
||||||
|
@login_required
|
||||||
|
@check_admin_auth
|
||||||
|
def get_environments():
|
||||||
|
try:
|
||||||
|
res = list(EnvironmentsMgr.get_all())
|
||||||
|
return success_response(res)
|
||||||
|
except AdminException as e:
|
||||||
|
return error_response(str(e), 400)
|
||||||
|
except Exception as e:
|
||||||
|
return error_response(str(e), 500)
|
||||||
|
|
||||||
@admin_bp.route('/version', methods=['GET'])
|
@admin_bp.route('/version', methods=['GET'])
|
||||||
@login_required
|
@login_required
|
||||||
@check_admin_auth
|
@check_admin_auth
|
||||||
|
|||||||
@ -306,5 +306,37 @@ class SettingsMgr:
|
|||||||
elif len(settings) > 1:
|
elif len(settings) > 1:
|
||||||
raise AdminException(f"Can't update more than 1 setting: {name}")
|
raise AdminException(f"Can't update more than 1 setting: {name}")
|
||||||
else:
|
else:
|
||||||
raise AdminException(f"No sett"
|
raise AdminException(f"No setting: {name}")
|
||||||
f"ing: {name}")
|
|
||||||
|
class ConfigMgr:
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_all():
|
||||||
|
result = []
|
||||||
|
configs = SERVICE_CONFIGS.configs
|
||||||
|
for config in configs:
|
||||||
|
config_dict = config.to_dict()
|
||||||
|
result.append(config_dict)
|
||||||
|
return result
|
||||||
|
|
||||||
|
class EnvironmentsMgr:
|
||||||
|
@staticmethod
|
||||||
|
def get_all():
|
||||||
|
result = []
|
||||||
|
|
||||||
|
env_kv = {"env": "DOC_ENGINE", "value": os.getenv('DOC_ENGINE')}
|
||||||
|
result.append(env_kv)
|
||||||
|
|
||||||
|
env_kv = {"env": "DEFAULT_SUPERUSER_EMAIL", "value": os.getenv("DEFAULT_SUPERUSER_EMAIL", "admin@ragflow.io")}
|
||||||
|
result.append(env_kv)
|
||||||
|
|
||||||
|
env_kv = {"env": "DB_TYPE", "value": os.getenv("DB_TYPE", "mysql")}
|
||||||
|
result.append(env_kv)
|
||||||
|
|
||||||
|
env_kv = {"env": "DEVICE", "value": os.getenv("DEVICE", "cpu")}
|
||||||
|
result.append(env_kv)
|
||||||
|
|
||||||
|
env_kv = {"env": "STORAGE_IMPL", "value": os.getenv("STORAGE_IMPL", "MINIO")}
|
||||||
|
result.append(env_kv)
|
||||||
|
|
||||||
|
return result
|
||||||
|
|||||||
Reference in New Issue
Block a user