1
0
mirror of https://github.com/GNS3/gns3-server synced 2024-11-13 20:08:55 +00:00

Support duplicate for Docker

Ref https://github.com/GNS3/gns3-gui/issues/1065
This commit is contained in:
Julien Duponchelle 2017-07-25 11:32:09 +02:00
parent 6514252a95
commit 16209a2b60
No known key found for this signature in database
GPG Key ID: CE8B29639E07F5E8
2 changed files with 36 additions and 2 deletions

View File

@ -141,6 +141,26 @@ class DockerHandler:
yield from container.delete()
response.set_status(204)
@Route.post(
r"/projects/{project_id}/docker/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 Docker instance")
def duplicate(request, response):
new_node = yield from Docker.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}/docker/nodes/{node_id}/pause",
parameters={

View File

@ -132,8 +132,8 @@ def test_docker_update_nio(http_compute, vm):
"lport": 4242,
"rport": 4343,
"rhost": "127.0.0.1"
},
example=True)
},
example=True)
assert response.status == 201, response.body.decode()
assert response.route == "/projects/{project_id}/docker/nodes/{node_id}/adapters/{adapter_number:\d+}/ports/{port_number:\d+}/nio"
@ -184,3 +184,17 @@ def test_docker_stop_capture(http_compute, vm, tmpdir, project):
assert response.status == 204
assert stop_capture.called
def test_docker_duplicate(http_compute, vm):
with asyncio_patch("gns3server.compute.docker.Docker.duplicate_node", return_value=True) as mock:
response = http_compute.post(
"/projects/{project_id}/docker/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