[git-cl-try] accept buckets from builders-map app
Context:
https://bugs.chromium.org/p/chromium/issues/detail?id=800355#c22
Prepare git-cl-try to a new format of builders-map.appspot.com response
where each entry contains buckets, as opposed to masters.
Bug: 800355
Change-Id: I5a90c6c4860a7e1fca843067c477a272d782cba1
Reviewed-on: https://chromium-review.googlesource.com/885100
Commit-Queue: Nodir Turakulov <nodir@chromium.org>
Reviewed-by: Aaron Gable <agable@chromium.org>
Reviewed-by: Andrii Shyshkalov <tandrii@chromium.org>
diff --git a/git_cl.py b/git_cl.py
index 311b637..39a4636 100755
--- a/git_cl.py
+++ b/git_cl.py
@@ -458,14 +458,19 @@
bucket_map = {}
for builder in builders:
- masters = builders_map.get(builder, [])
- if not masters:
- return None, ('No matching master for builder %s.' % builder)
- if len(masters) > 1:
- return None, ('The builder name %s exists in multiple masters %s.' %
- (builder, masters))
- bucket = _prefix_master(masters[0])
- bucket_map.setdefault(bucket, {})[builder] = []
+ builder_info = builders_map.get(builder, {})
+ if isinstance(builder_info, list):
+ # This is a list of masters, legacy mode.
+ # TODO(nodir): remove this code path.
+ buckets = map(_prefix_master, builder_info)
+ else:
+ buckets = builder_info.get('buckets') or []
+ if not buckets:
+ return None, ('No matching bucket for builder %s.' % builder)
+ if len(buckets) > 1:
+ return None, ('The builder name %s exists in multiple buckets %s.' %
+ (builder, buckets))
+ bucket_map.setdefault(buckets[0], {})[builder] = []
return bucket_map, None