From 2d6d153262ccb5d0cbaedfa88980c4566a5e4785 Mon Sep 17 00:00:00 2001 From: grossmj Date: Sat, 21 Mar 2015 14:52:17 -0600 Subject: [PATCH] Save configs when project is committed. --- gns3server/modules/base_manager.py | 10 ++++++++++ gns3server/modules/dynamips/__init__.py | 13 +++++++++++++ gns3server/modules/project.py | 2 ++ 3 files changed, 25 insertions(+) diff --git a/gns3server/modules/base_manager.py b/gns3server/modules/base_manager.py index 23a4e34d..c41463a7 100644 --- a/gns3server/modules/base_manager.py +++ b/gns3server/modules/base_manager.py @@ -282,6 +282,16 @@ class BaseManager: pass + @asyncio.coroutine + def project_committed(self, project): + """ + Called when a project is committed. + + :param project: Project instance + """ + + pass + @asyncio.coroutine def delete_vm(self, vm_id): """ diff --git a/gns3server/modules/dynamips/__init__.py b/gns3server/modules/dynamips/__init__.py index 6a5f4c70..b8053c3e 100644 --- a/gns3server/modules/dynamips/__init__.py +++ b/gns3server/modules/dynamips/__init__.py @@ -199,6 +199,19 @@ class Dynamips(BaseManager): if device.project.id == project.id: yield from device.hypervisor.set_working_dir(project.module_working_directory(self.module_name.lower())) + @asyncio.coroutine + def project_committed(self, project): + """ + Called when a project has been committed. + + :param project: Project instance + """ + + # save the configs when the project is committed + for vm in self._vms.values(): + if vm.project.id == project.id: + yield from vm.save_configs() + @property def dynamips_path(self): """ diff --git a/gns3server/modules/project.py b/gns3server/modules/project.py index 8d1d449d..4fc14b9b 100644 --- a/gns3server/modules/project.py +++ b/gns3server/modules/project.py @@ -324,6 +324,8 @@ class Project: vm = self._vms_to_destroy.pop() yield from vm.delete() self.remove_vm(vm) + for module in self.modules(): + yield from module.instance().project_committed(self) @asyncio.coroutine def delete(self):