Merge pull request #1142 from GNS3/duplicate_iou

Duplicate IOU
This commit is contained in:
Jeremy Grossmann 2017-07-25 06:46:44 -07:00 committed by GitHub
commit a805b3c7c3
2 changed files with 34 additions and 0 deletions

View File

@ -133,6 +133,26 @@ class IOUHandler:
yield from IOU.instance().delete_node(request.match_info["node_id"])
response.set_status(204)
@Route.post(
r"/projects/{project_id}/iou/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 IOU instance")
def duplicate(request, response):
new_node = yield from IOU.instance().duplicate_node(
request.match_info["node_id"],
request.json["destination_node_id"]
)
response.set_status(201)
response.json(new_node)
@Route.post(
r"/projects/{project_id}/iou/nodes/{node_id}/start",
parameters={

View File

@ -308,3 +308,17 @@ def test_image_vm(http_compute, tmpdir):
with open(str(tmpdir / "test2.md5sum")) as f:
checksum = f.read()
assert checksum == "033bd94b1168d7e4f0d644c3c95e35bf"
def test_iou_duplicate(http_compute, vm):
with asyncio_patch("gns3server.compute.iou.IOU.duplicate_node", return_value=True) as mock:
response = http_compute.post(
"/projects/{project_id}/iou/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