1
0
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:
Jeremy Grossmann 2017-07-25 06:44:49 -07:00 committed by GitHub
commit f0343124ec
2 changed files with 35 additions and 0 deletions

View File

@ -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={

View File

@ -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