mirror of
https://github.com/GNS3/gns3-server
synced 2024-11-24 17:28:08 +00:00
Merge pull request #1138 from GNS3/duplicate_qemu
Duplicate support for qemu
This commit is contained in:
commit
f0343124ec
@ -143,6 +143,26 @@ class QEMUHandler:
|
|||||||
yield from Qemu.instance().delete_node(request.match_info["node_id"])
|
yield from Qemu.instance().delete_node(request.match_info["node_id"])
|
||||||
response.set_status(204)
|
response.set_status(204)
|
||||||
|
|
||||||
|
@Route.post(
|
||||||
|
r"/projects/{project_id}/qemu/nodes/{node_id}/duplicate",
|
||||||
|
parameters={
|
||||||
|
"project_id": "Project UUID",
|
||||||
|
"node_id": "Node UUID"
|
||||||
|
},
|
||||||
|
status_codes={
|
||||||
|
201: "Instance duplicated",
|
||||||
|
404: "Instance doesn't exist"
|
||||||
|
},
|
||||||
|
description="Duplicate a Qemu instance")
|
||||||
|
def duplicate(request, response):
|
||||||
|
|
||||||
|
new_node = yield from Qemu.instance().duplicate_node(
|
||||||
|
request.match_info["node_id"],
|
||||||
|
request.json["destination_node_id"]
|
||||||
|
)
|
||||||
|
response.set_status(201)
|
||||||
|
response.json(new_node)
|
||||||
|
|
||||||
@Route.post(
|
@Route.post(
|
||||||
r"/projects/{project_id}/qemu/nodes/{node_id}/start",
|
r"/projects/{project_id}/qemu/nodes/{node_id}/start",
|
||||||
parameters={
|
parameters={
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
import uuid
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import stat
|
import stat
|
||||||
@ -346,3 +347,17 @@ def test_capabilities(http_compute):
|
|||||||
with asyncio_patch("gns3server.compute.Qemu.get_kvm_archs", return_value=["x86_64"]):
|
with asyncio_patch("gns3server.compute.Qemu.get_kvm_archs", return_value=["x86_64"]):
|
||||||
response = http_compute.get("/qemu/capabilities", example=True)
|
response = http_compute.get("/qemu/capabilities", example=True)
|
||||||
assert response.json["kvm"] == ["x86_64"]
|
assert response.json["kvm"] == ["x86_64"]
|
||||||
|
|
||||||
|
|
||||||
|
def test_qemu_duplicate(http_compute, vm):
|
||||||
|
with asyncio_patch("gns3server.compute.qemu.Qemu.duplicate_node", return_value=True) as mock:
|
||||||
|
response = http_compute.post(
|
||||||
|
"/projects/{project_id}/qemu/nodes/{node_id}/duplicate".format(
|
||||||
|
project_id=vm["project_id"],
|
||||||
|
node_id=vm["node_id"]),
|
||||||
|
body={
|
||||||
|
"destination_node_id": str(uuid.uuid4())
|
||||||
|
},
|
||||||
|
example=True)
|
||||||
|
assert mock.called
|
||||||
|
assert response.status == 201
|
||||||
|
Loading…
Reference in New Issue
Block a user