mirror of
https://github.com/GNS3/gns3-server.git
synced 2026-11-06 07:11:13 +02:00
Create /hypervisor and /controller namespace
This commit is contained in:
231 files changed
+1576
-1480
No files matched your search
@@ -17,23 +17,27 @@
|
||||
import sys
|
||||
import os
|
||||
|
||||
from gns3server.handlers.api.version_handler import VersionHandler
|
||||
from gns3server.handlers.api.network_handler import NetworkHandler
|
||||
from gns3server.handlers.api.project_handler import ProjectHandler
|
||||
from gns3server.handlers.api.dynamips_device_handler import DynamipsDeviceHandler
|
||||
from gns3server.handlers.api.dynamips_vm_handler import DynamipsVMHandler
|
||||
from gns3server.handlers.api.qemu_handler import QEMUHandler
|
||||
from gns3server.handlers.api.virtualbox_handler import VirtualBoxHandler
|
||||
from gns3server.handlers.api.docker_handler import DockerHandler
|
||||
from gns3server.handlers.api.vpcs_handler import VPCSHandler
|
||||
from gns3server.handlers.api.vmware_handler import VMwareHandler
|
||||
from gns3server.handlers.api.config_handler import ConfigHandler
|
||||
from gns3server.handlers.api.server_handler import ServerHandler
|
||||
from gns3server.handlers.api.file_handler import FileHandler
|
||||
from gns3server.handlers.upload_handler import UploadHandler
|
||||
from gns3server.handlers.index_handler import IndexHandler
|
||||
|
||||
from gns3server.handlers.api.version_handler import VersionHandler
|
||||
|
||||
# TODO: Do not load if controller is off
|
||||
from gns3server.handlers.api.controller.server_handler import ServerHandler
|
||||
|
||||
from gns3server.handlers.api.hypervisor.network_handler import NetworkHandler
|
||||
from gns3server.handlers.api.hypervisor.project_handler import ProjectHandler
|
||||
from gns3server.handlers.api.hypervisor.dynamips_device_handler import DynamipsDeviceHandler
|
||||
from gns3server.handlers.api.hypervisor.dynamips_vm_handler import DynamipsVMHandler
|
||||
from gns3server.handlers.api.hypervisor.qemu_handler import QEMUHandler
|
||||
from gns3server.handlers.api.hypervisor.virtualbox_handler import VirtualBoxHandler
|
||||
from gns3server.handlers.api.hypervisor.docker_handler import DockerHandler
|
||||
from gns3server.handlers.api.hypervisor.vpcs_handler import VPCSHandler
|
||||
from gns3server.handlers.api.hypervisor.vmware_handler import VMwareHandler
|
||||
from gns3server.handlers.api.hypervisor.config_handler import ConfigHandler
|
||||
from gns3server.handlers.api.hypervisor.file_handler import FileHandler
|
||||
|
||||
if sys.platform.startswith("linux") or hasattr(sys, "_called_from_test") or os.environ.get("PYTEST_BUILD_DOCUMENTATION") == "1":
|
||||
# IOU runs only on Linux but testsuite work on UNIX platform
|
||||
if not sys.platform.startswith("win"):
|
||||
from gns3server.handlers.api.iou_handler import IOUHandler
|
||||
from gns3server.handlers.api.hypervisor.iou_handler import IOUHandler
|
||||
Whitespace-only changes.
+6
-7
@@ -18,12 +18,12 @@
|
||||
import asyncio
|
||||
from aiohttp.web import HTTPForbidden
|
||||
|
||||
from ...web.route import Route
|
||||
from ...config import Config
|
||||
from ...modules.project_manager import ProjectManager
|
||||
from ...schemas.server import SERVER_CREATE_SCHEMA, SERVER_OBJECT_SCHEMA
|
||||
from ...controller import Controller
|
||||
from ...controller.server import Server
|
||||
from ....web.route import Route
|
||||
from ....config import Config
|
||||
from ....modules.project_manager import ProjectManager
|
||||
from ....schemas.server import SERVER_CREATE_SCHEMA, SERVER_OBJECT_SCHEMA
|
||||
from ....controller import Controller
|
||||
from ....controller.server import Server
|
||||
|
||||
|
||||
import logging
|
||||
@@ -40,7 +40,6 @@ class ServerHandler:
|
||||
status_codes={
|
||||
201: "Server added"
|
||||
},
|
||||
controller=True,
|
||||
input=SERVER_CREATE_SCHEMA,
|
||||
output=SERVER_OBJECT_SCHEMA)
|
||||
def create(request, response):
|
||||
Whitespace-only changes.
+3
-2
@@ -15,10 +15,11 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from ...web.route import Route
|
||||
from ...config import Config
|
||||
from aiohttp.web import HTTPForbidden
|
||||
|
||||
from ....web.route import Route
|
||||
from ....config import Config
|
||||
|
||||
|
||||
class ConfigHandler:
|
||||
|
||||
+5
-5
@@ -18,17 +18,17 @@
|
||||
import os
|
||||
from aiohttp.web import HTTPConflict
|
||||
|
||||
from ...web.route import Route
|
||||
from ...modules.docker import Docker
|
||||
from ....web.route import Route
|
||||
from ....modules.docker import Docker
|
||||
|
||||
from ...schemas.docker import (
|
||||
from ....schemas.docker import (
|
||||
DOCKER_CREATE_SCHEMA,
|
||||
DOCKER_OBJECT_SCHEMA,
|
||||
DOCKER_UPDATE_SCHEMA,
|
||||
DOCKER_LIST_IMAGES_SCHEMA
|
||||
)
|
||||
from ...schemas.vm import VM_CAPTURE_SCHEMA
|
||||
from ...schemas.nio import NIO_SCHEMA
|
||||
from ....schemas.vm import VM_CAPTURE_SCHEMA
|
||||
from ....schemas.nio import NIO_SCHEMA
|
||||
|
||||
|
||||
class DockerHandler:
|
||||
+7
-7
@@ -17,13 +17,13 @@
|
||||
|
||||
import os
|
||||
import asyncio
|
||||
from ...web.route import Route
|
||||
from ...schemas.dynamips_device import DEVICE_CREATE_SCHEMA
|
||||
from ...schemas.dynamips_device import DEVICE_UPDATE_SCHEMA
|
||||
from ...schemas.dynamips_device import DEVICE_OBJECT_SCHEMA
|
||||
from ...schemas.dynamips_device import DEVICE_NIO_SCHEMA
|
||||
from ...schemas.vm import VM_CAPTURE_SCHEMA
|
||||
from ...modules.dynamips import Dynamips
|
||||
from ....web.route import Route
|
||||
from ....schemas.dynamips_device import DEVICE_CREATE_SCHEMA
|
||||
from ....schemas.dynamips_device import DEVICE_UPDATE_SCHEMA
|
||||
from ....schemas.dynamips_device import DEVICE_OBJECT_SCHEMA
|
||||
from ....schemas.dynamips_device import DEVICE_NIO_SCHEMA
|
||||
from ....schemas.vm import VM_CAPTURE_SCHEMA
|
||||
from ....modules.dynamips import Dynamips
|
||||
|
||||
|
||||
class DynamipsDeviceHandler:
|
||||
+11
-11
@@ -19,17 +19,17 @@ import os
|
||||
import sys
|
||||
import base64
|
||||
|
||||
from ...web.route import Route
|
||||
from ...schemas.nio import NIO_SCHEMA
|
||||
from ...schemas.vm import VM_LIST_IMAGES_SCHEMA
|
||||
from ...schemas.dynamips_vm import VM_CREATE_SCHEMA
|
||||
from ...schemas.dynamips_vm import VM_UPDATE_SCHEMA
|
||||
from ...schemas.dynamips_vm import VM_OBJECT_SCHEMA
|
||||
from ...schemas.dynamips_vm import VM_CONFIGS_SCHEMA
|
||||
from ...schemas.vm import VM_CAPTURE_SCHEMA
|
||||
from ...modules.dynamips import Dynamips
|
||||
from ...modules.dynamips.dynamips_error import DynamipsError
|
||||
from ...modules.project_manager import ProjectManager
|
||||
from ....web.route import Route
|
||||
from ....schemas.nio import NIO_SCHEMA
|
||||
from ....schemas.vm import VM_LIST_IMAGES_SCHEMA
|
||||
from ....schemas.dynamips_vm import VM_CREATE_SCHEMA
|
||||
from ....schemas.dynamips_vm import VM_UPDATE_SCHEMA
|
||||
from ....schemas.dynamips_vm import VM_OBJECT_SCHEMA
|
||||
from ....schemas.dynamips_vm import VM_CONFIGS_SCHEMA
|
||||
from ....schemas.vm import VM_CAPTURE_SCHEMA
|
||||
from ....modules.dynamips import Dynamips
|
||||
from ....modules.dynamips.dynamips_error import DynamipsError
|
||||
from ....modules.project_manager import ProjectManager
|
||||
|
||||
DEFAULT_CHASSIS = {
|
||||
"c1700": "1720",
|
||||
+2
-2
@@ -17,8 +17,8 @@
|
||||
import asyncio
|
||||
import aiohttp
|
||||
|
||||
from ...web.route import Route
|
||||
from ...schemas.file import FILE_STREAM_SCHEMA
|
||||
from ....web.route import Route
|
||||
from ....schemas.file import FILE_STREAM_SCHEMA
|
||||
|
||||
|
||||
class FileHandler:
|
||||
+10
-10
@@ -18,16 +18,16 @@
|
||||
import os
|
||||
from aiohttp.web import HTTPConflict
|
||||
|
||||
from ...web.route import Route
|
||||
from ...schemas.nio import NIO_SCHEMA
|
||||
from ...schemas.iou import IOU_CREATE_SCHEMA
|
||||
from ...schemas.iou import IOU_START_SCHEMA
|
||||
from ...schemas.iou import IOU_UPDATE_SCHEMA
|
||||
from ...schemas.iou import IOU_OBJECT_SCHEMA
|
||||
from ...schemas.iou import IOU_CONFIGS_SCHEMA
|
||||
from ...schemas.vm import VM_LIST_IMAGES_SCHEMA
|
||||
from ...schemas.vm import VM_CAPTURE_SCHEMA
|
||||
from ...modules.iou import IOU
|
||||
from ....web.route import Route
|
||||
from ....schemas.nio import NIO_SCHEMA
|
||||
from ....schemas.iou import IOU_CREATE_SCHEMA
|
||||
from ....schemas.iou import IOU_START_SCHEMA
|
||||
from ....schemas.iou import IOU_UPDATE_SCHEMA
|
||||
from ....schemas.iou import IOU_OBJECT_SCHEMA
|
||||
from ....schemas.iou import IOU_CONFIGS_SCHEMA
|
||||
from ....schemas.vm import VM_LIST_IMAGES_SCHEMA
|
||||
from ....schemas.vm import VM_CAPTURE_SCHEMA
|
||||
from ....modules.iou import IOU
|
||||
|
||||
|
||||
class IOUHandler:
|
||||
+4
-4
@@ -15,10 +15,10 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from ...web.route import Route
|
||||
from ...modules.port_manager import PortManager
|
||||
from ...modules.project_manager import ProjectManager
|
||||
from ...utils.interfaces import interfaces
|
||||
from ....web.route import Route
|
||||
from ....modules.port_manager import PortManager
|
||||
from ....modules.project_manager import ProjectManager
|
||||
from ....utils.interfaces import interfaces
|
||||
|
||||
|
||||
class NetworkHandler:
|
||||
+4
-4
@@ -21,10 +21,10 @@ import json
|
||||
import os
|
||||
import psutil
|
||||
|
||||
from ...web.route import Route
|
||||
from ...schemas.project import PROJECT_OBJECT_SCHEMA, PROJECT_CREATE_SCHEMA, PROJECT_UPDATE_SCHEMA, PROJECT_FILE_LIST_SCHEMA, PROJECT_LIST_SCHEMA
|
||||
from ...modules.project_manager import ProjectManager
|
||||
from ...modules import MODULES
|
||||
from ....web.route import Route
|
||||
from ....schemas.project import PROJECT_OBJECT_SCHEMA, PROJECT_CREATE_SCHEMA, PROJECT_UPDATE_SCHEMA, PROJECT_FILE_LIST_SCHEMA, PROJECT_LIST_SCHEMA
|
||||
from ....modules.project_manager import ProjectManager
|
||||
from ....modules import MODULES
|
||||
|
||||
import logging
|
||||
log = logging.getLogger()
|
||||
+13
-13
@@ -19,19 +19,19 @@ import sys
|
||||
import os.path
|
||||
|
||||
from aiohttp.web import HTTPConflict
|
||||
from ...web.route import Route
|
||||
from ...modules.project_manager import ProjectManager
|
||||
from ...schemas.nio import NIO_SCHEMA
|
||||
from ...schemas.qemu import QEMU_CREATE_SCHEMA
|
||||
from ...schemas.qemu import QEMU_UPDATE_SCHEMA
|
||||
from ...schemas.qemu import QEMU_OBJECT_SCHEMA
|
||||
from ...schemas.qemu import QEMU_BINARY_FILTER_SCHEMA
|
||||
from ...schemas.qemu import QEMU_BINARY_LIST_SCHEMA
|
||||
from ...schemas.qemu import QEMU_CAPABILITY_LIST_SCHEMA
|
||||
from ...schemas.qemu import QEMU_IMAGE_CREATE_SCHEMA
|
||||
from ...schemas.vm import VM_LIST_IMAGES_SCHEMA
|
||||
from ...modules.qemu import Qemu
|
||||
from ...config import Config
|
||||
from ....web.route import Route
|
||||
from ....modules.project_manager import ProjectManager
|
||||
from ....schemas.nio import NIO_SCHEMA
|
||||
from ....schemas.qemu import QEMU_CREATE_SCHEMA
|
||||
from ....schemas.qemu import QEMU_UPDATE_SCHEMA
|
||||
from ....schemas.qemu import QEMU_OBJECT_SCHEMA
|
||||
from ....schemas.qemu import QEMU_BINARY_FILTER_SCHEMA
|
||||
from ....schemas.qemu import QEMU_BINARY_LIST_SCHEMA
|
||||
from ....schemas.qemu import QEMU_CAPABILITY_LIST_SCHEMA
|
||||
from ....schemas.qemu import QEMU_IMAGE_CREATE_SCHEMA
|
||||
from ....schemas.vm import VM_LIST_IMAGES_SCHEMA
|
||||
from ....modules.qemu import Qemu
|
||||
from ....config import Config
|
||||
|
||||
|
||||
class QEMUHandler:
|
||||
+8
-8
@@ -18,14 +18,14 @@
|
||||
import os
|
||||
|
||||
from aiohttp.web import HTTPConflict
|
||||
from ...web.route import Route
|
||||
from ...schemas.nio import NIO_SCHEMA
|
||||
from ...schemas.virtualbox import VBOX_CREATE_SCHEMA
|
||||
from ...schemas.virtualbox import VBOX_UPDATE_SCHEMA
|
||||
from ...schemas.virtualbox import VBOX_OBJECT_SCHEMA
|
||||
from ...schemas.vm import VM_CAPTURE_SCHEMA
|
||||
from ...modules.virtualbox import VirtualBox
|
||||
from ...modules.project_manager import ProjectManager
|
||||
from ....web.route import Route
|
||||
from ....schemas.nio import NIO_SCHEMA
|
||||
from ....schemas.virtualbox import VBOX_CREATE_SCHEMA
|
||||
from ....schemas.virtualbox import VBOX_UPDATE_SCHEMA
|
||||
from ....schemas.virtualbox import VBOX_OBJECT_SCHEMA
|
||||
from ....schemas.vm import VM_CAPTURE_SCHEMA
|
||||
from ....modules.virtualbox import VirtualBox
|
||||
from ....modules.project_manager import ProjectManager
|
||||
|
||||
|
||||
class VirtualBoxHandler:
|
||||
+8
-8
@@ -18,14 +18,14 @@
|
||||
import os
|
||||
|
||||
from aiohttp.web import HTTPConflict
|
||||
from ...web.route import Route
|
||||
from ...schemas.vmware import VMWARE_CREATE_SCHEMA
|
||||
from ...schemas.vmware import VMWARE_UPDATE_SCHEMA
|
||||
from ...schemas.vmware import VMWARE_OBJECT_SCHEMA
|
||||
from ...schemas.vm import VM_CAPTURE_SCHEMA
|
||||
from ...schemas.nio import NIO_SCHEMA
|
||||
from ...modules.vmware import VMware
|
||||
from ...modules.project_manager import ProjectManager
|
||||
from ....web.route import Route
|
||||
from ....schemas.vmware import VMWARE_CREATE_SCHEMA
|
||||
from ....schemas.vmware import VMWARE_UPDATE_SCHEMA
|
||||
from ....schemas.vmware import VMWARE_OBJECT_SCHEMA
|
||||
from ....schemas.vm import VM_CAPTURE_SCHEMA
|
||||
from ....schemas.nio import NIO_SCHEMA
|
||||
from ....modules.vmware import VMware
|
||||
from ....modules.project_manager import ProjectManager
|
||||
|
||||
|
||||
class VMwareHandler:
|
||||
+6
-6
@@ -16,12 +16,12 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from aiohttp.web import HTTPConflict
|
||||
from ...web.route import Route
|
||||
from ...schemas.nio import NIO_SCHEMA
|
||||
from ...schemas.vpcs import VPCS_CREATE_SCHEMA
|
||||
from ...schemas.vpcs import VPCS_UPDATE_SCHEMA
|
||||
from ...schemas.vpcs import VPCS_OBJECT_SCHEMA
|
||||
from ...modules.vpcs import VPCS
|
||||
from ....web.route import Route
|
||||
from ....schemas.nio import NIO_SCHEMA
|
||||
from ....schemas.vpcs import VPCS_CREATE_SCHEMA
|
||||
from ....schemas.vpcs import VPCS_UPDATE_SCHEMA
|
||||
from ....schemas.vpcs import VPCS_OBJECT_SCHEMA
|
||||
from ....modules.vpcs import VPCS
|
||||
|
||||
|
||||
class VPCSHandler:
|
||||
@@ -36,11 +36,18 @@ class Documentation(object):
|
||||
self._directory = directory
|
||||
|
||||
def write(self):
|
||||
self.write_documentation(False)
|
||||
self.write_documentation("hypervisor")
|
||||
# Controller documentation
|
||||
self.write_documentation(True)
|
||||
self.write_documentation("controller")
|
||||
# Write doc common to both
|
||||
self.write_documentation("common")
|
||||
|
||||
def write_documentation(self, controller):
|
||||
def write_documentation(self, doc_type):
|
||||
"""
|
||||
Build all the doc page for handlers
|
||||
|
||||
:param doc_type: Type of doc to generate (controller, hypervisor or common)
|
||||
"""
|
||||
for handler_name in sorted(self._documentation):
|
||||
print("Build {}".format(handler_name))
|
||||
|
||||
@@ -50,25 +57,27 @@ class Documentation(object):
|
||||
if api_version is None:
|
||||
continue
|
||||
|
||||
if self._documentation[handler_name][path].get("controller", False):
|
||||
if "controller." in handler_name:
|
||||
server_type = "controller"
|
||||
if not controller:
|
||||
continue
|
||||
elif "hypervisor." in handler_name:
|
||||
server_type = "hypervisor"
|
||||
else:
|
||||
server_type = "server"
|
||||
if controller:
|
||||
continue
|
||||
server_type = "common"
|
||||
|
||||
self._create_handler_directory(handler_name, api_version, server_type)
|
||||
if doc_type != server_type:
|
||||
continue
|
||||
|
||||
filename = self._file_path(path)
|
||||
handler_doc = self._documentation[handler_name][path]
|
||||
with open("{}/api/v{}/{}/{}/{}.rst".format(self._directory, api_version, server_type, handler_name, filename), 'w+') as f:
|
||||
f.write('{}\n----------------------------------------------------------------------------------------------------------------------\n\n'.format(path))
|
||||
handler = handler_name.replace(server_type + ".", "")
|
||||
|
||||
self._create_handler_directory(handler, api_version, server_type)
|
||||
with open("{}/api/v{}/{}/{}/{}.rst".format(self._directory, api_version, server_type, handler, filename), 'w+') as f:
|
||||
f.write('{}\n------------------------------------------------------------------------------------------------------------------------------------------\n\n'.format(path))
|
||||
f.write('.. contents::\n')
|
||||
for method in handler_doc["methods"]:
|
||||
f.write('\n{} {}\n'.format(method["method"], path.replace("{", '**{').replace("}", "}**")))
|
||||
f.write('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n')
|
||||
f.write('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n')
|
||||
f.write('{}\n\n'.format(method["description"]))
|
||||
|
||||
if len(method["parameters"]) > 0:
|
||||
@@ -93,7 +102,7 @@ class Documentation(object):
|
||||
f.write("Output\n*******\n")
|
||||
self._write_json_schema(f, method["output_schema"])
|
||||
|
||||
self._include_query_example(f, method, path, api_version)
|
||||
self._include_query_example(f, method, path, api_version, server_type)
|
||||
|
||||
def _create_handler_directory(self, handler_name, api_version, server_type):
|
||||
"""Create a directory for the handler and add an index inside"""
|
||||
@@ -103,18 +112,20 @@ class Documentation(object):
|
||||
|
||||
with open("{}/api/v{}/{}/{}.rst".format(self._directory, api_version, server_type, handler_name), "w+") as f:
|
||||
f.write(handler_name.replace("api.", "").replace("_", " ", ).capitalize())
|
||||
f.write("\n---------------------\n\n")
|
||||
f.write("\n-----------------------------\n\n")
|
||||
f.write(".. toctree::\n :glob:\n :maxdepth: 2\n\n {}/*\n".format(handler_name))
|
||||
|
||||
def _include_query_example(self, f, method, path, api_version):
|
||||
def _include_query_example(self, f, method, path, api_version, server_type):
|
||||
"""If a sample session is available we include it in documentation"""
|
||||
m = method["method"].lower()
|
||||
query_path = "{}_{}.txt".format(m, self._file_path(path))
|
||||
query_path = "{}_{}_{}.txt".format(server_type, m, self._file_path(path))
|
||||
if os.path.isfile(os.path.join(self._directory, "api", "examples", query_path)):
|
||||
f.write("Sample session\n***************\n")
|
||||
f.write("\n\n.. literalinclude:: ../../../examples/{}\n\n".format(query_path))
|
||||
|
||||
def _file_path(self, path):
|
||||
path = path.replace("hypervisor", "")
|
||||
path = path.replace("controller", "")
|
||||
return re.sub("^v1", "", re.sub("[^a-z0-9]", "", path))
|
||||
|
||||
def _write_definitions(self, f, schema):
|
||||
|
||||
+26
-21
@@ -123,29 +123,34 @@ class Route(object):
|
||||
api_version = kw.get("api_version", 1)
|
||||
raw = kw.get("raw", False)
|
||||
|
||||
# If it's a JSON api endpoint just register the endpoint an do nothing
|
||||
if api_version is None:
|
||||
cls._path = path
|
||||
else:
|
||||
cls._path = "/v{version}{path}".format(path=path, version=api_version)
|
||||
|
||||
def register(func):
|
||||
route = cls._path
|
||||
# Add the type of server to the route
|
||||
if "controller" in func.__module__:
|
||||
route = "/v{version}/controller{path}".format(path=path, version=api_version)
|
||||
elif "hypervisor" in func.__module__:
|
||||
route = "/v{version}/hypervisor{path}".format(path=path, version=api_version)
|
||||
elif "handlers.api" in func.__module__:
|
||||
route = "/v{version}{path}".format(path=path, version=api_version)
|
||||
else:
|
||||
route = path
|
||||
|
||||
handler = func.__module__.replace("_handler", "").replace("gns3server.handlers.api.", "")
|
||||
cls._documentation.setdefault(handler, {})
|
||||
cls._documentation[handler].setdefault(route, {"api_version": api_version,
|
||||
"controller": kw.get("controller", False),
|
||||
"methods": []})
|
||||
# Compute metadata for the documentation
|
||||
if api_version:
|
||||
handler = func.__module__.replace("_handler", "").replace("gns3server.handlers.api.", "")
|
||||
cls._documentation.setdefault(handler, {})
|
||||
cls._documentation[handler].setdefault(route, {"api_version": api_version,
|
||||
"controller": kw.get("controller", False),
|
||||
"methods": []})
|
||||
|
||||
cls._documentation[handler][route]["methods"].append({
|
||||
"method": method,
|
||||
"status_codes": kw.get("status_codes", {200: "OK"}),
|
||||
"parameters": kw.get("parameters", {}),
|
||||
"output_schema": output_schema,
|
||||
"input_schema": input_schema,
|
||||
"description": kw.get("description", ""),
|
||||
})
|
||||
|
||||
cls._documentation[handler][route]["methods"].append({
|
||||
"method": method,
|
||||
"status_codes": kw.get("status_codes", {200: "OK"}),
|
||||
"parameters": kw.get("parameters", {}),
|
||||
"output_schema": output_schema,
|
||||
"input_schema": input_schema,
|
||||
"description": kw.get("description", ""),
|
||||
})
|
||||
func = asyncio.coroutine(func)
|
||||
|
||||
@asyncio.coroutine
|
||||
@@ -253,7 +258,7 @@ class Route(object):
|
||||
response = yield from control_schema(request)
|
||||
return response
|
||||
|
||||
cls._routes.append((method, cls._path, vm_concurrency))
|
||||
cls._routes.append((method, route, vm_concurrency))
|
||||
|
||||
return vm_concurrency
|
||||
return register
|
||||
|
||||
Reference in new issue
Block a user