Allow to resize a Qemu VM disk (extend only).

This commit is contained in:
grossmj
2018-03-26 18:05:49 +07:00
parent 6cec67f79f
commit ff7911bd99
6 changed files with 148 additions and 6 deletions

View File

@ -35,10 +35,12 @@ from gns3server.schemas.qemu import (
QEMU_CREATE_SCHEMA,
QEMU_UPDATE_SCHEMA,
QEMU_OBJECT_SCHEMA,
QEMU_RESIZE_SCHEMA,
QEMU_BINARY_LIST_SCHEMA,
QEMU_BINARY_FILTER_SCHEMA,
QEMU_CAPABILITY_LIST_SCHEMA,
QEMU_IMAGE_CREATE_SCHEMA
QEMU_IMAGE_CREATE_SCHEMA,
QEMU_IMAGE_UPDATE_SCHEMA
)
@ -163,6 +165,25 @@ class QEMUHandler:
response.set_status(201)
response.json(new_node)
@Route.post(
r"/projects/{project_id}/qemu/nodes/{node_id}/resize_disk",
parameters={
"project_id": "Project UUID",
"node_id": "Node UUID"
},
status_codes={
201: "Instance updated",
404: "Instance doesn't exist"
},
description="Resize a Qemu VM disk image",
input=QEMU_RESIZE_SCHEMA)
def resize_disk(request, response):
qemu_manager = Qemu.instance()
vm = qemu_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"])
yield from vm.resize_disk(request.json["drive_name"], request.json["extend"])
response.set_status(201)
@Route.post(
r"/projects/{project_id}/qemu/nodes/{node_id}/start",
parameters={
@ -458,6 +479,28 @@ class QEMUHandler:
yield from Qemu.instance().create_disk(qemu_img, path, request.json)
response.set_status(201)
@Route.put(
r"/qemu/img",
status_codes={
201: "Image Updated",
},
description="Update a Qemu image",
input=QEMU_IMAGE_UPDATE_SCHEMA
)
def update_img(request, response):
qemu_img = request.json.pop("qemu_img")
path = request.json.pop("path")
if os.path.isabs(path):
config = Config.instance()
if config.get_section_config("Server").getboolean("local", False) is False:
response.set_status(403)
return
if "extend" in request.json:
yield from Qemu.instance().resize_disk(qemu_img, path, request.json.pop("extend"))
response.set_status(201)
@Route.get(
r"/qemu/images",
status_codes={