TooY 2 سال پیش
والد
کامیت
8daf4670a5
2فایلهای تغییر یافته به همراه28 افزوده شده و 21 حذف شده
  1. 18 13
      appmanage/api/service/manage.py
  2. 10 8
      appmanage/api/v1/routers/apps.py

+ 18 - 13
appmanage/api/service/manage.py

@@ -16,7 +16,8 @@ from api.model.response import Response
 from api.utils.common_log import myLogger
 from redis import Redis
 from rq import Queue, Worker, Connection
-from rq.registry import StartedJobRegistry, FinishedJobRegistry, DeferredJobRegistry,FailedJobRegistry,ScheduledJobRegistry
+from rq.registry import StartedJobRegistry, FinishedJobRegistry, DeferredJobRegistry, FailedJobRegistry, \
+    ScheduledJobRegistry
 
 # 指定 Redis 容器的主机名和端口
 redis_conn = Redis(host='websoft9-redis', port=6379)
@@ -24,6 +25,7 @@ redis_conn = Redis(host='websoft9-redis', port=6379)
 # 使用指定的 Redis 连接创建 RQ 队列
 q = Queue(connection=redis_conn)
 
+
 # 获取所有app的信息
 def get_my_app():
     ret = Response(code=const.RETURN_FAIL, message="App query failed!")
@@ -139,6 +141,7 @@ def start_app(app_id):
     ret = ret.dict()
     return ret
 
+
 def stop_app(app_id):
     ret = Response(code=const.RETURN_FAIL, message="")
     if docker.check_app_id(app_id):
@@ -160,6 +163,7 @@ def stop_app(app_id):
     ret = ret.dict()
     return ret
 
+
 def restart_app(app_id):
     ret = Response(code=const.RETURN_FAIL, message="")
     if docker.check_app_id(app_id):
@@ -237,8 +241,8 @@ def prepare_app(app_name, customer_app_name):
         code = const.RETURN_FAIL
     return code, message
 
-def install_app_delay(app_name, customer_app_name, app_version):
 
+def install_app_delay(app_name, customer_app_name, app_version):
     try:
         code, message = check_app(app_name, customer_app_name, app_version)
         if code == const.RETURN_SUCCESS:
@@ -258,15 +262,15 @@ def install_app_delay(app_name, customer_app_name, app_version):
                 myLogger.info_logger(output["code"])
                 myLogger.info_logger(output["result"])
                 if int(output["code"]) != 0 or "error" in output["result"] or "fail" in output["result"]:
-                   raise Exception("installfailed!")
+                    raise Exception("installfailed!")
                 else:
-                   return "success"
+                    return "success"
             else:
                 raise Exception("prepare_app failed")
         else:
             raise Exception("resource check failed")
     except Exception as e:
-        myLogger.info_logger(customer_app_name+"install failed!")
+        myLogger.info_logger(customer_app_name + "install failed!")
         myLogger.error_logger(e)
         job_id = app_name + "_" + customer_app_name
         try:
@@ -275,6 +279,7 @@ def install_app_delay(app_name, customer_app_name, app_version):
             myLogger.error_logger(e)
         return "fail"
 
+
 def if_app_exits(app_id):
     app_name = app_id.split('_')[1]
     real_name = app_id.split('_')[0]
@@ -320,7 +325,8 @@ def get_apps_from_compose(output_list):
         password = ""
         official_app = False
 
-        if app_name in ['appmanage', 'nginxproxymanager', 'redis']:
+        if app_name in ['appmanage', 'nginxproxymanager',
+                        'redis'] and app_path == '/data/apps/stackhub/docker/' + app_name:
             continue
         # get code
         case = app_info["Status"].split("(")[0]  # case
@@ -397,7 +403,6 @@ def check_if_official_app(var_path):
 
 
 def get_apps_from_queue():
-    
     myLogger.info_logger("get queque apps...")
     # 获取 StartedJobRegistry 实例
     registry = StartedJobRegistry(queue=q)
@@ -417,24 +422,24 @@ def get_apps_from_queue():
     myLogger.info_logger(wait_job_ids)
     myLogger.info_logger(run_job_ids)
     myLogger.info_logger(finish_job_ids)
-    myLogger.info_logger(failed_jobs )
+    myLogger.info_logger(failed_jobs)
     myLogger.info_logger(scheduled_jobs)
- 
+
     myLogger.info_logger("----------------------------------------")
 
     installing_list = []
     for job in run_job_ids:
         app = get_installing_app(job, const.APP_READY, 'installing')
         installing_list.append(app)
-    for job in q.jobs: 
+    for job in q.jobs:
         app = get_installing_app(job.id, const.APP_WAIT, 'waiting')
         installing_list.append(app)
     for job_id in finish_job_ids:
         job = q.fetch_job(job_id)
         if job.result == "fail":
