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
This commit is contained in:
Miles Gould 2016-04-04 17:27:35 +01:00
parent 1121887d19
commit 3f715a20fd
2 changed files with 6 additions and 3 deletions
ironic_python_agent

@ -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)

@ -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'))