summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam Thursfield <sam.thursfield@codethink.co.uk>2015-06-15 18:27:59 +0100
committerSam Thursfield <sam.thursfield@codethink.co.uk>2015-06-15 18:27:59 +0100
commitf9a2fe043c0fae9e611ae72415be386ac23c097e (patch)
tree0e78c04ac279f351f57a0bf72a2a0ea27b101962
parent1d8df5e693b67aa1292be8a49000b0274bc14454 (diff)
downloadmorph-cache-server-f9a2fe043c0fae9e611ae72415be386ac23c097e.tar.gz
scripts/submit-build: Support reading metadata from Morph artifacts
-rwxr-xr-xscripts/submit-build21
1 files changed, 18 insertions, 3 deletions
diff --git a/scripts/submit-build b/scripts/submit-build
index 7c1e5b5..9b2b9b4 100755
--- a/scripts/submit-build
+++ b/scripts/submit-build
@@ -27,6 +27,7 @@ import requests
import argparse
import hashlib
import logging
+import json
import os
import re
import sys
@@ -81,6 +82,16 @@ def filename_looks_like_a_baserock_artifact(filename):
return (match is not None)
+def parse_morph_artifact_metadata(text):
+ try:
+ data = json.loads(text)
+ except ValueError as e:
+ # Probably not JSON at all.
+ raise MetadataError(e.message)
+
+ return data['repo'], data['sha1']
+
+
def parse_ybd_artifact_metadata(text):
lines = text.splitlines()
@@ -112,7 +123,8 @@ def parse_ybd_artifact_metadata(text):
def read_metadata_from_artifact(artifact_tarfile):
members = artifact_tarfile.getmembers()
metadata_files = sorted(t for t in members if
- t.name.startswith('./baserock'))
+ t.name.startswith('./baserock') or
+ t.name.startswith('baserock'))
if len(metadata_files) == 0:
raise MetadataError(
@@ -139,9 +151,12 @@ def read_metadata_from_artifact(artifact_tarfile):
"Unable to read %s from artifact." % metadata_file.name)
metadata_text = f.read()
- repo, ref = parse_ybd_artifact_metadata(metadata_text)
+ try:
+ repo, sha1 = parse_morph_artifact_metadata(metadata_text)
+ except MetadataError:
+ repo, sha1 = parse_ybd_artifact_metadata(metadata_text)
- return repo, ref
+ return repo, sha1
def checksum(filename, hasher):