From fefee23a5a21db39bc4270bc9fbb3a5c5b52d4a7 Mon Sep 17 00:00:00 2001 From: Ahmed Bilal Khalid Date: Wed, 4 Sep 2019 18:01:55 +0500 Subject: [PATCH 1/4] a --- config.py | 2 ++ main.py | 21 +++++++++++++-------- schemas.py | 2 ++ 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/config.py b/config.py index 833dc0d..a292eb5 100644 --- a/config.py +++ b/config.py @@ -1,4 +1,6 @@ from etcd3_wrapper import Etcd3Wrapper from decouple import config +WITHOUT_CEPH = config("WITHOUT_CEPH", False) + etcd_client = Etcd3Wrapper(host=config("ETCD_URL")) diff --git a/main.py b/main.py index 4cc2e9f..8d97b40 100755 --- a/main.py +++ b/main.py @@ -4,12 +4,14 @@ import json import subprocess +import os from flask import Flask, request from flask_restful import Resource, Api from uuid import uuid4 from os.path import join from config import etcd_client as client +from config import WITHOUT_CEPH from ucloud_common.vm import VmPool, VMStatus from ucloud_common.host import HostPool @@ -123,15 +125,18 @@ class VMAction(Resource): if action == "delete" and vm_entry.hostname == "": try: path_without_protocol = vm_entry.path[vm_entry.path.find(":")+1:] - rc = subprocess.call(f"rbd rm {path_without_protocol}".split(" ")) - except FileNotFoundError: - return {"message": "VM image does not exists"} - else: - if rc == 0: - client.client.delete(vm_entry.key) - return {"message": "VM successfully deleted"} + + if WITHOUT_CEPH: + command_to_delete = ["rm", os.path.join("/var/vm", vm_entry.uuid)] else: - return {"message": "Some error occurred while deleting VM"} + command_to_delete = ["rbd", "rm", path_without_protocol] + + subprocess.check_output(command_to_delete) + except Exception as e: + return {"message": "Some error occurred while deleting VM"} + else: + client.client.delete(vm_entry.key) + return {"message": "VM successfully deleted"} r = RequestEntry.from_scratch(type=f"{action.title()}VM", uuid=data['uuid'], diff --git a/schemas.py b/schemas.py index 2e46b11..90acd50 100755 --- a/schemas.py +++ b/schemas.py @@ -99,8 +99,10 @@ class CreateImageSchema(BaseSchema): self.uuid: Field = Field("uuid", str, data.get("uuid", KeyError)) self.name = Field("name", str, data.get("name", KeyError)) self.image_store = Field("image_store", str, data.get("image_store", KeyError)) + # Validations self.uuid.validation = self.file_uuid_validation + self.image_store.validation = self.image_store_name_validation # All Fields fields = [self.uuid, self.name, self.image_store] From dbcfb31c1b6fd87bc6bc0f7213d7e537aa279426 Mon Sep 17 00:00:00 2001 From: Ahmed Bilal Khalid Date: Thu, 5 Sep 2019 13:42:12 +0500 Subject: [PATCH 2/4] a --- config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config.py b/config.py index a292eb5..3308020 100644 --- a/config.py +++ b/config.py @@ -1,6 +1,6 @@ from etcd3_wrapper import Etcd3Wrapper from decouple import config -WITHOUT_CEPH = config("WITHOUT_CEPH", False) +WITHOUT_CEPH = config("WITHOUT_CEPH", False, cast=bool) etcd_client = Etcd3Wrapper(host=config("ETCD_URL")) From 1e9c65ac803a96b1a39845f66b578901ea02bd0b Mon Sep 17 00:00:00 2001 From: Ahmed Bilal Khalid Date: Sat, 7 Sep 2019 15:36:01 +0500 Subject: [PATCH 3/4] a --- config.py | 11 +++++++++++ log.txt | 22 ++++++++++++++++++++++ main.py | 13 +++++++++---- 3 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 log.txt diff --git a/config.py b/config.py index 3308020..603501c 100644 --- a/config.py +++ b/config.py @@ -1,6 +1,17 @@ +import logging + from etcd3_wrapper import Etcd3Wrapper from decouple import config +logging.basicConfig( + level=logging.DEBUG, + filename="log.txt", + filemode="a", + format="%(asctime)s: %(levelname)s - %(message)s", + datefmt="%d-%b-%y %H:%M:%S", +) + + WITHOUT_CEPH = config("WITHOUT_CEPH", False, cast=bool) etcd_client = Etcd3Wrapper(host=config("ETCD_URL")) diff --git a/log.txt b/log.txt new file mode 100644 index 0000000..69a30f5 --- /dev/null +++ b/log.txt @@ -0,0 +1,22 @@ +05-Sep-19 19:13:22: WARNING - * Debugger is active! +05-Sep-19 19:13:22: INFO - * Debugger PIN: 189-665-873 +05-Sep-19 19:13:49: INFO - * Detected change in '/home/meow/Desktop/code/ucloud-api/main.py', reloading +05-Sep-19 19:13:50: WARNING - * Debugger is active! +05-Sep-19 19:13:50: INFO - * Debugger PIN: 189-665-873 +05-Sep-19 19:13:57: INFO - * Detected change in '/home/meow/Desktop/code/ucloud-api/main.py', reloading +05-Sep-19 19:13:58: WARNING - * Debugger is active! +05-Sep-19 19:13:58: INFO - * Debugger PIN: 189-665-873 +05-Sep-19 19:15:12: INFO - * Detected change in '/home/meow/Desktop/code/ucloud-api/main.py', reloading +05-Sep-19 19:19:39: INFO - * Running on http://[::]:5000/ (Press CTRL+C to quit) +05-Sep-19 19:19:39: INFO - * Restarting with stat +05-Sep-19 19:19:40: WARNING - * Debugger is active! +05-Sep-19 19:19:40: INFO - * Debugger PIN: 189-665-873 +05-Sep-19 19:19:43: DEBUG - Starting new HTTPS connection (1): otp.ungleich.ch:443 +05-Sep-19 19:19:48: DEBUG - https://otp.ungleich.ch:443 "POST /ungleichotp/verify/ HTTP/1.1" 200 15 +05-Sep-19 19:19:48: INFO - ::1 - - [05/Sep/2019 19:19:48] "POST /vm/action HTTP/1.1" 200 - +05-Sep-19 19:19:53: DEBUG - Starting new HTTPS connection (1): otp.ungleich.ch:443 +05-Sep-19 19:19:58: DEBUG - https://otp.ungleich.ch:443 "POST /ungleichotp/verify/ HTTP/1.1" 200 15 +05-Sep-19 19:19:58: INFO - ::1 - - [05/Sep/2019 19:19:58] "GET /user/vms HTTP/1.1" 200 - +05-Sep-19 19:20:26: DEBUG - Starting new HTTPS connection (1): otp.ungleich.ch:443 +05-Sep-19 19:20:32: DEBUG - https://otp.ungleich.ch:443 "POST /ungleichotp/verify/ HTTP/1.1" 200 15 +05-Sep-19 19:20:32: INFO - ::1 - - [05/Sep/2019 19:20:32] "POST /vm/action HTTP/1.1" 200 - diff --git a/main.py b/main.py index 8d97b40..7c2a61d 100755 --- a/main.py +++ b/main.py @@ -11,7 +11,7 @@ from flask_restful import Resource, Api from uuid import uuid4 from os.path import join from config import etcd_client as client -from config import WITHOUT_CEPH +from config import WITHOUT_CEPH, logging from ucloud_common.vm import VmPool, VMStatus from ucloud_common.host import HostPool @@ -131,9 +131,14 @@ class VMAction(Resource): else: command_to_delete = ["rbd", "rm", path_without_protocol] - subprocess.check_output(command_to_delete) - except Exception as e: - return {"message": "Some error occurred while deleting VM"} + subprocess.check_output(command_to_delete, stderr=subprocess.PIPE) + except subprocess.CalledProcessError as e: + if "No such file" in e.stderr.decode("utf-8"): + client.client.delete(vm_entry.key) + return {"message": "VM successfully deleted"} + else: + logging.exception(e) + return {"message": "Some error occurred while deleting VM"} else: client.client.delete(vm_entry.key) return {"message": "VM successfully deleted"} From ea72b69d484dced9332e79540d020a5b1c1ca61b Mon Sep 17 00:00:00 2001 From: Ahmed Bilal Khalid Date: Sat, 7 Sep 2019 15:37:04 +0500 Subject: [PATCH 4/4] a --- .gitignore | 1 + log.txt | 22 ---------------------- 2 files changed, 1 insertion(+), 22 deletions(-) delete mode 100644 log.txt diff --git a/.gitignore b/.gitignore index 209604a..a94f03d 100755 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ venv/ settings.json ucloud_common etcd3_wrapper +log.txt diff --git a/log.txt b/log.txt deleted file mode 100644 index 69a30f5..0000000 --- a/log.txt +++ /dev/null @@ -1,22 +0,0 @@ -05-Sep-19 19:13:22: WARNING - * Debugger is active! -05-Sep-19 19:13:22: INFO - * Debugger PIN: 189-665-873 -05-Sep-19 19:13:49: INFO - * Detected change in '/home/meow/Desktop/code/ucloud-api/main.py', reloading -05-Sep-19 19:13:50: WARNING - * Debugger is active! -05-Sep-19 19:13:50: INFO - * Debugger PIN: 189-665-873 -05-Sep-19 19:13:57: INFO - * Detected change in '/home/meow/Desktop/code/ucloud-api/main.py', reloading -05-Sep-19 19:13:58: WARNING - * Debugger is active! -05-Sep-19 19:13:58: INFO - * Debugger PIN: 189-665-873 -05-Sep-19 19:15:12: INFO - * Detected change in '/home/meow/Desktop/code/ucloud-api/main.py', reloading -05-Sep-19 19:19:39: INFO - * Running on http://[::]:5000/ (Press CTRL+C to quit) -05-Sep-19 19:19:39: INFO - * Restarting with stat -05-Sep-19 19:19:40: WARNING - * Debugger is active! -05-Sep-19 19:19:40: INFO - * Debugger PIN: 189-665-873 -05-Sep-19 19:19:43: DEBUG - Starting new HTTPS connection (1): otp.ungleich.ch:443 -05-Sep-19 19:19:48: DEBUG - https://otp.ungleich.ch:443 "POST /ungleichotp/verify/ HTTP/1.1" 200 15 -05-Sep-19 19:19:48: INFO - ::1 - - [05/Sep/2019 19:19:48] "POST /vm/action HTTP/1.1" 200 - -05-Sep-19 19:19:53: DEBUG - Starting new HTTPS connection (1): otp.ungleich.ch:443 -05-Sep-19 19:19:58: DEBUG - https://otp.ungleich.ch:443 "POST /ungleichotp/verify/ HTTP/1.1" 200 15 -05-Sep-19 19:19:58: INFO - ::1 - - [05/Sep/2019 19:19:58] "GET /user/vms HTTP/1.1" 200 - -05-Sep-19 19:20:26: DEBUG - Starting new HTTPS connection (1): otp.ungleich.ch:443 -05-Sep-19 19:20:32: DEBUG - https://otp.ungleich.ch:443 "POST /ungleichotp/verify/ HTTP/1.1" 200 15 -05-Sep-19 19:20:32: INFO - ::1 - - [05/Sep/2019 19:20:32] "POST /vm/action HTTP/1.1" 200 -