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 ba9756e8..fd7b9c32 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,33 +2,24 @@ # This file is autogenerated by pip-compile with Python 3.12 # by the following command: # -# pip-compile --output-file=./requirements.txt --pre ./requirements-internal.in ./requirements.in +# pip-compile --output-file=./requirements.txt --pre ./requirements.in # asgiref~=3.0 # via flask blinker~=1.0 - # via - # flask - # opengeodeweb-microservice + # via flask click~=8.0 - # via - # flask - # opengeodeweb-microservice -fastjsonschema~=2.0 - # via opengeodeweb-microservice + # via flask flask[async]~=3.0 # via # -r requirements.in # flask # flask-cors # flask-sqlalchemy - # opengeodeweb-microservice flask-cors~=6.0 # via -r requirements.in flask-sqlalchemy~=3.0 - # via - # -r requirements.in - # opengeodeweb-microservice + # via -r requirements.in geode-common==33.11.0 # via # -r requirements.in @@ -36,21 +27,14 @@ geode-common==33.11.0 geode-viewables==3.3.0 # via -r requirements.in greenlet~=3.0 - # via - # opengeodeweb-microservice - # sqlalchemy + # via sqlalchemy itsdangerous~=2.0 - # via - # flask - # opengeodeweb-microservice + # via flask jinja2~=3.0 - # via - # flask - # opengeodeweb-microservice + # via flask markupsafe~=3.0 # via # jinja2 - # opengeodeweb-microservice # werkzeug opengeode-core==15.27.4 # via @@ -75,19 +59,12 @@ opengeode-io==7.4.0 # -r requirements.in # geode-viewables # opengeode-geosciencesio -opengeodeweb-microservice~=1.0 - # via -r requirements-internal.in sqlalchemy~=2.0 - # via - # flask-sqlalchemy - # opengeodeweb-microservice + # via flask-sqlalchemy typing-extensions~=4.0 - # via - # opengeodeweb-microservice - # sqlalchemy + # via sqlalchemy werkzeug==3.0.3 # via # -r requirements.in # flask # flask-cors - # opengeodeweb-microservice 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