| Index: buildbucket.py
|
| diff --git a/buildbucket.py b/buildbucket.py
|
| index f00cc8f9d10124abdcf192f8ebf2478045ee00fb..bb7d61afc3ee38af601e6baa63c7cbeebe593af1 100755
|
| --- a/buildbucket.py
|
| +++ b/buildbucket.py
|
| @@ -27,7 +27,7 @@ import auth
|
|
|
|
|
| BUILDBUCKET_URL = 'https://cr-buildbucket.appspot.com'
|
| -PUT_BUILD_URL = urlparse.urljoin(
|
| +BUILDBUCKET_API_URL = urlparse.urljoin(
|
| BUILDBUCKET_URL,
|
| '_ah/api/buildbucket/v1/builds',
|
| )
|
| @@ -41,6 +41,12 @@ def main(argv):
|
| action='store_true',
|
| )
|
| subparsers = parser.add_subparsers(dest='command')
|
| + get_parser = subparsers.add_parser('get')
|
| + get_parser.add_argument(
|
| + '--id',
|
| + help='The ID of the build to get the status of.',
|
| + required=True,
|
| + )
|
| put_parser = subparsers.add_parser('put')
|
| put_parser.add_argument(
|
| '-b',
|
| @@ -68,26 +74,41 @@ def main(argv):
|
| help='A file to load a JSON dict of properties from.',
|
| )
|
| args = parser.parse_args()
|
| - # TODO(smut): When more commands are implemented, refactor this.
|
| - assert args.command == 'put'
|
| -
|
| - changes = []
|
| - if args.changes:
|
| - try:
|
| - with open(args.changes) as fp:
|
| - changes.extend(json.load(fp))
|
| - except (TypeError, ValueError):
|
| - sys.stderr.write('%s contained invalid JSON list.\n' % args.changes)
|
| - raise
|
| -
|
| - properties = {}
|
| - if args.properties:
|
| - try:
|
| - with open(args.properties) as fp:
|
| - properties.update(json.load(fp))
|
| - except (TypeError, ValueError):
|
| - sys.stderr.write('%s contained invalid JSON dict.\n' % args.properties)
|
| - raise
|
| +
|
| + body = None
|
| +
|
| + if args.command == 'get':
|
| + method = 'GET'
|
| + url = '%s/%s' % (BUILDBUCKET_API_URL, args.id)
|
| + elif args.command == 'put':
|
| + changes = []
|
| + if args.changes:
|
| + try:
|
| + with open(args.changes) as fp:
|
| + changes.extend(json.load(fp))
|
| + except (TypeError, ValueError):
|
| + sys.stderr.write('%s contained invalid JSON list.\n' % args.changes)
|
| + raise
|
| +
|
| + properties = {}
|
| + if args.properties:
|
| + try:
|
| + with open(args.properties) as fp:
|
| + properties.update(json.load(fp))
|
| + except (TypeError, ValueError):
|
| + sys.stderr.write('%s contained invalid JSON dict.\n' % args.properties)
|
| + raise
|
| +
|
| + body = json.dumps({
|
| + 'bucket': args.bucket,
|
| + 'parameters_json': json.dumps({
|
| + 'builder_name': args.builder_name,
|
| + 'changes': changes,
|
| + 'properties': properties,
|
| + }),
|
| + })
|
| + method = 'PUT'
|
| + url = BUILDBUCKET_API_URL
|
|
|
| authenticator = auth.get_authenticator_for_host(
|
| BUILDBUCKET_URL,
|
| @@ -96,16 +117,9 @@ def main(argv):
|
| http = authenticator.authorize(httplib2.Http())
|
| http.force_exception_to_status_code = True
|
| response, content = http.request(
|
| - PUT_BUILD_URL,
|
| - 'PUT',
|
| - body=json.dumps({
|
| - 'bucket': args.bucket,
|
| - 'parameters_json': json.dumps({
|
| - 'builder_name': args.builder_name,
|
| - 'changes': changes,
|
| - 'properties': properties,
|
| - }),
|
| - }),
|
| + url,
|
| + method,
|
| + body=body,
|
| headers={'Content-Type': 'application/json'},
|
| )
|
|
|
|
|