blob: 041b2fd6a803d21855a100671e9b254cc18b4acd [file] [log] [blame]
okozachenkoaf073202021-04-06 16:56:51 +03001from flask import Flask
Susanta Gautam5442ea72021-05-05 13:25:18 +05452from flask import Response
okozachenkoaf073202021-04-06 16:56:51 +03003from flask import request
Susanta Gautam5442ea72021-05-05 13:25:18 +05454from staffeln import objects
5from staffeln.common import context
Susanta Gautamb6f3bea2021-05-07 20:55:39 +05456from staffeln.common import openstack
Susanta Gautam5442ea72021-05-05 13:25:18 +05457from oslo_log import log
okozachenkoaf073202021-04-06 16:56:51 +03008
9
Susanta Gautam5442ea72021-05-05 13:25:18 +054510ctx = context.make_context()
okozachenkoaf073202021-04-06 16:56:51 +030011app = Flask(__name__)
12
Susanta Gautam5442ea72021-05-05 13:25:18 +054513LOG = log.getLogger(__name__)
okozachenkoaf073202021-04-06 16:56:51 +030014
okozachenkoaf073202021-04-06 16:56:51 +030015
Susanta Gautamb6f3bea2021-05-07 20:55:39 +054516@app.route("/v1/backup", methods=["POST"])
Susanta Gautam5442ea72021-05-05 13:25:18 +054517def backup_id():
Susanta Gautamb6f3bea2021-05-07 20:55:39 +054518
Susanta Gautam3621ebe2021-05-10 17:51:27 +054519 retention_user_id = openstack.get_user_id()
Susanta Gautam556daa92021-05-07 21:48:19 +054520
21 if not "user_id" in request.args or not "backup_id" in request.args:
Susanta Gautamb6f3bea2021-05-07 20:55:39 +054522 # Return error if the backup_id argument is not provided.
23 return Response(
24 "Error: backup_id or user_id is missing.", status=403, mimetype="text/plain"
25 )
26
Susanta Gautam3621ebe2021-05-10 17:51:27 +054527 if retention_user_id == request.args["user_id"]:
Susanta Gautamdef7a452021-05-10 17:34:52 +054528 return Response("True", status=200, mimetype="text/plain")
Susanta Gautamb6f3bea2021-05-07 20:55:39 +054529
Susanta Gautam5442ea72021-05-05 13:25:18 +054530 # Retrive the backup object from backup_data table with matching backup_id.
Susanta Gautam556daa92021-05-07 21:48:19 +054531 backup = objects.Volume.get_backup_by_backup_id(ctx, request.args["backup_id"])
Susanta Gautam5442ea72021-05-05 13:25:18 +054532 # backup_info is None when there is no entry of the backup id in backup_table.
Susanta Gautam38e8d032021-05-05 14:04:54 +054533 # So the backup should not be the automated backup.
34 if backup is None:
Susanta Gautam5442ea72021-05-05 13:25:18 +054535 return Response(
36 "True",
37 status=200,
38 mimetype="text/plain",
39 )
Susanta Gautam5442ea72021-05-05 13:25:18 +054540 else:
Susanta Gautamb6f3bea2021-05-07 20:55:39 +054541 return Response("False", status=401, mimetype="text/plain")
Susanta Gautam5442ea72021-05-05 13:25:18 +054542
okozachenkob8f9e2e2021-04-07 20:02:42 +030043
44def run(host, port, ssl_context):
45 app.run(host=host, port=port, ssl_context=ssl_context)