Merge pull request #2496 from charltonaustin/fix_dockerfile_upload_api

fix(endpoints): appending dockerfile to api call
This commit is contained in:
Charlton Austin 2017-03-30 13:39:15 -04:00 committed by GitHub
commit 3a72a8ef9c
2 changed files with 15 additions and 8 deletions

View file

@ -4,9 +4,9 @@ import hashlib
import json import json
import logging import logging
import os import os
from urlparse import urlparse
from flask import request from flask import request
from urlparse import urlparse
from app import userfiles as user_files, build_logs, log_archive, dockerfile_build_queue from app import userfiles as user_files, build_logs, log_archive, dockerfile_build_queue
from auth.permissions import (ReadRepositoryPermission, ModifyRepositoryPermission, from auth.permissions import (ReadRepositoryPermission, ModifyRepositoryPermission,
@ -24,7 +24,6 @@ from endpoints.building import start_build, PreparedBuild, MaximumBuildsQueuedEx
from endpoints.exception import Unauthorized, NotFound, InvalidRequest from endpoints.exception import Unauthorized, NotFound, InvalidRequest
from util.names import parse_robot_username from util.names import parse_robot_username
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -312,12 +311,19 @@ class RepositoryBuildList(RepositoryParamResource):
def get_dockerfile_context(request_json): def get_dockerfile_context(request_json):
context = request_json['context'] if 'context' in request_json else os.path.sep context = request_json['context'] if 'context' in request_json else os.path.sep
if 'subdirectory' in request_json: if 'subdirectory' in request_json:
subdir = request_json["subdirectory"] subdir = request_json['subdirectory']
context = subdir
if not subdir.endswith(os.path.sep):
subdir += os.path.sep
subdir += 'Dockerfile'
else: else:
if context.endswith(os.path.sep): if context.endswith(os.path.sep):
subdir = context + "Dockerfile" subdir = context + 'Dockerfile'
else: else:
subdir = context + os.path.sep + "Dockerfile" subdir = context + os.path.sep + 'Dockerfile'
return context, subdir return context, subdir
@resource('/v1/repository/<apirepopath:repository>/build/<build_uuid>') @resource('/v1/repository/<apirepopath:repository>/build/<build_uuid>')

View file

@ -4,9 +4,10 @@ from endpoints.api.build import RepositoryBuildList
@pytest.mark.parametrize('request_json,subdir,context', [ @pytest.mark.parametrize('request_json,subdir,context', [
({}, "/Dockerfile", "/"), ({}, '/Dockerfile', '/'),
({"context": "/some_context"}, "/some_context/Dockerfile", "/some_context"), ({'context': '/some_context'}, '/some_context/Dockerfile', '/some_context'),
({"subdirectory": "/some_subdir/Dockerfile"}, "/some_subdir/Dockerfile", "/"), ({'subdirectory': 'some_context'}, 'some_context/Dockerfile', 'some_context'),
({'subdirectory': 'some_context/'}, 'some_context/Dockerfile', 'some_context/'),
]) ])
def test_extract_dockerfile_args(request_json, subdir, context): def test_extract_dockerfile_args(request_json, subdir, context):
actual_context, actual_subdir = RepositoryBuildList.get_dockerfile_context(request_json) actual_context, actual_subdir = RepositoryBuildList.get_dockerfile_context(request_json)