mirror of
https://github.com/GNS3/gns3-server.git
synced 2026-11-03 14:01:15 +02:00
API in order to get the list of IOU, Dynamips, Qemu images
This commit is contained in:
1 parent
5a4ffae6a2
commit
bca90bc563
14 files changed
+218
-36
No files matched your search
@@ -25,6 +25,7 @@ from ...schemas.dynamips_vm import VM_CAPTURE_SCHEMA
|
||||
from ...schemas.dynamips_vm import VM_OBJECT_SCHEMA
|
||||
from ...schemas.dynamips_vm import VM_NIO_SCHEMA
|
||||
from ...schemas.dynamips_vm import VM_CONFIGS_SCHEMA
|
||||
from ...schemas.dynamips_vm import VMS_LIST_SCHEMA
|
||||
from ...modules.dynamips import Dynamips
|
||||
from ...modules.project_manager import ProjectManager
|
||||
|
||||
@@ -421,3 +422,17 @@ class DynamipsVMHandler:
|
||||
idlepc = yield from dynamips_manager.auto_idlepc(vm)
|
||||
response.set_status(200)
|
||||
response.json({"idlepc": idlepc})
|
||||
|
||||
@Route.get(
|
||||
r"/dynamips/vms",
|
||||
status_codes={
|
||||
200: "List of Dynamips VM retrieved",
|
||||
},
|
||||
description="Retrieve the list of Dynamips VMS",
|
||||
output=VMS_LIST_SCHEMA)
|
||||
def list_vms(request, response):
|
||||
|
||||
dynamips_manager = Dynamips.instance()
|
||||
vms = yield from dynamips_manager.list_images()
|
||||
response.set_status(200)
|
||||
response.json(vms)
|
||||
@@ -25,6 +25,7 @@ from ...schemas.iou import IOU_OBJECT_SCHEMA
|
||||
from ...schemas.iou import IOU_NIO_SCHEMA
|
||||
from ...schemas.iou import IOU_CAPTURE_SCHEMA
|
||||
from ...schemas.iou import IOU_INITIAL_CONFIG_SCHEMA
|
||||
from ...schemas.iou import IOU_LIST_VMS_SCHEMA
|
||||
from ...modules.iou import IOU
|
||||
|
||||
|
||||
@@ -310,3 +311,17 @@ class IOUHandler:
|
||||
project_id=request.match_info["project_id"])
|
||||
response.set_status(200)
|
||||
response.json({"content": vm.initial_config})
|
||||
|
||||
@Route.get(
|
||||
r"/iou/vms",
|
||||
status_codes={
|
||||
200: "List of IOU VM retrieved",
|
||||
},
|
||||
description="Retrieve the list of IOU VMS",
|
||||
output=IOU_LIST_VMS_SCHEMA)
|
||||
def list_vms(request, response):
|
||||
|
||||
iou_manager = IOU.instance()
|
||||
vms = yield from iou_manager.list_images()
|
||||
response.set_status(200)
|
||||
response.json(vms)
|
||||
@@ -21,6 +21,7 @@ from ...schemas.qemu import QEMU_UPDATE_SCHEMA
|
||||
from ...schemas.qemu import QEMU_OBJECT_SCHEMA
|
||||
from ...schemas.qemu import QEMU_NIO_SCHEMA
|
||||
from ...schemas.qemu import QEMU_BINARY_LIST_SCHEMA
|
||||
from ...schemas.qemu import QEMU_LIST_IMAGES_SCHEMA
|
||||
from ...modules.qemu import Qemu
|
||||
|
||||
|
||||
@@ -286,3 +287,17 @@ class QEMUHandler:
|
||||
|
||||
binaries = yield from Qemu.binary_list()
|
||||
response.json(binaries)
|
||||
|
||||
@Route.get(
|
||||
r"/qemu/vms",
|
||||
status_codes={
|
||||
200: "List of Qemu images retrieved",
|
||||
},
|
||||
description="Retrieve the list of Qemu images",
|
||||
output=QEMU_LIST_IMAGES_SCHEMA)
|
||||
def list_vms(request, response):
|
||||
|
||||
qemu_manager = Qemu.instance()
|
||||
vms = yield from qemu_manager.list_images()
|
||||
response.set_status(200)
|
||||
response.json(vms)
|
||||
@@ -42,7 +42,7 @@ class VirtualBoxHandler:
|
||||
def show(request, response):
|
||||
|
||||
vbox_manager = VirtualBox.instance()
|
||||
vms = yield from vbox_manager.get_list()
|
||||
vms = yield from vbox_manager.list_images()
|
||||
response.json(vms)
|
||||
|
||||
@classmethod
|
||||
|
||||
@@ -403,6 +403,25 @@ class BaseManager:
|
||||
return os.path.basename(path)
|
||||
return path
|
||||
|
||||
@asyncio.coroutine
|
||||
def list_images(self):
|
||||
"""
|
||||
Return the list of available images for this VM type
|
||||
|
||||
:returns: Array of hash
|
||||
"""
|
||||
|
||||
try:
|
||||
files = os.listdir(self.get_images_directory())
|
||||
except FileNotFoundError:
|
||||
return []
|
||||
files.sort()
|
||||
images = []
|
||||
for filename in files:
|
||||
if filename[0] != ".":
|
||||
images.append({"filename": filename})
|
||||
return images
|
||||
|
||||
def get_images_directory(self):
|
||||
"""
|
||||
Get the image directory on disk
|
||||
|
||||
@@ -117,7 +117,7 @@ class VirtualBox(BaseManager):
|
||||
return stdout_data.decode("utf-8", errors="ignore").splitlines()
|
||||
|
||||
@asyncio.coroutine
|
||||
def get_list(self):
|
||||
def list_images(self):
|
||||
"""
|
||||
Gets VirtualBox VM list.
|
||||
"""
|
||||
|
||||
@@ -898,3 +898,21 @@ VM_CONFIGS_SCHEMA = {
|
||||
"additionalProperties": False,
|
||||
"required": ["startup_config_content", "private_config_content"]
|
||||
}
|
||||
|
||||
VMS_LIST_SCHEMA = {
|
||||
"$schema": "http://json-schema.org/draft-04/schema#",
|
||||
"description": "List available Dynamips images",
|
||||
"type": "array",
|
||||
"items": [
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"filename": {
|
||||
"description": "Image filename",
|
||||
"type": ["string"]
|
||||
},
|
||||
},
|
||||
}
|
||||
],
|
||||
"additionalProperties": False,
|
||||
}
|
||||
@@ -323,3 +323,21 @@ IOU_INITIAL_CONFIG_SCHEMA = {
|
||||
"additionalProperties": False,
|
||||
"required": ["content"]
|
||||
}
|
||||
|
||||
IOU_LIST_VMS_SCHEMA = {
|
||||
"$schema": "http://json-schema.org/draft-04/schema#",
|
||||
"description": "List available IOU images",
|
||||
"type": "array",
|
||||
"items": [
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"filename": {
|
||||
"description": "Image filename",
|
||||
"type": ["string"]
|
||||
},
|
||||
},
|
||||
}
|
||||
],
|
||||
"additionalProperties": False,
|
||||
}
|
||||
@@ -397,3 +397,21 @@ QEMU_BINARY_LIST_SCHEMA = {
|
||||
},
|
||||
"additionalProperties": False,
|
||||
}
|
||||
|
||||
QEMU_LIST_IMAGES_SCHEMA = {
|
||||
"$schema": "http://json-schema.org/draft-04/schema#",
|
||||
"description": "List available QEMU images",
|
||||
"type": "array",
|
||||
"items": [
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"filename": {
|
||||
"description": "Image filename",
|
||||
"type": ["string"]
|
||||
},
|
||||
},
|
||||
}
|
||||
],
|
||||
"additionalProperties": False,
|
||||
}
|
||||
Reference in new issue
Block a user