diff --git a/tools/deprecated-queues.py b/tools/deprecated-queues.py new file mode 100644 index 0000000000..dfd9df497c --- /dev/null +++ b/tools/deprecated-queues.py @@ -0,0 +1,61 @@ +#!/usr/bin/env python3 +# Copyright 2022 Acme Gating, LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import argparse +import requests + + +def main(): + parser = argparse.ArgumentParser( + description="Find where a project declares a queue") + parser.add_argument("url", help="Zuul URL") + parser.add_argument("tenant", help="Zuul tenant name") + parser.add_argument("--verbose", help="Display progress", + action='store_true') + args = parser.parse_args() + + projects = requests.get( + f'{args.url}/api/tenant/{args.tenant}/projects', + ).json() + + pipeline_contexts = set() + for tenant_project in projects: + if args.verbose: + print(f"Checking {tenant_project['name']}") + project = requests.get( + f"{args.url}/api/tenant/{args.tenant}/project/" + f"{tenant_project['name']}", + ).json() + + for config in project['configs']: + for pipeline in config['pipelines']: + if pipeline['queue_name']: + pipeline_contexts.add(repr(config['source_context'])) + + if pipeline_contexts: + print("The following project-pipeline stanzas define a queue.") + print("This syntax is deprecated and queue definitions should") + print("be moved to the project level.") + print("See https://zuul-ci.org/docs/zuul/latest/" + "releasenotes.html#relnotes-4-1-0-deprecation-notes") + for c in pipeline_contexts: + print(c) + else: + print("Good, no project-pipeline queue definitions found.") + + +if __name__ == '__main__': + main()