Underground-Digital/Workflow-Engine
0
1from flask_restful import Resource, reqparse2 3from controllers.console import api4from controllers.console.app.error import TracingConfigCheckError, TracingConfigIsExist, TracingConfigNotExist5from controllers.console.wraps import account_initialization_required, setup_required6from libs.login import login_required7from services.ops_service import OpsService8 9 10class TraceAppConfigApi(Resource):11 """12 Manage trace app configurations13 """14 15 @setup_required16 @login_required17 @account_initialization_required18 def get(self, app_id):19 parser = reqparse.RequestParser()20 parser.add_argument("tracing_provider", type=str, required=True, location="args")21 args = parser.parse_args()22 23 try:24 trace_config = OpsService.get_tracing_app_config(app_id=app_id, tracing_provider=args["tracing_provider"])25 if not trace_config:26 return {"has_not_configured": True}27 return trace_config28 except Exception as e:29 raise e30 31 @setup_required32 @login_required33 @account_initialization_required34 def post(self, app_id):35 """Create a new trace app configuration"""36 parser = reqparse.RequestParser()37 parser.add_argument("tracing_provider", type=str, required=True, location="json")38 parser.add_argument("tracing_config", type=dict, required=True, location="json")39 args = parser.parse_args()40 41 try:42 result = OpsService.create_tracing_app_config(43 app_id=app_id, tracing_provider=args["tracing_provider"], tracing_config=args["tracing_config"]44 )45 if not result:46 raise TracingConfigIsExist()47 if result.get("error"):48 raise TracingConfigCheckError()49 return result50 except Exception as e:51 raise e52 53 @setup_required54 @login_required55 @account_initialization_required56 def patch(self, app_id):57 """Update an existing trace app configuration"""58 parser = reqparse.RequestParser()59 parser.add_argument("tracing_provider", type=str, required=True, location="json")60 parser.add_argument("tracing_config", type=dict, required=True, location="json")61 args = parser.parse_args()62 63 try:64 result = OpsService.update_tracing_app_config(65 app_id=app_id, tracing_provider=args["tracing_provider"], tracing_config=args["tracing_config"]66 )67 if not result:68 raise TracingConfigNotExist()69 return {"result": "success"}70 except Exception as e:71 raise e72 73 @setup_required74 @login_required75 @account_initialization_required76 def delete(self, app_id):77 """Delete an existing trace app configuration"""78 parser = reqparse.RequestParser()79 parser.add_argument("tracing_provider", type=str, required=True, location="args")80 args = parser.parse_args()81 82 try:83 result = OpsService.delete_tracing_app_config(app_id=app_id, tracing_provider=args["tracing_provider"])84 if not result:85 raise TracingConfigNotExist()86 return {"result": "success"}87 except Exception as e:88 raise e89 90 91api.add_resource(TraceAppConfigApi, "/apps/<uuid:app_id>/trace-config")92 