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