From 26cf34e4a855c3619985eb6056b955882a1f0040 Mon Sep 17 00:00:00 2001
From: Fawzi Mohamed <fawzi.mohamed@fhi-berlin.mpg.de>
Date: Thu, 9 Nov 2017 21:00:11 +0100
Subject: [PATCH] improve generation of gids

compact_sha.sha512("blabla").gid("X")
---
 common/python/nomadcore/compact_sha.py | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/common/python/nomadcore/compact_sha.py b/common/python/nomadcore/compact_sha.py
index ed54b65..58fdaea 100644
--- a/common/python/nomadcore/compact_sha.py
+++ b/common/python/nomadcore/compact_sha.py
@@ -3,6 +3,7 @@ import hashlib
 import base64
 
 class CompactHash(object):
+    """compact sha can be used to calculate nomad gids"""
     def __init__(self, proto):
         self._proto = proto
 
@@ -18,14 +19,27 @@ class CompactHash(object):
             data=data.encode("utf-8")
         return self._proto.update(data)
 
+    def gid(self, prefix=""):
+        """returns a nomad gid with the given prefix"""
+        return prefix + self.b64digest()[:28]
+
     def __getattr__(self, name):
         return getattr(self._proto, name)
 
 def sha224(*args, **kwargs):
+    """CompactSha using sha224 for the checksums (non standard)"""
     return CompactHash(hashlib.sha224(*args,**kwargs))
 
-def sha512(*args, **kwargs):
-    return CompactHash(hashlib.sha512(*args,**kwargs))
+def sha512(baseStr=None,*args,**kwargs):
+    """Uses sha512 to calculate the gid (default in nomad)
+
+    If you pass and argument it is immediately added to the checksum.
+    Thus sha512("someString").gid("X") creates a gid in one go"""
+    sha=CompactHash(hashlib.sha512(*args,**kwargs))
+    if baseStr is not None:
+        sha.update(baseStr)
+    return sha
 
 def md5(*args, **kwargs):
+    """CompactSha using md5 for the checksums (non standard)"""
     return CompactHash(hashlib.md5(*args,**kwargs))
-- 
GitLab