From 3306bbe476fd4b069aad347afdd5b4e3564234aa Mon Sep 17 00:00:00 2001 From: Edward Lemur Date: Mon, 7 Oct 2019 19:58:25 +0000 Subject: [PATCH] depot_tools: Remove buildbucket.py Change-Id: I6b66880361a5fcbff4652b40adbe96da85ecabac Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/1845819 Auto-Submit: Edward Lesmes Commit-Queue: Edward Lesmes Commit-Queue: Andrii Shyshkalov Reviewed-by: Andrii Shyshkalov --- buildbucket.py | 187 ------------------------------------------------- 1 file changed, 187 deletions(-) delete mode 100755 buildbucket.py diff --git a/buildbucket.py b/buildbucket.py deleted file mode 100755 index 84b897ca42..0000000000 --- a/buildbucket.py +++ /dev/null @@ -1,187 +0,0 @@ -#!/usr/bin/env python -# Copyright (c) 2015 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -"""Tool for interacting with Buildbucket. - -Usage: - $ depot-tools-auth login https://cr-buildbucket.appspot.com - $ buildbucket.py \ - put \ - --bucket master.tryserver.chromium.linux \ - --builder my-builder \ - - Puts a build into buildbucket for my-builder on tryserver.chromium.linux. -""" - -from __future__ import print_function - -import argparse -import json -import urlparse -import os -import sys - -from third_party import httplib2 - -import auth - - -BUILDBUCKET_URL = 'https://cr-buildbucket.appspot.com' -BUILDBUCKET_API_URL = urlparse.urljoin( - BUILDBUCKET_URL, - '_ah/api/buildbucket/v1/builds', -) - - -def add_common_arguments(parser): - parser.add_argument( - '--response-json', - help=( - 'A path to which the response JSON will be written. ' - 'If no valid JSON is received, nothing will be written.' - ) - ) - - -def main(argv): - parser = argparse.ArgumentParser() - parser.add_argument( - '-v', - '--verbose', - action='store_true', - ) - subparsers = parser.add_subparsers(dest='command') - - get_parser = subparsers.add_parser('get') - add_common_arguments(get_parser) - get_parser.add_argument( - '--id', - help='The ID of the build to get the status of.', - required=True, - ) - - put_parser = subparsers.add_parser('put') - add_common_arguments(put_parser) - put_parser.add_argument( - '-b', - '--bucket', - help=( - 'The bucket to schedule the build on. Typically the master name, e.g.' - ' master.tryserver.chromium.linux.' - ), - required=True, - ) - put_parser.add_argument( - '-c', - '--changes', - help='A flie to load a JSON list of changes dicts from.', - ) - put_parser.add_argument( - '-n', - '--builder-name', - help='The builder to schedule the build on.', - required=True, - ) - put_parser.add_argument( - '-p', - '--properties', - help=( - 'A file to load a JSON dict of properties from. Use "-" to pipe JSON ' - 'from another command.' - ), - ) - - retry_parser = subparsers.add_parser('retry') - add_common_arguments(retry_parser) - retry_parser.add_argument( - '--id', - help='The ID of the build to retry.', - required=True, - ) - - args = parser.parse_args() - - 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: - # Allow using pipes to stream properties from another command, e.g. - # echo '{"foo": "bar", "baz": 42}' | buildbucket.py -p - - if args.properties == '-': - properties.update(json.load(sys.stdin)) - else: - 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 - elif args.command == 'retry': - method = 'PUT' - url = '%s/%s/retry' % (BUILDBUCKET_API_URL, args.id) - - authenticator = auth.get_authenticator_for_host( - BUILDBUCKET_URL, - auth.make_auth_config(use_oauth2=True), - ) - http = authenticator.authorize(httplib2.Http()) - http.force_exception_to_status_code = True - - if args.verbose: - print('Request URL:', url) - print('Request method:', method) - print('Request body:', body) - - response, content = http.request( - url, - method, - body=body, - headers={'Content-Type': 'application/json'}, - ) - - if args.verbose: - print('Response:', response) - print('Content:', content) - - try: - content_json = json.loads(content) - if args.response_json: - with open(args.response_json, 'w') as response_json_file: - response_json_file.write(content) - build_url = content_json['build']['url'] - except (ValueError, TypeError, KeyError): - pass - else: - print('Build: %s' % build_url) - - return response.status != 200 - - -if __name__ == '__main__': - sys.exit(main(sys.argv))