diff --git a/SWSCloudCore/controllers/tasks/server.py b/SWSCloudCore/controllers/tasks/server.py index 1f512f4..433b2be 100644 --- a/SWSCloudCore/controllers/tasks/server.py +++ b/SWSCloudCore/controllers/tasks/server.py @@ -3,6 +3,7 @@ import json from SWSCloudCore import models from SWSCloudCore.controllers.containers.server import ControllerContainersServer +from SWSCloudCore.controllers.vms.server import Controller_VMS_Server class ControllerTasksServer: @@ -37,7 +38,8 @@ class ControllerTasksServer: if models.Tasks.select().where(models.Tasks.id == task_id).count() == 0: return False - controllercontainer = ControllerContainersServer() + controller_vm = Controller_VMS_Server() + controller_container = ControllerContainersServer() task = self.get_item(task_id) # container statuses: @@ -48,55 +50,113 @@ class ControllerTasksServer: # 4 - creating # 5 - deleting + lxc_tasks_list = ['container_start', 'container_stop', 'container_create', + 'container_restart', 'container_delete'] + qemu_tasks_list = ['vm_create', 'vm_start', 'vm_stop', 'vm_restart', 'vm_delete'] + if status == 1: - if task['task'] == 'container_start': - controllercontainer.status_set(task['plain']['container_id'], 2) - if task['task'] == 'container_stop': - controllercontainer.status_set(task['plain']['container_id'], 3) + if task['task'] in lxc_tasks_list: + if task['task'] == 'container_start': + controller_container.status_set(task['plain']['container_id'], 2) + if task['task'] == 'container_stop': + controller_container.status_set(task['plain']['container_id'], 3) + + if task['task'] in qemu_tasks_list: + if task['task'] == 'vm_start': + controller_vm.status_set(task['plain']['vm_id'], 2) + if task['task'] == 'vm_stop': + controller_vm.status_set(task['plain']['vm_id'], 3) if status == 2: - if task['task'] == 'container_create': - controllercontainer.status_set(task['plain']['container_id'], 1) - if task['task'] == 'container_start': - controllercontainer.status_set(task['plain']['container_id'], 1) - if task['task'] == 'container_stop': - controllercontainer.status_set(task['plain']['container_id'], 0) - if task['task'] == 'container_restart': - controllercontainer.status_set(task['plain']['container_id'], 1) - if task['task'] == 'container_delete': - # не имеет смысла менять статус, т.к. контейнер придётся удалять - # controllercontainer.status_set(task['plain']['container_id'], 2) + if task['task'] in qemu_tasks_list: + if task['task'] == 'vm_create': + controller_vm.status_set(task['plain']['vm_id'], 1) + if task['task'] == 'vm_start': + controller_vm.status_set(task['plain']['vm_id'], 1) + if task['task'] == 'vm_stop': + controller_vm.status_set(task['plain']['vm_id'], 0) + if task['task'] == 'vm_restart': + controller_vm.status_set(task['plain']['vm_id'], 1) + if task['task'] == 'vm_delete': + # не имеет смысла менять статус, т.к. контейнер придётся удалять + # controllercontainer.status_set(task['plain']['container_id'], 2) - ns = models.Ips.update(status=0).where( - models.Ips.ipv4 << models.Containers.select(models.Containers.ipv4).where( - models.Containers.id == task['plain']['container_id'], - models.Containers.ipv4 != '' + ns = models.Ips.update(status=0).where( + models.Ips.ipv4 << models.Vms.select(models.Vms.ipv4).where( + models.Vms.id == task['plain']['vm_id'], + models.Vms.ipv4 != '' + ) ) - ) - ns.execute() + ns.execute() - ns = models.Ips.update(status=0).where( - models.Ips.ipv6 << models.Containers.select(models.Containers.ipv6).where( - models.Containers.id == task['plain']['container_id'], - models.Containers.ipv6 != '' + ns = models.Ips.update(status=0).where( + models.Ips.ipv6 << models.Vms.select(models.Vms.ipv6).where( + models.Vms.id == task['plain']['vm_id'], + models.Vms.ipv6 != '' + ) ) - ) - ns.execute() + ns.execute() - # delete all container statistics - delstats = models.ContainersStatistics.delete().where( - models.ContainersStatistics.container == task['plain']['container_id'] - ) - delstats.execute() - # delete stats state - delstatsstate = models.ContainersStatisticsState.delete().where( - models.ContainersStatisticsState.container == task['plain']['container_id'] - ) - delstatsstate.execute() + # delete all container statistics + # del_stats = models.ContainersStatistics.delete().where( + # models.ContainersStatistics.container == task['plain']['container_id'] + # ) + # del_stats.execute() + # delete stats state + # del_stats_state = models.ContainersStatisticsState.delete().where( + # models.ContainersStatisticsState.container == task['plain']['container_id'] + # ) + # del_stats_state.execute() - delcontainer = models.Containers.delete().where(models.Containers.id == task['plain']['container_id']) - delcontainer.execute() + # + del_vm = models.Vms.delete().where(models.Vms.id == task['plain']['vm_id']) + del_vm.execute() + + if task['task'] in lxc_tasks_list: + if task['task'] == 'container_create': + controller_container.status_set(task['plain']['container_id'], 1) + if task['task'] == 'container_start': + controller_container.status_set(task['plain']['container_id'], 1) + if task['task'] == 'container_stop': + controller_container.status_set(task['plain']['container_id'], 0) + if task['task'] == 'container_restart': + controller_container.status_set(task['plain']['container_id'], 1) + if task['task'] == 'container_delete': + # не имеет смысла менять статус, т.к. контейнер придётся удалять + # controllercontainer.status_set(task['plain']['container_id'], 2) + + ns = models.Ips.update(status=0).where( + models.Ips.ipv4 << models.Containers.select(models.Containers.ipv4).where( + models.Containers.id == task['plain']['container_id'], + models.Containers.ipv4 != '' + ) + ) + ns.execute() + + ns = models.Ips.update(status=0).where( + models.Ips.ipv6 << models.Containers.select(models.Containers.ipv6).where( + models.Containers.id == task['plain']['container_id'], + models.Containers.ipv6 != '' + ) + ) + ns.execute() + + # delete all container statistics + del_stats = models.ContainersStatistics.delete().where( + models.ContainersStatistics.container == task['plain']['container_id'] + ) + del_stats.execute() + + # delete stats state + del_stats_state = models.ContainersStatisticsState.delete().where( + models.ContainersStatisticsState.container == task['plain']['container_id'] + ) + del_stats_state.execute() + + # + del_container = models.Containers.delete().where(models.Containers.id == task['plain']['container_id']) + del_container.execute() task = models.Tasks.update(status=status).where(models.Tasks.id == task_id) task.execute() diff --git a/SWSCloudCore/controllers/vms/__init__.py b/SWSCloudCore/controllers/vms/__init__.py index 735e7c4..dd2bc42 100644 --- a/SWSCloudCore/controllers/vms/__init__.py +++ b/SWSCloudCore/controllers/vms/__init__.py @@ -36,6 +36,23 @@ class ControllerVMS(object): return True def set_status(self, vm_id, status): + """ + DEPRECATED + :param vm_id: + :param status: + :return: + """ x = Vms.update(status=status).where(Vms.id == vm_id) x.execute() - return True \ No newline at end of file + return True + + def status_set(self, vm_id, status): + """ + + :param vm_id: + :param status: + :return: + """ + x = Vms.update(status=status).where(Vms.id == vm_id) + x.execute() + return True diff --git a/SWSCloudCore/controllers/vms/manage.py b/SWSCloudCore/controllers/vms/manage.py new file mode 100644 index 0000000..8561e6c --- /dev/null +++ b/SWSCloudCore/controllers/vms/manage.py @@ -0,0 +1,29 @@ +# coding: utf-8 + +from SWSCloudCore.models import Vms + + +class ControllerVMSManage(object): + def __init__(self): + pass + + def get(self, vm_id=None): + if vm_id: + return Vms.select().where(Vms.id == vm_id).get() + return Vms.select() + + def exists(self, vm_id): + if Vms.select().where(Vms.id == vm_id).count() == 0: + return False + return True + + def status_set(self, vm_id, status): + """ + + :param vm_id: + :param status: + :return: + """ + x = Vms.update(status=status).where(Vms.id == vm_id) + x.execute() + return True diff --git a/SWSCloudCore/controllers/vms/server.py b/SWSCloudCore/controllers/vms/server.py new file mode 100644 index 0000000..4a507f3 --- /dev/null +++ b/SWSCloudCore/controllers/vms/server.py @@ -0,0 +1,27 @@ +from SWSCloudCore.models import Vms + + +class Controller_VMS_Server(object): + def __init__(self): + pass + + def get(self, vm_id=None): + if vm_id: + return Vms.select().where(Vms.id == vm_id).get() + return Vms.select() + + def exists(self, vm_id): + if Vms.select().where(Vms.id == vm_id).count() == 0: + return False + return True + + def status_set(self, vm_id, status): + """ + + :param vm_id: + :param status: + :return: + """ + x = Vms.update(status=status).where(Vms.id == vm_id) + x.execute() + return True diff --git a/SWSCloudCore/templates/administrator/_layout.auth.html b/SWSCloudCore/templates/administrator/_layout.auth.html index a729519..b7a1667 100644 --- a/SWSCloudCore/templates/administrator/_layout.auth.html +++ b/SWSCloudCore/templates/administrator/_layout.auth.html @@ -31,7 +31,7 @@
Id | +Datacenter | +Server | +User | +IPv4 | +IPv6 | +Status | ++ |
---|---|---|---|---|---|---|---|
Нет ни одного виртуального сервера | +|||||||
{{ vm.id }} | +{{ vm.datacenter.name }} | +{{ vm.server.hostname }} | +{{ vm.user.email }} | +{{ vm.ipv4 }} | +{{ vm.ipv6 }} | +{{ vm.status }} | +Edit | +