aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBryn M. Reeves <bmr@redhat.com>2015-11-19 19:07:50 +0000
committerBryn M. Reeves <bmr@redhat.com>2015-12-04 15:43:15 +0000
commit7f2727749d0c37095a20c5d4cf6f9a2e086a2375 (patch)
treee36e207a423df9f9714d09bd0a6afe0877535e44
parent6038fdf8617319a13b0b42f3283ec2066d54b283 (diff)
downloadsos-7f2727749d0c37095a20c5d4cf6f9a2e086a2375.tar.gz
[policies] refactor Policy.display_results() args
Pass explicit archive and build directory arguments to the Policy.display_results() method rather than a single path name argument and a boolean to indicate whether it is an archive file or a build directory path. Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
-rw-r--r--sos/policies/__init__.py24
-rw-r--r--sos/sosreport.py12
2 files changed, 23 insertions, 13 deletions
diff --git a/sos/policies/__init__.py b/sos/policies/__init__.py
index bf9afde0..5b0b7063 100644
--- a/sos/policies/__init__.py
+++ b/sos/policies/__init__.py
@@ -285,11 +285,11 @@ No changes will be made to system configuration.
considered to be a superuser"""
return (os.getuid() == 0)
- def _create_checksum(self, hash_name, final_filename=None):
- if not final_filename:
+ def _create_checksum(self, hash_name, archive=None):
+ if not archive:
return False
- archive_fp = open(final_filename, 'rb')
+ archive_fp = open(archive, 'rb')
digest = hashlib.new(hash_name)
digest.update(archive_fp.read())
archive_fp.close()
@@ -300,29 +300,33 @@ No changes will be made to system configuration.
to use"""
return "md5"
- def display_results(self, final_filename=None, build=False):
+ def display_results(self, archive, directory):
+ # Display results is called from the tail of SoSReport.final_work()
+ #
+ # Logging is already shutdown and all terminal output must use the
+ # print() call.
# make sure a report exists
- if not final_filename:
+ if not archive and not directory:
return False
self._print()
hash_name = self.get_preferred_hash_name()
- if not build:
+ if archive:
# store checksum into file
- fp = open(final_filename + "." + hash_name, "w")
- checksum = self._create_checksum(hash_name, final_filename)
+ fp = open(archive + "." + hash_name, "w")
+ checksum = self._create_checksum(hash_name, archive)
if checksum:
fp.write(checksum + "\n")
fp.close()
self._print(_("Your sosreport has been generated and saved "
- "in:\n %s") % final_filename)
+ "in:\n %s") % archive)
else:
checksum = None
self._print(_("sosreport build tree is located at : %s" %
- final_filename))
+ directory))
self._print()
if checksum:
diff --git a/sos/sosreport.py b/sos/sosreport.py
index a1f1b96c..f3e0f346 100644
--- a/sos/sosreport.py
+++ b/sos/sosreport.py
@@ -1436,6 +1436,10 @@ class SoSReport(object):
# this must come before archive creation to ensure that log
# files are closed and cleaned up at exit.
self._finish_logging()
+
+ archive = None # archive path
+ directory = None # report directory path (--build)
+
# package up the results for the support organization
if not self.opts.build:
old_umask = os.umask(0o077)
@@ -1443,7 +1447,7 @@ class SoSReport(object):
print(_("Creating compressed archive..."))
# compression could fail for a number of reasons
try:
- final_filename = self.archive.finalize(
+ archive = self.archive.finalize(
self.opts.compression_type)
except (OSError, IOError) as e:
if e.errno in fatal_fs_errors:
@@ -1460,8 +1464,10 @@ class SoSReport(object):
finally:
os.umask(old_umask)
else:
- final_filename = self.archive.get_archive_path()
- self.policy.display_results(final_filename, build=self.opts.build)
+ directory = self.archive.get_archive_path()
+
+ self.policy.display_results(archive, directory)
+
self.tempfile_util.clean()
return True