Add support for build status tags, which link to the Quay.io repo

This commit is contained in:
Joseph Schorr 2014-02-28 16:23:36 -05:00
parent 39eaca346d
commit 3f806b10c2
16 changed files with 228 additions and 34 deletions

View file

@ -1,5 +1,6 @@
import logging
import stripe
import os
from flask import (abort, redirect, request, url_for, make_response, Response,
Blueprint)
@ -13,7 +14,7 @@ from util.invoice import renderInvoiceToPdf
from util.seo import render_snapshot
from util.cache import no_cache
from endpoints.common import common_login, render_page_template
from util.names import parse_repository_name
logger = logging.getLogger(__name__)
@ -196,3 +197,39 @@ def confirm_recovery():
return redirect(url_for('web.user'))
else:
abort(403)
@web.route('/repository/<path:repository>/status', methods=['GET'])
@parse_repository_name
@no_cache
def build_status_badge(namespace, repository):
token = request.args.get('token', None)
is_public = model.repository_is_public(namespace, repository)
if not is_public:
repo = model.get_repository(namespace, repository)
if not repo or token != repo.badge_token:
abort(404)
# Lookup the tags for the repository.
tags = model.list_repository_tags(namespace, repository)
# Lookup the current/recent build.
status = 'none'
build = model.get_recent_repository_build(namespace, repository)
if build:
if build.phase == 'error':
status = 'failed'
elif build.phase == 'complete':
pass
else:
status = 'building'
else:
if list(tags):
status = 'ready'
with open(os.path.join(app.root_path, 'buildstatus', status + '.svg')) as f:
svg = f.read()
response = make_response(svg)
response.content_type = 'image/svg+xml'
return response