From dfce18a48f4fc787811be2dc0e70439e48e8fa01 Mon Sep 17 00:00:00 2001 From: grossmj Date: Sat, 28 Feb 2015 18:55:53 -0700 Subject: [PATCH] Fixes migration issues for pre-1.3 projects. --- gns3server/modules/base_manager.py | 46 ++++++++++++------------------ 1 file changed, 18 insertions(+), 28 deletions(-) diff --git a/gns3server/modules/base_manager.py b/gns3server/modules/base_manager.py index 03c0cab5..c4d85d23 100644 --- a/gns3server/modules/base_manager.py +++ b/gns3server/modules/base_manager.py @@ -162,14 +162,25 @@ class BaseManager: """ vm_id = str(uuid4()) - if hasattr(self, "get_legacy_vm_workdir"): - # move old project VM files to a new location - log.info("Converting old project...") - project_name = os.path.basename(project.path) - legacy_project_files_path = os.path.join(project.path, "{}-files".format(project_name)) - legacy_vm_dir = self.get_legacy_vm_workdir(legacy_id, name) - legacy_vm_working_path = os.path.join(legacy_project_files_path, legacy_vm_dir) + log.info("Converting old project...") + project_name = os.path.basename(project.path) + legacy_project_files_path = os.path.join(project.path, "{}-files".format(project_name)) + new_project_files_path = os.path.join(project.path, "project-files") + if os.path.exists(legacy_project_files_path) and not os.path.exists(new_project_files_path): + # move the project files new_project_files_path = os.path.join(project.path, "project-files") + try: + log.info('Moving "{}" to "{}"'.format(legacy_project_files_path, new_project_files_path)) + yield from wait_run_in_executor(shutil.move, legacy_project_files_path, new_project_files_path) + except OSError as e: + raise aiohttp.web.HTTPInternalServerError(text="Could not move project files directory: {} to {} {}".format(legacy_project_files_path, + new_project_files_path, + e)) + + if hasattr(self, "get_legacy_vm_workdir"): + # rename old project VM working dir + legacy_vm_dir = self.get_legacy_vm_workdir(legacy_id, name) + legacy_vm_working_path = os.path.join(new_project_files_path, legacy_vm_dir) new_vm_working_path = os.path.join(new_project_files_path, self.module_name.lower(), vm_id) try: log.info('Moving "{}" to "{}"'.format(legacy_vm_working_path, new_vm_working_path)) @@ -179,27 +190,6 @@ class BaseManager: new_vm_working_path, e)) - old_images_dir = os.path.join(legacy_project_files_path, "images") - new_images_dir = os.path.join(new_project_files_path, "images") - if os.path.isdir(old_images_dir): - try: - log.info('Moving "{}" to "{}"'.format(old_images_dir, new_images_dir)) - yield from wait_run_in_executor(shutil.move, old_images_dir, new_images_dir) - except OSError as e: - raise aiohttp.web.HTTPInternalServerError(text="Could not move images directory: {} to {} {}".format(old_images_dir, - new_images_dir, - e)) - - try: - os.rmdir(os.path.dirname(legacy_vm_working_path)) - except OSError: - pass - - try: - os.rmdir(legacy_project_files_path) - except OSError: - pass - return vm_id @asyncio.coroutine