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