diff --git a/.gitignore b/.gitignore index d3ead969..36f06792 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,6 @@ __pycache__ .vscode uploads node_modules -schemas.json .mypy_cache *.db +opengeodeweb_back_schemas.json diff --git a/package-lock.json b/package-lock.json index 73f66d63..f348826a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,15 +1,27 @@ { "name": "@geode/opengeodeweb-back", - "version": "0.0.0-semantically-released", + "version": "0.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@geode/opengeodeweb-back", - "version": "0.0.0-semantically-released", + "version": "0.0.0", + "license": "MIT", + "dependencies": { + "@geode/opengeodeweb-microservice": "latest" + } + }, + "node_modules/@geode/opengeodeweb-microservice": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@geode/opengeodeweb-microservice/-/opengeodeweb-microservice-1.0.0.tgz", + "integrity": "sha512-+btAWjHecfqGAZlM/UElwlAREPtLLGsJQr1+ELqS4yZU9A4RkFliCNFkV1jmZNyBEj0QsHZzirD63/rgMj8MOw==", "license": "MIT", "dependencies": { "glob": "^11.0.3" + }, + "bin": { + "ogw-generate-schemas": "generate_schemas.js" } }, "node_modules/@isaacs/balanced-match": { diff --git a/requirements.txt b/requirements.txt index 27e6fb92..11ae818c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -69,4 +69,3 @@ werkzeug==3.1.2 # flask # flask-cors -opengeodeweb-microservice~=1.0 diff --git a/src/opengeodeweb_back/routes/blueprint_routes.py b/src/opengeodeweb_back/routes/blueprint_routes.py index 7f965009..cfd5684a 100644 --- a/src/opengeodeweb_back/routes/blueprint_routes.py +++ b/src/opengeodeweb_back/routes/blueprint_routes.py @@ -381,3 +381,17 @@ def ping(): utils_functions.validate_request(flask.request, ping_json) flask.current_app.config.update(LAST_PING_TIME=time.time()) return flask.make_response({"message": "Flask server is running"}, 200) + + +with open( + os.path.join(schemas, "kill.json"), + "r", +) as file: + kill_json = json.load(file) + + +@routes.route(kill_json["route"], methods=kill_json["methods"]) +def kill() -> flask.Response: + print("Manual server kill, shutting down...", flush=True) + os._exit(0) + return flask.make_response({"message": "Flask server is dead"}, 200) diff --git a/src/opengeodeweb_back/routes/schemas/kill.json b/src/opengeodeweb_back/routes/schemas/kill.json new file mode 100644 index 00000000..dde867bd --- /dev/null +++ b/src/opengeodeweb_back/routes/schemas/kill.json @@ -0,0 +1,10 @@ +{ + "route": "/kill", + "methods": [ + "POST" + ], + "type": "object", + "properties": {}, + "required": [], + "additionalProperties": false +} \ No newline at end of file