aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnthony G. Basile <blueness@gentoo.org>2015-09-12 14:17:49 -0400
committerAnthony G. Basile <blueness@gentoo.org>2015-09-12 17:01:00 -0400
commitcd8a1249340c70ea0fce5fd9a1fb7f02a3dcf511 (patch)
tree6078b4fc3c5ec7c61495c827efe7d285e68364a1
parentutils/bundleit.sh: switch name to 'grs' (diff)
downloadgrss-cd8a1249340c70ea0fce5fd9a1fb7f02a3dcf511.tar.gz
grss-cd8a1249340c70ea0fce5fd9a1fb7f02a3dcf511.tar.bz2
grss-cd8a1249340c70ea0fce5fd9a1fb7f02a3dcf511.zip
grs/HashIt.py: make into inheritable class.
-rw-r--r--grs/HashIt.py59
-rw-r--r--grs/TarIt.py49
-rw-r--r--grs/__init__.py3
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