From f15118140916669fa71398f7dd62bd45e48ef470 Mon Sep 17 00:00:00 2001 From: Julien Duponchelle Date: Mon, 20 Jun 2016 11:41:39 +0200 Subject: [PATCH 1/2] Fix a crash if Dynamips router has no initial configuration Fix #572 --- gns3server/modules/dynamips/nodes/router.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/gns3server/modules/dynamips/nodes/router.py b/gns3server/modules/dynamips/nodes/router.py index 4af427ffc..378e9eb13 100644 --- a/gns3server/modules/dynamips/nodes/router.py +++ b/gns3server/modules/dynamips/nodes/router.py @@ -1519,7 +1519,14 @@ class Router(BaseVM): """ if self.startup_config or self.private_config: + module_workdir = self.project.module_working_directory(self.manager.module_name.lower()) + try: + config_path = os.path.join(module_workdir, "configs") + os.makedirs(config_path, exist_ok=True) + except OSError as e: + raise DynamipsError("Could could not create configuration directory {}: {}".format(config_path, e)) + startup_config_base64, private_config_base64 = yield from self.extract_config() if startup_config_base64: if not self.startup_config: From d1de665939c1b99e35d17a2cb6591b46c635bdd2 Mon Sep 17 00:00:00 2001 From: Julien Duponchelle Date: Mon, 20 Jun 2016 11:46:10 +0200 Subject: [PATCH 2/2] Fix a crash in Docker if daemon stop to respond Fix #580 --- gns3server/modules/docker/__init__.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/gns3server/modules/docker/__init__.py b/gns3server/modules/docker/__init__.py index c7313840a..1c3779a71 100644 --- a/gns3server/modules/docker/__init__.py +++ b/gns3server/modules/docker/__init__.py @@ -101,14 +101,17 @@ class Docker(BaseManager): """ data = json.dumps(data) url = "http://docker/" + path - response = yield from aiohttp.request( - method, - url, - connector=(yield from self.connector()), - params=params, - data=data, - headers={"content-type": "application/json", }, - ) + try: + response = yield from aiohttp.request( + method, + url, + connector=(yield from self.connector()), + params=params, + data=data, + headers={"content-type": "application/json", }, + ) + except aiohttp.ClientResponseError as e: + raise DockerError("Docker has returned an error: {}".format(str(e))) if response.status >= 300: body = yield from response.read() try: