Add a test endpoint that allows us to manually create builds. Add access tokens to the build data.
This commit is contained in:
parent
c5ff08e57d
commit
78d2d6cad0
7 changed files with 99 additions and 14 deletions
|
@ -2,6 +2,8 @@ import logging
|
|||
import stripe
|
||||
import re
|
||||
import requests
|
||||
import urlparse
|
||||
import json
|
||||
|
||||
from flask import request, make_response, jsonify, abort, url_for
|
||||
from flask.ext.login import login_required, current_user, logout_user
|
||||
|
@ -190,14 +192,6 @@ def create_repo_api():
|
|||
repo = model.create_repository(namespace_name, repository_name, owner,
|
||||
visibility)
|
||||
|
||||
if request.values['initialize']:
|
||||
logger.debug('User requested repository initialization.')
|
||||
dockerfile_source = request.files['initializedata']
|
||||
dockerfile_id = user_files.store_file(dockerfile_source)
|
||||
|
||||
build_request = model.create_repository_build(repo, dockerfile_id)
|
||||
dockerfile_build_queue.put(json.dumps({'request_id': build_request.id}))
|
||||
|
||||
resp = make_response('Created', 201)
|
||||
resp.headers['Location'] = url_for('get_repo_api', namespace=namespace_name,
|
||||
repository=repository_name)
|
||||
|
@ -371,7 +365,7 @@ def get_repo_api(namespace, repository):
|
|||
@app.route('/api/repository/<path:repository>/build/', methods=['GET'])
|
||||
@parse_repository_name
|
||||
def get_repo_builds(namespace, repository):
|
||||
permission = AdministerRepositoryPermission(namespace, repository)
|
||||
permission = ModifyRepositoryPermission(namespace, repository)
|
||||
if permission.can():
|
||||
def build_view(build_obj):
|
||||
if build_obj.status_url:
|
||||
|
@ -400,6 +394,29 @@ def get_repo_builds(namespace, repository):
|
|||
abort(403) # Permissions denied
|
||||
|
||||
|
||||
@app.route('/api/repository/<path:repository>/build/', methods=['POST'])
|
||||
@parse_repository_name
|
||||
def request_repo_build(namespace, repository):
|
||||
permission = ModifyRepositoryPermission(namespace, repository)
|
||||
if permission.can():
|
||||
logger.debug('User requested repository initialization.')
|
||||
dockerfile_source = request.files['initializedata']
|
||||
dockerfile_id = user_files.store_file(dockerfile_source)
|
||||
|
||||
repo = model.get_repository(namespace, repository)
|
||||
token = model.create_access_token(repo, 'write')
|
||||
|
||||
host = urlparse.urlparse(request.url).netloc
|
||||
tag = '%s/%s/%s' % (host, repo.namespace, repo.name)
|
||||
build_request = model.create_repository_build(repo, token, dockerfile_id,
|
||||
tag)
|
||||
dockerfile_build_queue.put(json.dumps({'request_id': build_request.id}))
|
||||
|
||||
return make_response('Created', 201)
|
||||
|
||||
abort(403) # Permissions denied
|
||||
|
||||
|
||||
def role_view(repo_perm_obj):
|
||||
return {
|
||||
'role': repo_perm_obj.role.name
|
||||
|
|
Reference in a new issue