diff --git a/gns3server/modules/base_manager.py b/gns3server/modules/base_manager.py index f4186b2b..9710ace8 100644 --- a/gns3server/modules/base_manager.py +++ b/gns3server/modules/base_manager.py @@ -94,12 +94,17 @@ class BaseManager: return self._config - @classmethod @asyncio.coroutine - def unload(cls): + def unload(self): + + for uuid in self._vms.keys(): + try: + self.delete_vm(uuid) + except Exception as e: + log.warn("Could not delete VM {}: {}".format(uuid, e)) - # TODO: close explicitly all the VMs here? - cls._instance = None + if hasattr(BaseManager, "_instance"): + BaseManager._instance = None def get_vm(self, uuid): """ @@ -144,6 +149,8 @@ class BaseManager: self._vms[vm.uuid] = vm return vm + # FIXME: should be named close_vm and we should have a + # delete_vm when a user deletes a VM (including files in workdir) @asyncio.coroutine def delete_vm(self, uuid): """ diff --git a/tests/conftest.py b/tests/conftest.py index cbb0a758..1a80a456 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -68,7 +68,8 @@ def server(request, loop, port_manager): def tear_down(): for module in MODULES: - loop.run_until_complete(module.unload()) + instance = module.instance() + loop.run_until_complete(instance.unload()) srv.close() srv.wait_closed() request.addfinalizer(tear_down)