chromium/tools/infra/builder-cache-clobber.py

#!/usr/bin/env python3
# Copyright 2019 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

"""Clobbers all builder caches for a specific builder.

Note that this currently does not support windows.
"""

import argparse
import hashlib
import sys

import clobber_cache_utils


def main(raw_args):
  parser = argparse.ArgumentParser()
  clobber_cache_utils.add_common_args(parser)
  parser.add_argument('--builder', required=True)
  parser.add_argument('--bucket', required=True)
  parser.add_argument('--project', default='chromium')
  parser.add_argument('--pool', default=None)
  parser.add_argument('--bot-id', default=None)
  args = parser.parse_args(raw_args)

  # Matches http://bit.ly/2WZO33P
  string_to_hash = '%s/%s/%s' % (args.project, args.bucket, args.builder)
  h = hashlib.sha256(string_to_hash.encode('utf-8'))
  cache = 'builder_%s_v2' % (h.hexdigest())
  pool = args.pool or 'luci.%s.%s' % (args.project, args.bucket)

  clobber_cache_utils.clobber_caches(args.swarming_server,
                                     pool,
                                     '%s:%s' % (args.project, args.bucket),
                                     cache,
                                     'cache/builder',
                                     args.dry_run,
                                     bot_id=args.bot_id)

  return 0


if __name__ == '__main__':
  sys.exit(main(sys.argv[1:]))