diff --git a/SWSCloudCore/controllers/datacenters/__init__.py b/SWSCloudCore/controllers/datacenters/__init__.py index 5a2e21e..48cb992 100644 --- a/SWSCloudCore/controllers/datacenters/__init__.py +++ b/SWSCloudCore/controllers/datacenters/__init__.py @@ -39,3 +39,12 @@ class ControllerDataCenters: 'city': item.city, }) return items + + @staticmethod + def exists(datacenter_id, status=1): + if models.DataCenters.select().where( + models.DataCenters.id == datacenter_id, + models.DataCenters.status == status + ).count() == 0: + return False + return True diff --git a/SWSCloudCore/controllers/plans/__init__.py b/SWSCloudCore/controllers/plans/__init__.py index 570e355..bc269ee 100644 --- a/SWSCloudCore/controllers/plans/__init__.py +++ b/SWSCloudCore/controllers/plans/__init__.py @@ -14,6 +14,14 @@ class ControllerPlans(object): return PlansVMs.select().where(PlansVMs.status == status) return PlansVMs.select() + def get_plans(self, status=None): + x = PlansVMs.select().where(PlansVMs.status == status) if status else PlansVMs.select() + + results = list() + for i in x: + results.append(dict(id=str(i.id), name=i.name, price=i.price, cores=i.cores, storage=i.storage, swap=i.swap, memory=i.memory)) + return results + def plan_get(self, plan_id): return PlansVMs.select().where(PlansVMs.id == plan_id).get() diff --git a/SWSCloudCore/controllers/vms/__init__.py b/SWSCloudCore/controllers/vms/__init__.py index dd2bc42..35bca18 100644 --- a/SWSCloudCore/controllers/vms/__init__.py +++ b/SWSCloudCore/controllers/vms/__init__.py @@ -1,15 +1,30 @@ from SWSCloudCore.models import Vms +class Item: + def __init__(self, val): + self.val = val + + class ControllerVMS(object): def __init__(self, user_id): self.user_id = user_id pass + # TODO: DEPRECATED def get(self, vm_id=None): - if vm_id: - return Vms.select().where(Vms.user == self.user_id, Vms.id == vm_id).get() - return Vms.select().where(Vms.user == self.user_id) + results = list() + return Vms.select().where(Vms.user == self.user_id, Vms.id == vm_id).get() if vm_id else Vms.select().where(Vms.user == self.user_id) + + def get_items(self): + items = list() + for x in Vms.select().where(Vms.user == self.user_id): + items.append(dict(id=str(x.id), datacenter=str(x.datacenter.id), plan=x.plan.id, hostname=x.hostname, + osname=x.os_name, ossuite=x.os_suite, ipv4=x.ipv4, ipv6=x.ipv6, status=x.status)) + return items + + def get_item(self, vm_id): + return Vms.select().where(Vms.user == self.user_id, Vms.id == vm_id).get() def create(self, datacenter_id, server_id, vm_id, hostname, ipv4, ipv6, plan, platform, diff --git a/SWSCloudCore/views/api/__init__.py b/SWSCloudCore/views/api/__init__.py deleted file mode 100644 index 97cc9d3..0000000 --- a/SWSCloudCore/views/api/__init__.py +++ /dev/null @@ -1,143 +0,0 @@ -# coding: utf-8 - -from flask import Blueprint, jsonify, request -from SWSCloudCore.controllers.containers import ControllerContainers -from SWSCloudCore.controllers.datacenters import ControllerDataCenters -from SWSCloudCore.controllers.users import ControllerAPI -from SWSCloudCore.controllers.users import ControllerUsers - -viewAPI = Blueprint('api', __name__, url_prefix='/api') - - -# /auth -@viewAPI.route('/auth', methods=['POST']) -def auth(): - """ - curl -X POST http://localhost:5000/api/auth --data 'email=&secret=' - TODO: - Процесс авторизации - - получаем емейл и секретный ключ - - создаём временный токен - - выдаём токен - :return: - """ - email = request.form['email'] - secret = request.form['secret'] - - if not ControllerAPI().auth(email, secret): - return jsonify(status=1) - - user_id = ControllerUsers().get_id_by_email(email) - - return jsonify(user_id=user_id) - - -@viewAPI.route('/datacenter/list', methods=['POST']) -def datacenter_list(): - """ - curl -X POST http://localhost:5000/api/datacenter/list --data 'email=&secret=' - :return: - """ - email = request.form['email'] - secret = request.form['secret'] - # - if not ControllerAPI().auth(email, secret): - return jsonify(status=403), 403 - # - user_id = ControllerUsers().get_id_by_email(email) - # get containers list - datacenters = ControllerDataCenters().get() - # - return jsonify( - total=datacenters['total'], - items=datacenters['items'] - ) - - -# /container/create -# /container/details/ - - -@viewAPI.route('/container/list', methods=['POST']) -def container_list(): - """ - curl -X POST http://localhost:5000/api/container/list --data 'email=&secret=' - :return: - """ - email = request.form['email'] - secret = request.form['secret'] - # expire = request.form['expire'] - # - if not ControllerAPI().auth(email, secret): - return jsonify(status=1) - # - user_id = ControllerUsers().get_id_by_email(email) - # get containers list - containers = ControllerContainers(user_id).get_items() - # - return jsonify( - status=0, - total=containers['total'], - items=containers['items'] - ) - - -@viewAPI.route('/container/create', methods=['POST']) -def container_create(): - """ - curl -X POST http://localhost:5000/api/container/create --data 'email=&secret=&datacenter_id=' - :return: - """ - email = request.form['email'] - secret = request.form['secret'] - datacenter_id = request.form['datacenter_id'] - # expire = request.form['expire'] - # - if not ControllerAPI().auth(email, secret): - return jsonify(status=1) - # - user_id = ControllerUsers().get_id_by_email(email) - # get containers list - containers = ControllerContainers(user_id).get_items() - # - return jsonify( - status=0, - total=containers['total'], - items=containers['items'] - ) - - -@viewAPI.route('/container/delete', methods=['POST']) -def container_delete(): - """ - curl -X POST http://localhost:5000/api/container/delete --data 'email=&secret=&container_id=' - :return: - """ - return jsonify(status=0) - - -@viewAPI.route('/container/stop', methods=['POST']) -def container_stop(): - """ - curl -X POST http://localhost:5000/api/container/stop --data 'email=&secret=&container_id=' - :return: - """ - return jsonify(status=0) - - -@viewAPI.route('/container/start', methods=['POST']) -def container_start(): - """ - curl -X POST http://localhost:5000/api/container/start --data 'email=&secret=&container_id=' - :return: - """ - return jsonify(status=0) - - -@viewAPI.route('/container/restart', methods=['POST']) -def container_restart(): - """ - curl -X POST http://localhost:5000/api/container/restart --data 'email=&secret=&container_id=' - :return: - """ - return jsonify(status=0) diff --git a/SWSCloudCore/views/containers/__init__.py b/SWSCloudCore/views/containers/__init__.py index 25c3c76..3c75b9a 100644 --- a/SWSCloudCore/views/containers/__init__.py +++ b/SWSCloudCore/views/containers/__init__.py @@ -70,7 +70,7 @@ def create(): 'ipv6_gateway': select_ip.ipv6_gateway, 'username': 'ubuntu', 'password': password, - 'ssh_key': None, + 'ssh_key': '', } # sshkey diff --git a/setup.py b/setup.py index 1f075da..1437797 100644 --- a/setup.py +++ b/setup.py @@ -8,6 +8,8 @@ setup( author='Vyacheslav Anzhiganov', author_email='hello@anzhiganov.com', packages=[ + 'SWSCloudAPI', + 'SWSCloudAPI.API', 'SWSCloudCore', 'SWSCloudCore.controllers', 'SWSCloudCore.controllers.administrators', @@ -30,7 +32,6 @@ setup( 'SWSCloudCore.views', 'SWSCloudCore.views.account', 'SWSCloudCore.views.administrator', - 'SWSCloudCore.views.api', 'SWSCloudCore.views.containers', 'SWSCloudCore.views.documents', 'SWSCloudCore.views.kb',