From 93ccb6f7c2f79490a498409c5ff45eba29a8623c Mon Sep 17 00:00:00 2001 From: vanzhiganov Date: Mon, 16 May 2016 09:24:27 +0300 Subject: [PATCH] 39 QEMU virtual machines --- SWSCloudCore/application.py | 2 + SWSCloudCore/controllers/plans/__init__.py | 15 + SWSCloudCore/controllers/tasks/manage.py | 5 +- SWSCloudCore/controllers/vms/__init__.py | 29 ++ SWSCloudCore/models.py | 38 +++ .../templates/administrator/_layout.auth.html | 1 + .../templates/administrator/ips/create.html | 16 +- .../templates/administrator/ips/edit.html | 4 +- .../templates/administrator/ips/index.html | 11 +- .../templates/administrator/plans/create.html | 43 +++ .../templates/administrator/plans/index.html | 42 +++ .../templates/administrator/servers/edit.html | 4 +- SWSCloudCore/templates/default/_header.html | 1 + .../templates/default/containers/index.html | 2 +- .../templates/default/vms/create.html | 51 +++ SWSCloudCore/templates/default/vms/index.html | 67 +++- SWSCloudCore/views/administrator/__init__.py | 36 +- SWSCloudCore/views/vms/__init__.py | 315 ++++++++++++++++++ cloud-db-init.py | 2 + cloud-runserver.py | 2 +- setup.py | 2 +- 21 files changed, 661 insertions(+), 27 deletions(-) create mode 100644 SWSCloudCore/controllers/plans/__init__.py create mode 100644 SWSCloudCore/controllers/vms/__init__.py create mode 100644 SWSCloudCore/templates/administrator/plans/create.html create mode 100644 SWSCloudCore/templates/administrator/plans/index.html create mode 100644 SWSCloudCore/views/vms/__init__.py diff --git a/SWSCloudCore/application.py b/SWSCloudCore/application.py index 14b4a23..1185a55 100644 --- a/SWSCloudCore/application.py +++ b/SWSCloudCore/application.py @@ -9,6 +9,7 @@ from SWSCloudCore.views.account import viewAccount from SWSCloudCore.views.administrator import viewAdministrator from SWSCloudCore.views.api import viewAPI from SWSCloudCore.views.containers import viewContainers +from SWSCloudCore.views.vms import viewVMs from SWSCloudCore.views.documents import viewDocuments from SWSCloudCore.views.kb import viewKB from SWSCloudCore.views.server_api import viewServerAPI @@ -38,6 +39,7 @@ app.register_blueprint(viewAPI) app.register_blueprint(viewTasks) # /containers app.register_blueprint(viewContainers) +app.register_blueprint(viewVMs) # /id app.register_blueprint(viewAccount) # /payments diff --git a/SWSCloudCore/controllers/plans/__init__.py b/SWSCloudCore/controllers/plans/__init__.py new file mode 100644 index 0000000..e22493c --- /dev/null +++ b/SWSCloudCore/controllers/plans/__init__.py @@ -0,0 +1,15 @@ +# coding: utf-8 + +from SWSCloudCore.models import PlansVMs + + +class ControllerPlans(object): + def get(self, status=None): + """ + Тарифные планы + :param status: + :return: + """ + if status: + return PlansVMs.select().where(PlansVMs.status == status) + return PlansVMs.select() diff --git a/SWSCloudCore/controllers/tasks/manage.py b/SWSCloudCore/controllers/tasks/manage.py index b3a5343..3bcda89 100644 --- a/SWSCloudCore/controllers/tasks/manage.py +++ b/SWSCloudCore/controllers/tasks/manage.py @@ -10,9 +10,8 @@ class ControllerManageTasks: def __init__(self): pass - def items_get(self, limit=100): - models.Tasks.select().limit(limit) - return None + def get(self, limit=100): + return models.Tasks.select().limit(limit) def get_by_server(self, server_id): task = models.Tasks.select(models.Tasks.plain).\ diff --git a/SWSCloudCore/controllers/vms/__init__.py b/SWSCloudCore/controllers/vms/__init__.py new file mode 100644 index 0000000..30f6dfa --- /dev/null +++ b/SWSCloudCore/controllers/vms/__init__.py @@ -0,0 +1,29 @@ +from SWSCloudCore.models import Vms + + +class ControllerVMS(object): + def __init__(self, user_id): + self.user_id = user_id + pass + + def get(self): + return Vms.select().where(Vms.user == self.user_id) + + def create(self, datacenter_id, server_id, vm_id, + hostname, ipv4, ipv6, plan, platform, + os_name, os_suite, status): + Vms.create( + id=vm_id, + datacenter=datacenter_id, + server=server_id, + user=self.user_id, + hostname=hostname, + ipv4=ipv4, + ipv6=ipv6, + plan=plan, + platform=platform, + os_name=os_name, + os_suite=os_suite, + status=status + ) + return True diff --git a/SWSCloudCore/models.py b/SWSCloudCore/models.py index 5a0a642..00e3eb8 100644 --- a/SWSCloudCore/models.py +++ b/SWSCloudCore/models.py @@ -64,6 +64,27 @@ class Ips(PgSQLModel): status = IntegerField() +class Plans(PgSQLModel): + id = UUIDField(primary_key=True, unique=True) + name = CharField(unique=True, null=False) + status = CharField(null=False, default='active') + storage = IntegerField(null=False) + swap = IntegerField(null=False) + memory = IntegerField(null=False) + cores = IntegerField(null=False) + + +class PlansVMs(PgSQLModel): + id = UUIDField(primary_key=True, unique=True) + name = CharField(unique=True, null=False) + status = CharField(null=False, default='active') + price = FloatField(null=False) + storage = IntegerField(null=False) + swap = IntegerField(null=False) + memory = IntegerField(null=False) + cores = IntegerField(null=False) + + class Users(PgSQLModel): id = UUIDField(primary_key=True, unique=True) email = CharField(unique=True, null=False) @@ -164,6 +185,23 @@ class ContainersStatisticsState(PgSQLModel): net_total = BigIntegerField(default=0, null=False) +class Vms(PgSQLModel): + id = UUIDField(primary_key=True, unique=True) + datacenter = ForeignKeyField(DataCenters) + server = ForeignKeyField(Servers) + user = ForeignKeyField(Users) + plan = ForeignKeyField(PlansVMs) + # 386, x86_64 + hostname = CharField() + platform = CharField() + os_name = CharField() + os_suite = CharField() + ipv4 = CharField() + ipv6 = CharField() + # 0: inactive, 1: active, 2: ..., 3: ..., 4: ..., 5: ... + status = IntegerField() + + class Tasks(PgSQLModel): id = UUIDField(primary_key=True, unique=True) datacenter = ForeignKeyField(DataCenters) diff --git a/SWSCloudCore/templates/administrator/_layout.auth.html b/SWSCloudCore/templates/administrator/_layout.auth.html index 32ae34d..a729519 100644 --- a/SWSCloudCore/templates/administrator/_layout.auth.html +++ b/SWSCloudCore/templates/administrator/_layout.auth.html @@ -26,6 +26,7 @@
  • Services