From 3f715a20fd253aa6ad065f90101c0eb60d34625c Mon Sep 17 00:00:00 2001 From: Miles Gould <mgould@redhat.com> Date: Mon, 4 Apr 2016 17:27:35 +0100 Subject: [PATCH] Set modification time in tarfile of ramdisk logs If we do not set this explicitly, tar will warn "journal: implausibly old time stamp" when the user tries to untar the log files. Change-Id: I4a5a1ffd4eeca9697cdcf16e02d3ff3c22d7132c --- ironic_python_agent/inspector.py | 2 ++ ironic_python_agent/tests/unit/test_inspector.py | 7 ++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/ironic_python_agent/inspector.py b/ironic_python_agent/inspector.py index 1ea2e3d1f..a13e435f7 100644 --- a/ironic_python_agent/inspector.py +++ b/ironic_python_agent/inspector.py @@ -17,6 +17,7 @@ import base64 import io import json import tarfile +import time import netaddr from oslo_concurrency import processutils @@ -287,6 +288,7 @@ def collect_logs(data, failures): with tarfile.open(fileobj=fp, mode='w:gz') as tar: tarinfo = tarfile.TarInfo('journal') tarinfo.size = len(out) + tarinfo.mtime = time.time() tar.addfile(tarinfo, journal) fp.seek(0) diff --git a/ironic_python_agent/tests/unit/test_inspector.py b/ironic_python_agent/tests/unit/test_inspector.py index bd70763ca..ea76da1db 100644 --- a/ironic_python_agent/tests/unit/test_inspector.py +++ b/ironic_python_agent/tests/unit/test_inspector.py @@ -386,12 +386,13 @@ class TestCollectLogs(unittest.TestCase): mock_execute.return_value = (contents, '') data = {} - inspector.collect_logs(data, None) + with mock.patch('time.time', return_value=42): + inspector.collect_logs(data, None) res = io.BytesIO(base64.b64decode(data['logs'])) with tarfile.open(fileobj=res) as tar: - members = [(m.name, m.size) for m in tar] - self.assertEqual([('journal', len(contents))], members) + members = [(m.name, m.size, m.mtime) for m in tar] + self.assertEqual([('journal', len(contents), 42)], members) member = tar.extractfile('journal') self.assertEqual(expected_contents, member.read().decode('utf-8'))