okozachenko | af07320 | 2021-04-06 16:56:51 +0300 | [diff] [blame] | 1 | from flask import Flask
|
Susanta Gautam | 5442ea7 | 2021-05-05 13:25:18 +0545 | [diff] [blame] | 2 | from flask import Response
|
okozachenko | af07320 | 2021-04-06 16:56:51 +0300 | [diff] [blame] | 3 | from flask import request
|
Susanta Gautam | 5442ea7 | 2021-05-05 13:25:18 +0545 | [diff] [blame] | 4 | from staffeln import objects
|
| 5 | from staffeln.common import context
|
Susanta Gautam | b6f3bea | 2021-05-07 20:55:39 +0545 | [diff] [blame] | 6 | from staffeln.common import openstack
|
Susanta Gautam | 5442ea7 | 2021-05-05 13:25:18 +0545 | [diff] [blame] | 7 | from oslo_log import log
|
okozachenko | af07320 | 2021-04-06 16:56:51 +0300 | [diff] [blame] | 8 |
|
| 9 |
|
Susanta Gautam | 5442ea7 | 2021-05-05 13:25:18 +0545 | [diff] [blame] | 10 | ctx = context.make_context()
|
okozachenko | af07320 | 2021-04-06 16:56:51 +0300 | [diff] [blame] | 11 | app = Flask(__name__)
|
| 12 |
|
Susanta Gautam | 5442ea7 | 2021-05-05 13:25:18 +0545 | [diff] [blame] | 13 | LOG = log.getLogger(__name__)
|
okozachenko | af07320 | 2021-04-06 16:56:51 +0300 | [diff] [blame] | 14 |
|
okozachenko | af07320 | 2021-04-06 16:56:51 +0300 | [diff] [blame] | 15 |
|
Susanta Gautam | b6f3bea | 2021-05-07 20:55:39 +0545 | [diff] [blame] | 16 | @app.route("/v1/backup", methods=["POST"])
|
Susanta Gautam | 5442ea7 | 2021-05-05 13:25:18 +0545 | [diff] [blame] | 17 | def backup_id():
|
Susanta Gautam | b6f3bea | 2021-05-07 20:55:39 +0545 | [diff] [blame] | 18 |
|
| 19 | current_user_id = openstack.get_user_id()
|
Susanta Gautam | 556daa9 | 2021-05-07 21:48:19 +0545 | [diff] [blame^] | 20 |
|
| 21 | if not "user_id" in request.args or not "backup_id" in request.args:
|
Susanta Gautam | b6f3bea | 2021-05-07 20:55:39 +0545 | [diff] [blame] | 22 | # 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 Gautam | 556daa9 | 2021-05-07 21:48:19 +0545 | [diff] [blame^] | 27 | if current_user_id != request.args["user_id"]:
|
Susanta Gautam | b6f3bea | 2021-05-07 20:55:39 +0545 | [diff] [blame] | 28 | return Response("False", status=401, mimetype="text/plain")
|
| 29 |
|
Susanta Gautam | 5442ea7 | 2021-05-05 13:25:18 +0545 | [diff] [blame] | 30 | # Retrive the backup object from backup_data table with matching backup_id.
|
Susanta Gautam | 556daa9 | 2021-05-07 21:48:19 +0545 | [diff] [blame^] | 31 | backup = objects.Volume.get_backup_by_backup_id(ctx, request.args["backup_id"])
|
Susanta Gautam | 5442ea7 | 2021-05-05 13:25:18 +0545 | [diff] [blame] | 32 | # backup_info is None when there is no entry of the backup id in backup_table.
|
Susanta Gautam | 38e8d03 | 2021-05-05 14:04:54 +0545 | [diff] [blame] | 33 | # So the backup should not be the automated backup.
|
| 34 | if backup is None:
|
Susanta Gautam | 5442ea7 | 2021-05-05 13:25:18 +0545 | [diff] [blame] | 35 | return Response(
|
| 36 | "True",
|
| 37 | status=200,
|
| 38 | mimetype="text/plain",
|
| 39 | )
|
Susanta Gautam | 5442ea7 | 2021-05-05 13:25:18 +0545 | [diff] [blame] | 40 | else:
|
Susanta Gautam | b6f3bea | 2021-05-07 20:55:39 +0545 | [diff] [blame] | 41 | return Response("False", status=401, mimetype="text/plain")
|
Susanta Gautam | 5442ea7 | 2021-05-05 13:25:18 +0545 | [diff] [blame] | 42 |
|
okozachenko | b8f9e2e | 2021-04-07 20:02:42 +0300 | [diff] [blame] | 43 |
|
| 44 | def run(host, port, ssl_context):
|
| 45 | app.run(host=host, port=port, ssl_context=ssl_context)
|