diff options
author | Anthony G. Basile <blueness@gentoo.org> | 2015-09-12 14:17:49 -0400 |
---|---|---|
committer | Anthony G. Basile <blueness@gentoo.org> | 2015-09-12 17:01:00 -0400 |
commit | cd8a1249340c70ea0fce5fd9a1fb7f02a3dcf511 (patch) | |
tree | 6078b4fc3c5ec7c61495c827efe7d285e68364a1 | |
parent | utils/bundleit.sh: switch name to 'grs' (diff) | |
download | grss-cd8a1249340c70ea0fce5fd9a1fb7f02a3dcf511.tar.gz grss-cd8a1249340c70ea0fce5fd9a1fb7f02a3dcf511.tar.bz2 grss-cd8a1249340c70ea0fce5fd9a1fb7f02a3dcf511.zip |
grs/HashIt.py: make into inheritable class.
-rw-r--r-- | grs/HashIt.py | 59 | ||||
-rw-r--r-- | grs/TarIt.py | 49 | ||||
-rw-r--r-- | grs/__init__.py | 3 |
3 files changed, 69 insertions, 42 deletions
diff --git a/grs/HashIt.py b/grs/HashIt.py new file mode 100644 index 0000000..817364a --- /dev/null +++ b/grs/HashIt.py @@ -0,0 +1,59 @@ +#!/usr/bin/env python +# +# HashIt.py: this file is part of the GRS suite +# Copyright (C) 2015 Anthony G. Basile +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +import os +from grs.Execute import Execute + +class HashIt(): + """ Create a DIGEST file for certain tarballs, or ISOs. This class must + be inherited by a class which sets the medium_name and digest_name, + else we'll get an AttributeError exception. + """ + + def hashit(self): + """ Generate various hash values. We hijack the 'logfile' which will + actually be the file containing the hashes. + """ + # We need to be in the parent of the system's portage configroot because + # that's where we created the above tarball. This should be the workdir, + # but its probably safer to be pedantic here. + cwd = os.getcwd() + os.chdir(os.path.join(self.portage_configroot, '..')) + + # Note: this first cmd clobbers the contents + cmd = 'echo "# MD5 HASH"' + Execute(cmd, logfile=self.digest_name) + cmd = 'md5sum %s' % self.medium_name + Execute(cmd, timeout=60, logfile=self.digest_name) + + cmd = 'echo "# SHA1 HASH"' + Execute(cmd, logfile=self.digest_name) + cmd = 'sha1sum %s' % self.medium_name + Execute(cmd, timeout=60, logfile=self.digest_name) + + cmd = 'echo "# SHA512 HASH"' + Execute(cmd, logfile=self.digest_name) + cmd = 'sha512sum %s' % self.medium_name + Execute(cmd, timeout=60, logfile=self.digest_name) + + cmd = 'echo "# WHIRLPOOL HASH"' + Execute(cmd, logfile=self.digest_name) + cmd = 'whirlpooldeep %s' % self.medium_name + Execute(cmd, timeout=60, logfile=self.digest_name) + + os.chdir(cwd) diff --git a/grs/TarIt.py b/grs/TarIt.py index b63258b..d421cf2 100644 --- a/grs/TarIt.py +++ b/grs/TarIt.py @@ -20,9 +20,10 @@ import os from datetime import datetime from grs.Constants import CONST from grs.Execute import Execute +from grs.HashIt import HashIt -class TarIt(): - """ Create a tarball of the system and generate the hash values. """ +class TarIt(HashIt): + """ Create a tarball of the system. """ def __init__(self, name, portage_configroot = CONST.PORTAGE_CONFIGROOT, logfile = CONST.LOGFILE): self.portage_configroot = portage_configroot @@ -31,55 +32,21 @@ class TarIt(): self.year = str(datetime.now().year).zfill(4) self.month = str(datetime.now().month).zfill(2) self.day = str(datetime.now().day).zfill(2) - self.tarball_name = '%s-%s%s%s.tar.xz' % (name, self.year, self.month, self.day) - self.digest_name = '%s.DIGESTS' % self.tarball_name + self.medium_name = '%s-%s%s%s.tar.xz' % (name, self.year, self.month, self.day) + self.digest_name = '%s.DIGESTS' % self.medium_name def tarit(self, alt_name = None): # Create the tarball with the default name unless an alt_name is given. if alt_name: - self.tarball_name = '%s-%s%s%s.tar.xz' % (alt_name, self.year, self.month, self.day) - self.digest_name = '%s.DIGESTS' % self.tarball_name + self.medium_name = '%s-%s%s%s.tar.xz' % (alt_name, self.year, self.month, self.day) + self.digest_name = '%s.DIGESTS' % self.medium_name # We have to cd into the system's portage configroot and then out again. cwd = os.getcwd() os.chdir(self.portage_configroot) - tarball_path = os.path.join('..', self.tarball_name) + tarball_path = os.path.join('..', self.medium_name) # TODO: This needs to be generalized for systems that don't support xattrs xattr_opts = '--xattrs --xattrs-include=security.capability --xattrs-include=user.pax.flags' cmd = 'tar %s -Jcf %s .' % (xattr_opts, tarball_path) Execute(cmd, timeout=None, logfile=self.logfile) os.chdir(cwd) - - - def hashit(self): - """ Generate various hash values. We hijack the 'logfile' which will - actually be the file containing the hashes. - """ - # We need to be in the parent of the system's portage configroot because - # that's where we created the above tarball. This should be the workdir, - # but its probably safer to be pedantic here. - cwd = os.getcwd() - os.chdir(os.path.join(self.portage_configroot, '..')) - - # Note: this first cmd clobbers the contents - cmd = 'echo "# MD5 HASH"' - Execute(cmd, logfile=self.digest_name) - cmd = 'md5sum %s' % self.tarball_name - Execute(cmd, timeout=60, logfile=self.digest_name) - - cmd = 'echo "# SHA1 HASH"' - Execute(cmd, logfile=self.digest_name) - cmd = 'sha1sum %s' % self.tarball_name - Execute(cmd, timeout=60, logfile=self.digest_name) - - cmd = 'echo "# SHA512 HASH"' - Execute(cmd, logfile=self.digest_name) - cmd = 'sha512sum %s' % self.tarball_name - Execute(cmd, timeout=60, logfile=self.digest_name) - - cmd = 'echo "# WHIRLPOOL HASH"' - Execute(cmd, logfile=self.digest_name) - cmd = 'whirlpooldeep %s' % self.tarball_name - Execute(cmd, timeout=60, logfile=self.digest_name) - - os.chdir(cwd) diff --git a/grs/__init__.py b/grs/__init__.py index a011b2e..2ed47f7 100644 --- a/grs/__init__.py +++ b/grs/__init__.py @@ -16,10 +16,10 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -from grs.TarIt import TarIt from grs.Constants import CONST from grs.Daemon import Daemon from grs.Execute import Execute +from grs.HashIt import HashIt from grs.Interpret import Interpret from grs.Log import Log from grs.Kernel import Kernel @@ -30,4 +30,5 @@ from grs.Rotator import Rotator from grs.RunScript import RunScript from grs.Synchronize import Synchronize from grs.Seed import Seed +from grs.TarIt import TarIt from grs.WorldConf import WorldConf |