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 | 5442ea7 | 2021-05-05 13:25:18 +0545 | [diff] [blame] | 20 |
|
| 21 | backup_id = request.args["backup_id"]
|
Susanta Gautam | b6f3bea | 2021-05-07 20:55:39 +0545 | [diff] [blame^] | 22 | user_id = request.args["user_id"]
|
| 23 |
|
| 24 | if backup_id is None or user_id is None:
|
| 25 | # Return error if the backup_id argument is not provided.
|
| 26 | return Response(
|
| 27 | "Error: backup_id or user_id is missing.", status=403, mimetype="text/plain"
|
| 28 | )
|
| 29 |
|
| 30 | if current_user_id != user_id:
|
| 31 | return Response("False", status=401, mimetype="text/plain")
|
| 32 |
|
Susanta Gautam | 5442ea7 | 2021-05-05 13:25:18 +0545 | [diff] [blame] | 33 | # Retrive the backup object from backup_data table with matching backup_id.
|
Susanta Gautam | 38e8d03 | 2021-05-05 14:04:54 +0545 | [diff] [blame] | 34 | backup = objects.Volume.get_backup_by_backup_id(ctx, backup_id)
|
Susanta Gautam | 5442ea7 | 2021-05-05 13:25:18 +0545 | [diff] [blame] | 35 | # 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] | 36 | # So the backup should not be the automated backup.
|
| 37 | if backup is None:
|
Susanta Gautam | 5442ea7 | 2021-05-05 13:25:18 +0545 | [diff] [blame] | 38 | return Response(
|
| 39 | "True",
|
| 40 | status=200,
|
| 41 | mimetype="text/plain",
|
| 42 | )
|
Susanta Gautam | 5442ea7 | 2021-05-05 13:25:18 +0545 | [diff] [blame] | 43 | else:
|
Susanta Gautam | b6f3bea | 2021-05-07 20:55:39 +0545 | [diff] [blame^] | 44 | return Response("False", status=401, mimetype="text/plain")
|
Susanta Gautam | 5442ea7 | 2021-05-05 13:25:18 +0545 | [diff] [blame] | 45 |
|
okozachenko | b8f9e2e | 2021-04-07 20:02:42 +0300 | [diff] [blame] | 46 |
|
| 47 | def run(host, port, ssl_context):
|
| 48 | app.run(host=host, port=port, ssl_context=ssl_context)
|