1
0
mirror of https://github.com/GNS3/gns3-server synced 2024-11-28 03:08:14 +00:00

Do not use the md5 from cache for a missing image

This commit is contained in:
Julien Duponchelle 2015-06-19 16:36:25 +02:00
parent 4aadfa3b67
commit a8e69d9a0b
2 changed files with 25 additions and 9 deletions

View File

@ -27,7 +27,7 @@ def md5sum(path):
:returns: Digest of the image :returns: Digest of the image
""" """
if path is None or len(path) == 0: if path is None or len(path) == 0 or not os.path.exists(path):
return None return None
try: try:
@ -36,6 +36,7 @@ def md5sum(path):
except OSError: except OSError:
pass pass
try:
m = hashlib.md5() m = hashlib.md5()
with open(path, 'rb') as f: with open(path, 'rb') as f:
while True: while True:
@ -44,6 +45,9 @@ def md5sum(path):
break break
m.update(buf) m.update(buf)
digest = m.hexdigest() digest = m.hexdigest()
except OSError as e:
log.error("Can't create digest of %s: %s", path, str(e))
return None
try: try:
with open('{}.md5sum'.format(path), 'w+') as f: with open('{}.md5sum'.format(path), 'w+') as f:

View File

@ -34,12 +34,24 @@ def test_md5sum(tmpdir):
def test_md5sum_existing_digest(tmpdir): def test_md5sum_existing_digest(tmpdir):
fake_img = str(tmpdir / 'hello') fake_img = str(tmpdir / 'hello')
with open(fake_img, 'w+') as f:
f.write('hello')
with open(str(tmpdir / 'hello.md5sum'), 'w+') as f: with open(str(tmpdir / 'hello.md5sum'), 'w+') as f:
f.write('aaaaa02abc4b2a76b9719d911017c592') f.write('aaaaa02abc4b2a76b9719d911017c592')
assert md5sum(fake_img) == 'aaaaa02abc4b2a76b9719d911017c592' assert md5sum(fake_img) == 'aaaaa02abc4b2a76b9719d911017c592'
def test_md5sum_existing_digest_but_missing_image(tmpdir):
fake_img = str(tmpdir / 'hello')
with open(str(tmpdir / 'hello.md5sum'), 'w+') as f:
f.write('aaaaa02abc4b2a76b9719d911017c592')
assert md5sum(fake_img) is None
def test_md5sum_none(tmpdir): def test_md5sum_none(tmpdir):
assert md5sum(None) is None assert md5sum(None) is None