-           app = get_installing_app(job_id, const.APP_ERROR, 'error')
-           installing_list.append(app)
-	
+            app = get_installing_app(job_id, const.APP_ERROR, 'error')
+            installing_list.append(app)
+
     return installing_list
 
 

+ 10 - 8
appmanage/api/v1/routers/apps.py

@@ -13,7 +13,7 @@ from api.utils.common_log import myLogger
 
 router = APIRouter()
 
-rd1 = "code:请求操作内部响应码\n\nmessage:请求操作结果描述\n\ndata:返回请求结果内容\n\n" \
+rd1 = "code:请求操作内部响应码(0:成功 -1:失败)\n\nmessage:请求操作结果描述\n\ndata:返回请求结果内容\n\n" \
       "[\n\n" \
       "  app_id:应用ID,\n\n" \
       "  name:应用名,\n\n" \
@@ -24,7 +24,6 @@ rd1 = "code:请求操作内部响应码\n\nmessage:请求操作结果描述\
 status = '  status:应用运行状态,\n\n'
 status_detail = "  status:应用运行状态,(running:正常运行,stop:停止,error:错误)\n\n"
 status_list = "  status:应用运行状态,(waiting:等待安装,installing:安装中,running:正常运行,stop:停止,error:错误)\n\n"
-status_process = "  status:应用运行状态,(pulling:拉取镜像,creating:容器启动,inting:容器初始化,running:正常运行)\n\n"
 
 rd2 = "  port:应用端口,\n\n" \
       "  volume:yml文件路径,\n\n" \
@@ -38,7 +37,10 @@ rd2 = "  port:应用端口,\n\n" \
 rd = rd1 + status + rd2
 rd_detail = rd1 + status_detail + rd2
 rd_list = rd1 + status_list + rd2
-rd_process = rd1 + status_process + rd2
+rd_process = "code:请求操作内部响应码(0:成功 -1:失败)\n\nmessage:请求操作结果描述\n\nstatus:应用运行状态," \
+             "(pulling:拉取镜像,creating:容器启动,inting:容器初始化,running:正常运行)"
+rd_two = "code:请求操作内部响应码(0:成功 -1:失败)\n\nmessage:请求操作结果描述\n\ndata:None"
+
 
 @router.api_route("/details", methods=["GET", "POST"], summary="获取指定APP的信息",
                   response_description=rd_detail,
@@ -57,7 +59,7 @@ def list_my_apps():
     return JSONResponse(content=list)
 
 
-@router.api_route("/install", methods=["GET", "POST"], summary="安装APP", response_description=rd,
+@router.api_route("/install", methods=["GET", "POST"], summary="安装APP", response_description=rd_two,
                   response_model=Response)
 def install_app(app_name: Optional[str] = Query(default=None, description="应用名"),
                 customer_app_name: Optional[str] = Query(default=None, description="应用自定义名字"),
@@ -76,21 +78,21 @@ def install_app_process(app_id: Optional[str] = Query(default=None, description=
     return JSONResponse(content=ret)
 
 
-@router.api_route("/start", methods=["GET", "POST"], summary="启动APP", response_description=rd, response_model=Response)
+@router.api_route("/start", methods=["GET", "POST"], summary="启动APP", response_description=rd_two, response_model=Response)
 def start_app(app_id: Optional[str] = Query(default=None, description="应用ID")):
     myLogger.info_logger("Receive request: /api/v1/apps/start")
     ret = manage.start_app(app_id)
     return JSONResponse(content=ret)
 
 
-@router.api_route("/stop", methods=["GET", "POST"], summary="停止APP", response_description=rd, response_model=Response)
+@router.api_route("/stop", methods=["GET", "POST"], summary="停止APP", response_description=rd_two, response_model=Response)
 def stop_app(app_id: Optional[str] = Query(default=None, description="应用ID")):
     myLogger.info_logger("Receive request: /api/v1/apps/stop")
     ret = manage.stop_app(app_id)
     return JSONResponse(content=ret)
 
 
-@router.api_route("/restart", methods=["GET", "POST"], summary="重启APP", response_description=rd,
+@router.api_route("/restart", methods=["GET", "POST"], summary="重启APP", response_description=rd_two,
                   response_model=Response)
 def restart_app(app_id: Optional[str] = Query(default=None, description="应用ID")):
     myLogger.info_logger("Receive request: /api/v1/apps/restart")
@@ -98,7 +100,7 @@ def restart_app(app_id: Optional[str] = Query(default=None, description="应用I
     return JSONResponse(content=ret)
 
 
-@router.api_route("/uninstall", methods=["GET", "POST"], summary="卸载APP", response_description=rd,
+@router.api_route("/uninstall", methods=["GET", "POST"], summary="卸载APP", response_description=rd_two,
                   response_model=Response)
 def uninstall_app(app_id: Optional[str] = Query(default=None, description="应用ID")):
     myLogger.info_logger("Receive request: /api/v1/apps/uninstall")