aboutsummaryrefslogtreecommitdiffstats
path: root/vnfsdk_pkgtools/packager/utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'vnfsdk_pkgtools/packager/utils.py')
-rw-r--r--vnfsdk_pkgtools/packager/utils.py18
1 files changed, 15 insertions, 3 deletions
diff --git a/vnfsdk_pkgtools/packager/utils.py b/vnfsdk_pkgtools/packager/utils.py
index 78c7b0f..2d74943 100644
--- a/vnfsdk_pkgtools/packager/utils.py
+++ b/vnfsdk_pkgtools/packager/utils.py
@@ -14,7 +14,12 @@
#
import hashlib
+from io import BytesIO
import os
+import urlparse
+
+import requests
+
def _hash_value_for_file(f, hash_function, block_size=2**20):
while True:
@@ -27,7 +32,14 @@ def _hash_value_for_file(f, hash_function, block_size=2**20):
def cal_file_hash(root, path, algo):
- with open(os.path.join(root, path), 'rb') as fp:
- h = hashlib.new(algo)
+ h = hashlib.new(algo)
+ if urlparse.urlparse(path).scheme:
+ r = requests.get(path)
+ if r.status_code != 200:
+ raise ValueError('Server at {0} returned a {1} status code'
+ .format(path, r.status_code))
+ fp = BytesIO(r.content)
return _hash_value_for_file(fp, h)
-
+ else:
+ with open(os.path.join(root, path), 'rb') as fp:
+ return _hash_value_for_file(fp, h)