From 1eb77a0b3f5995c4a8bc8d0c54d11f51d48bb656 Mon Sep 17 00:00:00 2001 From: Julien Duponchelle Date: Mon, 16 May 2016 18:32:29 +0200 Subject: [PATCH] Fix docker support on 2.0 Fix #528 --- gns3server/compute/docker/docker_vm.py | 2 +- gns3server/controller/node.py | 3 ++- .../handlers/api/compute/docker_handler.py | 20 +++++-------------- gns3server/schemas/docker.py | 1 + 4 files changed, 9 insertions(+), 17 deletions(-) diff --git a/gns3server/compute/docker/docker_vm.py b/gns3server/compute/docker/docker_vm.py index 19685cbf..e35d04e3 100644 --- a/gns3server/compute/docker/docker_vm.py +++ b/gns3server/compute/docker/docker_vm.py @@ -195,7 +195,7 @@ class DockerVM(BaseNode): """ :returns: Return the path that we need to map to local folders """ - binds = ["{}:/gns3:ro".format(get_resource("hypervisor/docker/resources"))] + binds = ["{}:/gns3:ro".format(get_resource("compute/docker/resources"))] # We mount our own etc/network network_config = self._create_network_config() diff --git a/gns3server/controller/node.py b/gns3server/controller/node.py index b9920e3e..a937fa04 100644 --- a/gns3server/controller/node.py +++ b/gns3server/controller/node.py @@ -154,9 +154,10 @@ class Node: data["name"] = self._name if self._console: data["console"] = self._console + if self._console_type: data["console_type"] = self._console_type - # None properties should be send. Because it can mean the emulator doesn't support it + # None properties are not be send. Because it can mean the emulator doesn't support it for key in list(data.keys()): if data[key] is None: del data[key] diff --git a/gns3server/handlers/api/compute/docker_handler.py b/gns3server/handlers/api/compute/docker_handler.py index 740c8a6b..0d658406 100644 --- a/gns3server/handlers/api/compute/docker_handler.py +++ b/gns3server/handlers/api/compute/docker_handler.py @@ -81,9 +81,7 @@ class DockerHandler: 400: "Invalid request", 404: "Instance doesn't exist" }, - description="Start a Docker container", - input=DOCKER_CREATE_SCHEMA, - output=DOCKER_OBJECT_SCHEMA) + description="Start a Docker container") def start(request, response): docker_manager = Docker.instance() container = docker_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) @@ -101,9 +99,7 @@ class DockerHandler: 400: "Invalid request", 404: "Instance doesn't exist" }, - description="Stop a Docker container", - input=DOCKER_CREATE_SCHEMA, - output=DOCKER_OBJECT_SCHEMA) + description="Stop a Docker container") def stop(request, response): docker_manager = Docker.instance() container = docker_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) @@ -121,9 +117,7 @@ class DockerHandler: 400: "Invalid request", 404: "Instance doesn't exist" }, - description="Restart a Docker container", - input=DOCKER_CREATE_SCHEMA, - output=DOCKER_OBJECT_SCHEMA) + description="Restart a Docker container") def reload(request, response): docker_manager = Docker.instance() container = docker_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) @@ -159,9 +153,7 @@ class DockerHandler: 400: "Invalid request", 404: "Instance doesn't exist" }, - description="Pause a Docker container", - input=DOCKER_CREATE_SCHEMA, - output=DOCKER_OBJECT_SCHEMA) + description="Pause a Docker container") def pause(request, response): docker_manager = Docker.instance() container = docker_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) @@ -179,9 +171,7 @@ class DockerHandler: 400: "Invalid request", 404: "Instance doesn't exist" }, - description="Unpause a Docker container", - input=DOCKER_CREATE_SCHEMA, - output=DOCKER_OBJECT_SCHEMA) + description="Unpause a Docker container") def unpause(request, response): docker_manager = Docker.instance() container = docker_manager.get_node(request.match_info["node_id"], project_id=request.match_info["project_id"]) diff --git a/gns3server/schemas/docker.py b/gns3server/schemas/docker.py index bab22f5b..e922a15f 100644 --- a/gns3server/schemas/docker.py +++ b/gns3server/schemas/docker.py @@ -86,6 +86,7 @@ DOCKER_CREATE_SCHEMA = { }, "additionalProperties": False, + "required": ["name", "image"] }