diff options
author | Sam Thursfield <sam.thursfield@codethink.co.uk> | 2015-06-15 18:27:59 +0100 |
---|---|---|
committer | Sam Thursfield <sam.thursfield@codethink.co.uk> | 2015-06-15 18:27:59 +0100 |
commit | f9a2fe043c0fae9e611ae72415be386ac23c097e (patch) | |
tree | 0e78c04ac279f351f57a0bf72a2a0ea27b101962 | |
parent | 1d8df5e693b67aa1292be8a49000b0274bc14454 (diff) | |
download | morph-cache-server-f9a2fe043c0fae9e611ae72415be386ac23c097e.tar.gz |
scripts/submit-build: Support reading metadata from Morph artifacts
-rwxr-xr-x | scripts/submit-build | 21 |
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): |