summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Brown <ben.brown@codethink.co.uk>2017-05-17 12:30:48 +0100
committerBen Brown <ben.brown@codethink.co.uk>2017-05-17 12:42:23 +0100
commit31495f0238194d6a93d52787fe13e7abc2605a29 (patch)
tree767ad559259afdcc65cb67200a7548d485456337
parent765366516c07f85df65a400f103bd8b7bd107032 (diff)
downloadybd-staging/benbrown/ngi-rpm-caching.tar.gz
Allow rpm uploads without having to tarstaging/benbrown/ngi-rpm-caching
-rwxr-xr-xkbas/__main__.py10
1 files changed, 8 insertions, 2 deletions
diff --git a/kbas/__main__.py b/kbas/__main__.py
index 7629710..80de7ef 100755
--- a/kbas/__main__.py
+++ b/kbas/__main__.py
@@ -23,7 +23,7 @@ from time import strftime, gmtime
from datetime import datetime
import tempfile
from bottle import Bottle, request, response, template, static_file
-from subprocess import call
+from subprocess import call, check_output
from ybd import app, cache
@@ -152,7 +152,13 @@ class KeyedBinaryArtifactServer(object):
with open(artifact, "w") as f:
f.write(upload.value)
- if call(['tar', 'tf', artifact]):
+ if artifact.endswith('.rpm'):
+ ftype = check_output(
+ ['file', '--brief', '--mime-type', artifact]).strip()
+ if ftype != "application/x-rpm":
+ app.log('UPLOAD', 'ERROR: not a valid rpm:', artifact)
+ raise TypeError("Not a valid rpm")
+ elif call(['tar', 'tf', artifact]):
app.log('UPLOAD', 'ERROR: not a valid tarfile:', artifact)
raise
checksum = cache.md5(artifact)