mirror of
https://github.com/GNS3/gns3-server.git
synced 2025-06-17 06:48:18 +00:00
QEMU config disk - preserve file timestamp on zip unpack
(cherry picked from commit 5c44268476
)
This commit is contained in:
@ -37,6 +37,7 @@ from gns3server.utils import parse_version, shlex_quote
|
||||
from gns3server.utils.asyncio import subprocess_check_output, cancellable_wait_run_in_executor
|
||||
from .qemu_error import QemuError
|
||||
from .utils.qcow2 import Qcow2, Qcow2Error
|
||||
from .utils.ziputils import pack_zip, unpack_zip
|
||||
from ..adapters.ethernet_adapter import EthernetAdapter
|
||||
from ..error import NodeError, ImageMissingError
|
||||
from ..nios.nio_udp import NIOUDP
|
||||
@ -1675,8 +1676,8 @@ class QemuVM(BaseNode):
|
||||
os.mkdir(config_dir)
|
||||
if os.path.exists(zip_file):
|
||||
os.remove(zip_file)
|
||||
if await self._mcopy("-s", "-m", "x:/", config_dir) == 0:
|
||||
shutil.make_archive(zip_file[:-4], "zip", config_dir)
|
||||
if await self._mcopy("-s", "-m", "-n", "--", "x:/", config_dir) == 0:
|
||||
pack_zip(zip_file, config_dir)
|
||||
except OSError as e:
|
||||
log.error("Can't export config: {}".format(e))
|
||||
finally:
|
||||
@ -1692,12 +1693,12 @@ class QemuVM(BaseNode):
|
||||
try:
|
||||
shutil.rmtree(config_dir, ignore_errors=True)
|
||||
os.mkdir(config_dir)
|
||||
shutil.unpack_archive(zip_file, config_dir)
|
||||
unpack_zip(zip_file, config_dir)
|
||||
shutil.copyfile(getattr(self, "config_disk_image"), disk)
|
||||
config_files = [os.path.join(config_dir, fname)
|
||||
for fname in os.listdir(config_dir)]
|
||||
if config_files:
|
||||
if await self._mcopy("-s", "-m", *config_files, "x:/") != 0:
|
||||
if await self._mcopy("-s", "-m", "-o", "--", *config_files, "x:/") != 0:
|
||||
os.remove(disk)
|
||||
os.remove(zip_file)
|
||||
except OSError as e:
|
||||
|
Reference in New Issue
Block a user