Skip to content

Commit

Permalink
feat(api): add endpoints to manage extras file
Browse files Browse the repository at this point in the history
  • Loading branch information
ssube committed May 6, 2023
1 parent 8c88fcd commit d39c792
Showing 1 changed file with 38 additions and 0 deletions.
38 changes: 38 additions & 0 deletions api/onnx_web/server/admin.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
from logging import getLogger

from flask import Flask, jsonify, make_response, request
from jsonschema import ValidationError, validate

from ..utils import load_config, load_config_str
from ..worker.pool import DevicePoolExecutor
from .context import ServerContext
from .utils import wrap_route
Expand All @@ -25,11 +27,47 @@ def restart_workers(server: ServerContext, pool: DevicePoolExecutor):


def worker_status(server: ServerContext, pool: DevicePoolExecutor):
if not check_admin(server):
return make_response(jsonify({})), 401

return jsonify(pool.status())


def get_extra_models(server: ServerContext):
if not check_admin(server):
return make_response(jsonify({})), 401

with open(server.extra_models[0]) as f:
resp = make_response(f.read())
resp.content_type = "application/json"
return resp


def update_extra_models(server: ServerContext):
if not check_admin(server):
return make_response(jsonify({})), 401

extra_schema = load_config("./schemas/extras.yaml")

try:
data = load_config_str(request.json)
try:
validate(data, extra_schema)
except ValidationError:
logger.exception("invalid data in extras file")
except Exception:
logger.exception("TODO")

# TODO: write to file
return jsonify(server.extra_models)


def register_admin_routes(app: Flask, server: ServerContext, pool: DevicePoolExecutor):
return [
app.route("/api/extras")(wrap_route(get_extra_models, server)),
app.route("/api/extras", methods=["PUT"])(
wrap_route(update_extra_models, server)
),
app.route("/api/restart", methods=["POST"])(
wrap_route(restart_workers, server, pool=pool)
),
Expand Down

0 comments on commit d39c792

Please sign in to comment.