all: children: zuul_unreachable: hosts: {} hosts: ubuntu-noble: ansible_connection: ssh ansible_host: 200.225.47.50 ansible_port: 22 ansible_python_interpreter: null ansible_user: zuul enable_fips: false nodepool: az: nova cloud: openmetal external_id: null host_id: 2cfc9a98d3bfab00eb00f06def28267733fba454ef106f79cde0c4eb interface_ip: 200.225.47.50 label: ubuntu-noble-8GB node_properties: {} private_ipv4: 200.225.47.50 private_ipv6: null provider: opendev.org%2Fopendev%2Fzuul-providers/openmetal-iad3-main public_ipv4: 200.225.47.50 public_ipv6: '' region: IAD3 slot: null tox_constraints_file: '{{ ansible_user_dir }}/src/opendev.org/openstack/requirements/upper-constraints.txt' tox_environment: NOSE_HTML_OUT_FILE: nose_results.html NOSE_WITH_HTML_OUTPUT: 1 NOSE_WITH_XUNIT: 1 tox_envlist: translations zuul_node: az: nova cloud: openmetal external_id: null host_id: 2cfc9a98d3bfab00eb00f06def28267733fba454ef106f79cde0c4eb interface_ip: 200.225.47.50 label: ubuntu-noble-8GB node_properties: {} private_ipv4: '' private_ipv6: null provider: opendev.org%2Fopendev%2Fzuul-providers/openmetal-iad3-main public_ipv4: 200.225.47.50 public_ipv6: '' region: IAD3 reuse: false slot: null uuid: 08f3d498cd6746c0af0ff2a79a761c22 vars: enable_fips: false tox_constraints_file: '{{ ansible_user_dir }}/src/opendev.org/openstack/requirements/upper-constraints.txt' tox_environment: NOSE_HTML_OUT_FILE: nose_results.html NOSE_WITH_HTML_OUTPUT: 1 NOSE_WITH_XUNIT: 1 tox_envlist: translations zuul: _inheritance_path: - '' - '' - '' - '' - '' - '' ansible_version: '11' attempts: 1 branch: master build: 651a921bc59b43eb939457845a5f03ac build_refs: - branch: master change: '998324' change_message: "Fix babel configs and add translations tox target\n\nThe watcher-dashboard codebase marks user-visible strings for\ntranslation using _() in Python (via gettext_lazy) and\n{% trans %} in Django templates. These markers tell the\ntranslation toolchain which strings need to be translated\ninto other languages.\n\nThe babel config files (babel-django.cfg and babel-djangojs.cfg)\ninstruct pybabel on where to scan for these marked strings and\nhow to extract them into .pot (Portable Object Template) files.\nTranslators then use these .pot files to produce per-language\n.po files containing the actual translations.\n\nThe existing babel configs had two problems:\n\n1. Glob patterns were hardcoded to watcher_dashboard/ prefixes\n instead of using generic ** globs. The Horizon management\n command (extract_messages) already passes --input-dirs to\n scope extraction, so the config-level prefixes were redundant\n and inconsistent with other Horizon plugins (e.g. manila-ui).\n\n2. babel-django.cfg was missing the .csv template extraction\n rule that Horizon and other plugins include.\n\nTwo Zuul jobs handle translations for OpenStack projects:\n\n- upstream-translation-update (runs post-merge): extracts\n strings via pybabel, generates .pot files, and uploads\n them to the translation platform (translate.openstack.org).\n- propose-translation-update (runs periodically): downloads\n translated .po files from the platform and proposes a\n commit back to the repository.\n\nBoth jobs are defined in openstack/project-config and enabled\nfor watcher-dashboard via the translation-jobs-master-stable\ntemplate in project-config/zuul.d/projects.yaml. They were\nalready running but could not extract any UI strings due to\nthe broken babel configs, which is why only release notes\nappear on translate.openstack.org despite 54 languages being\nconfigured.\n\nThis change also:\n- Creates the watcher_dashboard/locale/ directory needed to\n store extracted .pot files and translated .po files.\n- Adds a [testenv:translations] tox target (matching Horizon's\n pattern) to run extraction and compilation locally via:\n tox -e translations\n The generated .pot files are copied to .tox/translations/log/\n \ so that the Zuul fetch-tox-output role picks them up as\n downloadable artifacts automatically.\n- Adds *.pot to .gitignore since .pot files are generated\n artifacts (matching Horizon's .gitignore pattern). The\n *.mo pattern was already present.\n- Adds a watcher-dashboard-tox-translations Zuul job to\n check and gate pipelines that runs the translations tox\n \ target.\n- Adds bindep.txt with gettext dependency so that msgfmt\n (required by Django's compilemessages) is available on\n Zuul nodes.\n\nGenerated-By: Claude Opus 4.6\nChange-Id: I5676316822de9ce9e17c5d762873e8266fd94b26\nSigned-off-by: Chandan Kumar (raukadah) \n" change_url: https://review.opendev.org/c/openstack/watcher-dashboard/+/998324 commit_id: 0cb4fde6ca24874eb43cbbf607fcaf7db1dd9866 patchset: '4' project: canonical_hostname: opendev.org canonical_name: opendev.org/openstack/watcher-dashboard name: openstack/watcher-dashboard short_name: watcher-dashboard src_dir: src/opendev.org/openstack/watcher-dashboard src_dir: src/opendev.org/openstack/watcher-dashboard topic: null buildset: 04601e7acbbc47bfbec92ae8c79f8c84 buildset_refs: - branch: master change: '998324' change_message: "Fix babel configs and add translations tox target\n\nThe watcher-dashboard codebase marks user-visible strings for\ntranslation using _() in Python (via gettext_lazy) and\n{% trans %} in Django templates. These markers tell the\ntranslation toolchain which strings need to be translated\ninto other languages.\n\nThe babel config files (babel-django.cfg and babel-djangojs.cfg)\ninstruct pybabel on where to scan for these marked strings and\nhow to extract them into .pot (Portable Object Template) files.\nTranslators then use these .pot files to produce per-language\n.po files containing the actual translations.\n\nThe existing babel configs had two problems:\n\n1. Glob patterns were hardcoded to watcher_dashboard/ prefixes\n instead of using generic ** globs. The Horizon management\n command (extract_messages) already passes --input-dirs to\n scope extraction, so the config-level prefixes were redundant\n and inconsistent with other Horizon plugins (e.g. manila-ui).\n\n2. babel-django.cfg was missing the .csv template extraction\n rule that Horizon and other plugins include.\n\nTwo Zuul jobs handle translations for OpenStack projects:\n\n- upstream-translation-update (runs post-merge): extracts\n strings via pybabel, generates .pot files, and uploads\n them to the translation platform (translate.openstack.org).\n- propose-translation-update (runs periodically): downloads\n translated .po files from the platform and proposes a\n commit back to the repository.\n\nBoth jobs are defined in openstack/project-config and enabled\nfor watcher-dashboard via the translation-jobs-master-stable\ntemplate in project-config/zuul.d/projects.yaml. They were\nalready running but could not extract any UI strings due to\nthe broken babel configs, which is why only release notes\nappear on translate.openstack.org despite 54 languages being\nconfigured.\n\nThis change also:\n- Creates the watcher_dashboard/locale/ directory needed to\n store extracted .pot files and translated .po files.\n- Adds a [testenv:translations] tox target (matching Horizon's\n pattern) to run extraction and compilation locally via:\n tox -e translations\n The generated .pot files are copied to .tox/translations/log/\n \ so that the Zuul fetch-tox-output role picks them up as\n downloadable artifacts automatically.\n- Adds *.pot to .gitignore since .pot files are generated\n artifacts (matching Horizon's .gitignore pattern). The\n *.mo pattern was already present.\n- Adds a watcher-dashboard-tox-translations Zuul job to\n check and gate pipelines that runs the translations tox\n \ target.\n- Adds bindep.txt with gettext dependency so that msgfmt\n (required by Django's compilemessages) is available on\n Zuul nodes.\n\nGenerated-By: Claude Opus 4.6\nChange-Id: I5676316822de9ce9e17c5d762873e8266fd94b26\nSigned-off-by: Chandan Kumar (raukadah) \n" change_url: https://review.opendev.org/c/openstack/watcher-dashboard/+/998324 commit_id: 0cb4fde6ca24874eb43cbbf607fcaf7db1dd9866 patchset: '4' project: canonical_hostname: opendev.org canonical_name: opendev.org/openstack/watcher-dashboard name: openstack/watcher-dashboard short_name: watcher-dashboard src_dir: src/opendev.org/openstack/watcher-dashboard src_dir: src/opendev.org/openstack/watcher-dashboard topic: null change: '998324' change_message: "Fix babel configs and add translations tox target\n\nThe watcher-dashboard codebase marks user-visible strings for\ntranslation using _() in Python (via gettext_lazy) and\n{% trans %} in Django templates. These markers tell the\ntranslation toolchain which strings need to be translated\ninto other languages.\n\nThe babel config files (babel-django.cfg and babel-djangojs.cfg)\ninstruct pybabel on where to scan for these marked strings and\nhow to extract them into .pot (Portable Object Template) files.\nTranslators then use these .pot files to produce per-language\n.po files containing the actual translations.\n\nThe existing babel configs had two problems:\n\n1. Glob patterns were hardcoded to watcher_dashboard/ prefixes\n instead of using generic ** globs. The Horizon management\n command (extract_messages) already passes --input-dirs to\n scope extraction, so the config-level prefixes were redundant\n and inconsistent with other Horizon plugins (e.g. manila-ui).\n\n2. babel-django.cfg was missing the .csv template extraction\n rule that Horizon and other plugins include.\n\nTwo Zuul jobs handle translations for OpenStack projects:\n\n- upstream-translation-update (runs post-merge): extracts\n strings via pybabel, generates .pot files, and uploads\n them to the translation platform (translate.openstack.org).\n- propose-translation-update (runs periodically): downloads\n translated .po files from the platform and proposes a\n commit back to the repository.\n\nBoth jobs are defined in openstack/project-config and enabled\nfor watcher-dashboard via the translation-jobs-master-stable\ntemplate in project-config/zuul.d/projects.yaml. They were\nalready running but could not extract any UI strings due to\nthe broken babel configs, which is why only release notes\nappear on translate.openstack.org despite 54 languages being\nconfigured.\n\nThis change also:\n- Creates the watcher_dashboard/locale/ directory needed to\n store extracted .pot files and translated .po files.\n- Adds a [testenv:translations] tox target (matching Horizon's\n pattern) to run extraction and compilation locally via:\n tox -e translations\n The generated .pot files are copied to .tox/translations/log/\n \ so that the Zuul fetch-tox-output role picks them up as\n downloadable artifacts automatically.\n- Adds *.pot to .gitignore since .pot files are generated\n artifacts (matching Horizon's .gitignore pattern). The\n *.mo pattern was already present.\n- Adds a watcher-dashboard-tox-translations Zuul job to\n check and gate pipelines that runs the translations tox\n target.\n- Adds bindep.txt with gettext dependency so that msgfmt\n (required by Django's compilemessages) is available on\n Zuul nodes.\n\nGenerated-By: Claude Opus 4.6\nChange-Id: I5676316822de9ce9e17c5d762873e8266fd94b26\nSigned-off-by: Chandan Kumar (raukadah) \n" change_url: https://review.opendev.org/c/openstack/watcher-dashboard/+/998324 child_jobs: [] commit_id: 0cb4fde6ca24874eb43cbbf607fcaf7db1dd9866 event_id: dc1c6c720eb4402cad41b2b79f261b8b executor: hostname: ze03.opendev.org inventory_file: /var/lib/zuul/builds/651a921bc59b43eb939457845a5f03ac/ansible/inventory.yaml log_root: /var/lib/zuul/builds/651a921bc59b43eb939457845a5f03ac/work/logs result_data_file: /var/lib/zuul/builds/651a921bc59b43eb939457845a5f03ac/work/results.json src_root: /var/lib/zuul/builds/651a921bc59b43eb939457845a5f03ac/work/src work_root: /var/lib/zuul/builds/651a921bc59b43eb939457845a5f03ac/work include_vars: [] items: - branch: master change: '998324' change_message: "Fix babel configs and add translations tox target\n\nThe watcher-dashboard codebase marks user-visible strings for\ntranslation using _() in Python (via gettext_lazy) and\n{% trans %} in Django templates. These markers tell the\ntranslation toolchain which strings need to be translated\ninto other languages.\n\nThe babel config files (babel-django.cfg and babel-djangojs.cfg)\ninstruct pybabel on where to scan for these marked strings and\nhow to extract them into .pot (Portable Object Template) files.\nTranslators then use these .pot files to produce per-language\n.po files containing the actual translations.\n\nThe existing babel configs had two problems:\n\n1. Glob patterns were hardcoded to watcher_dashboard/ prefixes\n instead of using generic ** globs. The Horizon management\n command (extract_messages) already passes --input-dirs to\n scope extraction, so the config-level prefixes were redundant\n and inconsistent with other Horizon plugins (e.g. manila-ui).\n\n2. babel-django.cfg was missing the .csv template extraction\n rule that Horizon and other plugins include.\n\nTwo Zuul jobs handle translations for OpenStack projects:\n\n- upstream-translation-update (runs post-merge): extracts\n strings via pybabel, generates .pot files, and uploads\n them to the translation platform (translate.openstack.org).\n- propose-translation-update (runs periodically): downloads\n translated .po files from the platform and proposes a\n commit back to the repository.\n\nBoth jobs are defined in openstack/project-config and enabled\nfor watcher-dashboard via the translation-jobs-master-stable\ntemplate in project-config/zuul.d/projects.yaml. They were\nalready running but could not extract any UI strings due to\nthe broken babel configs, which is why only release notes\nappear on translate.openstack.org despite 54 languages being\nconfigured.\n\nThis change also:\n- Creates the watcher_dashboard/locale/ directory needed to\n store extracted .pot files and translated .po files.\n- Adds a [testenv:translations] tox target (matching Horizon's\n pattern) to run extraction and compilation locally via:\n tox -e translations\n The generated .pot files are copied to .tox/translations/log/\n \ so that the Zuul fetch-tox-output role picks them up as\n downloadable artifacts automatically.\n- Adds *.pot to .gitignore since .pot files are generated\n artifacts (matching Horizon's .gitignore pattern). The\n *.mo pattern was already present.\n- Adds a watcher-dashboard-tox-translations Zuul job to\n check and gate pipelines that runs the translations tox\n \ target.\n- Adds bindep.txt with gettext dependency so that msgfmt\n (required by Django's compilemessages) is available on\n Zuul nodes.\n\nGenerated-By: Claude Opus 4.6\nChange-Id: I5676316822de9ce9e17c5d762873e8266fd94b26\nSigned-off-by: Chandan Kumar (raukadah) \n" change_url: https://review.opendev.org/c/openstack/watcher-dashboard/+/998324 commit_id: 0cb4fde6ca24874eb43cbbf607fcaf7db1dd9866 patchset: '4' project: canonical_hostname: opendev.org canonical_name: opendev.org/openstack/watcher-dashboard name: openstack/watcher-dashboard short_name: watcher-dashboard src_dir: src/opendev.org/openstack/watcher-dashboard topic: null job: watcher-dashboard-tox-translations jobtags: [] max_attempts: 3 message: Rml4IGJhYmVsIGNvbmZpZ3MgYW5kIGFkZCB0cmFuc2xhdGlvbnMgdG94IHRhcmdldAoKVGhlIHdhdGNoZXItZGFzaGJvYXJkIGNvZGViYXNlIG1hcmtzIHVzZXItdmlzaWJsZSBzdHJpbmdzIGZvcgp0cmFuc2xhdGlvbiB1c2luZyBfKCkgaW4gUHl0aG9uICh2aWEgZ2V0dGV4dF9sYXp5KSBhbmQKeyUgdHJhbnMgJX0gaW4gRGphbmdvIHRlbXBsYXRlcy4gVGhlc2UgbWFya2VycyB0ZWxsIHRoZQp0cmFuc2xhdGlvbiB0b29sY2hhaW4gd2hpY2ggc3RyaW5ncyBuZWVkIHRvIGJlIHRyYW5zbGF0ZWQKaW50byBvdGhlciBsYW5ndWFnZXMuCgpUaGUgYmFiZWwgY29uZmlnIGZpbGVzIChiYWJlbC1kamFuZ28uY2ZnIGFuZCBiYWJlbC1kamFuZ29qcy5jZmcpCmluc3RydWN0IHB5YmFiZWwgb24gd2hlcmUgdG8gc2NhbiBmb3IgdGhlc2UgbWFya2VkIHN0cmluZ3MgYW5kCmhvdyB0byBleHRyYWN0IHRoZW0gaW50byAucG90IChQb3J0YWJsZSBPYmplY3QgVGVtcGxhdGUpIGZpbGVzLgpUcmFuc2xhdG9ycyB0aGVuIHVzZSB0aGVzZSAucG90IGZpbGVzIHRvIHByb2R1Y2UgcGVyLWxhbmd1YWdlCi5wbyBmaWxlcyBjb250YWluaW5nIHRoZSBhY3R1YWwgdHJhbnNsYXRpb25zLgoKVGhlIGV4aXN0aW5nIGJhYmVsIGNvbmZpZ3MgaGFkIHR3byBwcm9ibGVtczoKCjEuIEdsb2IgcGF0dGVybnMgd2VyZSBoYXJkY29kZWQgdG8gd2F0Y2hlcl9kYXNoYm9hcmQvIHByZWZpeGVzCiAgIGluc3RlYWQgb2YgdXNpbmcgZ2VuZXJpYyAqKiBnbG9icy4gVGhlIEhvcml6b24gbWFuYWdlbWVudAogICBjb21tYW5kIChleHRyYWN0X21lc3NhZ2VzKSBhbHJlYWR5IHBhc3NlcyAtLWlucHV0LWRpcnMgdG8KICAgc2NvcGUgZXh0cmFjdGlvbiwgc28gdGhlIGNvbmZpZy1sZXZlbCBwcmVmaXhlcyB3ZXJlIHJlZHVuZGFudAogICBhbmQgaW5jb25zaXN0ZW50IHdpdGggb3RoZXIgSG9yaXpvbiBwbHVnaW5zIChlLmcuIG1hbmlsYS11aSkuCgoyLiBiYWJlbC1kamFuZ28uY2ZnIHdhcyBtaXNzaW5nIHRoZSAuY3N2IHRlbXBsYXRlIGV4dHJhY3Rpb24KICAgcnVsZSB0aGF0IEhvcml6b24gYW5kIG90aGVyIHBsdWdpbnMgaW5jbHVkZS4KClR3byBadXVsIGpvYnMgaGFuZGxlIHRyYW5zbGF0aW9ucyBmb3IgT3BlblN0YWNrIHByb2plY3RzOgoKLSB1cHN0cmVhbS10cmFuc2xhdGlvbi11cGRhdGUgKHJ1bnMgcG9zdC1tZXJnZSk6IGV4dHJhY3RzCiAgc3RyaW5ncyB2aWEgcHliYWJlbCwgZ2VuZXJhdGVzIC5wb3QgZmlsZXMsIGFuZCB1cGxvYWRzCiAgdGhlbSB0byB0aGUgdHJhbnNsYXRpb24gcGxhdGZvcm0gKHRyYW5zbGF0ZS5vcGVuc3RhY2sub3JnKS4KLSBwcm9wb3NlLXRyYW5zbGF0aW9uLXVwZGF0ZSAocnVucyBwZXJpb2RpY2FsbHkpOiBkb3dubG9hZHMKICB0cmFuc2xhdGVkIC5wbyBmaWxlcyBmcm9tIHRoZSBwbGF0Zm9ybSBhbmQgcHJvcG9zZXMgYQogIGNvbW1pdCBiYWNrIHRvIHRoZSByZXBvc2l0b3J5LgoKQm90aCBqb2JzIGFyZSBkZWZpbmVkIGluIG9wZW5zdGFjay9wcm9qZWN0LWNvbmZpZyBhbmQgZW5hYmxlZApmb3Igd2F0Y2hlci1kYXNoYm9hcmQgdmlhIHRoZSB0cmFuc2xhdGlvbi1qb2JzLW1hc3Rlci1zdGFibGUKdGVtcGxhdGUgaW4gcHJvamVjdC1jb25maWcvenV1bC5kL3Byb2plY3RzLnlhbWwuIFRoZXkgd2VyZQphbHJlYWR5IHJ1bm5pbmcgYnV0IGNvdWxkIG5vdCBleHRyYWN0IGFueSBVSSBzdHJpbmdzIGR1ZSB0bwp0aGUgYnJva2VuIGJhYmVsIGNvbmZpZ3MsIHdoaWNoIGlzIHdoeSBvbmx5IHJlbGVhc2Ugbm90ZXMKYXBwZWFyIG9uIHRyYW5zbGF0ZS5vcGVuc3RhY2sub3JnIGRlc3BpdGUgNTQgbGFuZ3VhZ2VzIGJlaW5nCmNvbmZpZ3VyZWQuCgpUaGlzIGNoYW5nZSBhbHNvOgotIENyZWF0ZXMgdGhlIHdhdGNoZXJfZGFzaGJvYXJkL2xvY2FsZS8gZGlyZWN0b3J5IG5lZWRlZCB0bwogIHN0b3JlIGV4dHJhY3RlZCAucG90IGZpbGVzIGFuZCB0cmFuc2xhdGVkIC5wbyBmaWxlcy4KLSBBZGRzIGEgW3Rlc3RlbnY6dHJhbnNsYXRpb25zXSB0b3ggdGFyZ2V0IChtYXRjaGluZyBIb3Jpem9uJ3MKICBwYXR0ZXJuKSB0byBydW4gZXh0cmFjdGlvbiBhbmQgY29tcGlsYXRpb24gbG9jYWxseSB2aWE6CiAgdG94IC1lIHRyYW5zbGF0aW9ucwogIFRoZSBnZW5lcmF0ZWQgLnBvdCBmaWxlcyBhcmUgY29waWVkIHRvIC50b3gvdHJhbnNsYXRpb25zL2xvZy8KICBzbyB0aGF0IHRoZSBadXVsIGZldGNoLXRveC1vdXRwdXQgcm9sZSBwaWNrcyB0aGVtIHVwIGFzCiAgZG93bmxvYWRhYmxlIGFydGlmYWN0cyBhdXRvbWF0aWNhbGx5LgotIEFkZHMgKi5wb3QgdG8gLmdpdGlnbm9yZSBzaW5jZSAucG90IGZpbGVzIGFyZSBnZW5lcmF0ZWQKICBhcnRpZmFjdHMgKG1hdGNoaW5nIEhvcml6b24ncyAuZ2l0aWdub3JlIHBhdHRlcm4pLiBUaGUKICAqLm1vIHBhdHRlcm4gd2FzIGFscmVhZHkgcHJlc2VudC4KLSBBZGRzIGEgd2F0Y2hlci1kYXNoYm9hcmQtdG94LXRyYW5zbGF0aW9ucyBadXVsIGpvYiB0bwogIGNoZWNrIGFuZCBnYXRlIHBpcGVsaW5lcyB0aGF0IHJ1bnMgdGhlIHRyYW5zbGF0aW9ucyB0b3gKICB0YXJnZXQuCi0gQWRkcyBiaW5kZXAudHh0IHdpdGggZ2V0dGV4dCBkZXBlbmRlbmN5IHNvIHRoYXQgbXNnZm10CiAgKHJlcXVpcmVkIGJ5IERqYW5nbydzIGNvbXBpbGVtZXNzYWdlcykgaXMgYXZhaWxhYmxlIG9uCiAgWnV1bCBub2Rlcy4KCkdlbmVyYXRlZC1CeTogQ2xhdWRlIE9wdXMgNC42CkNoYW5nZS1JZDogSTU2NzYzMTY4MjJkZTljZTllMTdjNWQ3NjI4NzNlODI2NmZkOTRiMjYKU2lnbmVkLW9mZi1ieTogQ2hhbmRhbiBLdW1hciAocmF1a2FkYWgpIDxjaGt1bWFyQHJlZGhhdC5jb20+Cg== patchset: '4' pipeline: check playbook_context: playbook_projects: trusted/project_0/opendev.org/opendev/base-jobs: canonical_name: opendev.org/opendev/base-jobs checkout: master commit: 7522a447bd750a10696775918a3813daa2896506 trusted/project_1/opendev.org/zuul/zuul-jobs: canonical_name: opendev.org/zuul/zuul-jobs checkout: master commit: 0ed6d780cbe575683f1d14d6e57182b854f8db3d untrusted/project_0/opendev.org/zuul/zuul-jobs: canonical_name: opendev.org/zuul/zuul-jobs checkout: master commit: 0ed6d780cbe575683f1d14d6e57182b854f8db3d untrusted/project_1/opendev.org/opendev/base-jobs: canonical_name: opendev.org/opendev/base-jobs checkout: master commit: 7522a447bd750a10696775918a3813daa2896506 playbooks: - path: untrusted/project_0/opendev.org/zuul/zuul-jobs/playbooks/tox/run.yaml roles: - checkout: master checkout_description: zuul branch link_name: ansible/playbook_0/role_0/base-jobs link_target: untrusted/project_1/opendev.org/opendev/base-jobs role_path: ansible/playbook_0/role_0/base-jobs/roles - checkout: master checkout_description: playbook branch link_name: ansible/playbook_0/role_1/zuul-jobs link_target: untrusted/project_0/opendev.org/zuul/zuul-jobs role_path: ansible/playbook_0/role_1/zuul-jobs/roles post_playbooks: - path: untrusted/project_0/opendev.org/zuul/zuul-jobs/playbooks/tox/post.yaml roles: - checkout: master checkout_description: zuul branch link_name: ansible/post_playbook_0/role_0/base-jobs link_target: untrusted/project_1/opendev.org/opendev/base-jobs role_path: ansible/post_playbook_0/role_0/base-jobs/roles - checkout: master checkout_description: playbook branch link_name: ansible/post_playbook_0/role_1/zuul-jobs link_target: untrusted/project_0/opendev.org/zuul/zuul-jobs role_path: ansible/post_playbook_0/role_1/zuul-jobs/roles - path: untrusted/project_0/opendev.org/zuul/zuul-jobs/playbooks/unittests/post.yaml roles: - checkout: master checkout_description: zuul branch link_name: ansible/post_playbook_1/role_0/base-jobs link_target: untrusted/project_1/opendev.org/opendev/base-jobs role_path: ansible/post_playbook_1/role_0/base-jobs/roles - checkout: master checkout_description: playbook branch link_name: ansible/post_playbook_1/role_1/zuul-jobs link_target: untrusted/project_0/opendev.org/zuul/zuul-jobs role_path: ansible/post_playbook_1/role_1/zuul-jobs/roles - path: trusted/project_0/opendev.org/opendev/base-jobs/playbooks/base/post.yaml roles: - checkout: master checkout_description: playbook branch link_name: ansible/post_playbook_2/role_0/base-jobs link_target: trusted/project_0/opendev.org/opendev/base-jobs role_path: ansible/post_playbook_2/role_0/base-jobs/roles - checkout: master checkout_description: zuul branch link_name: ansible/post_playbook_2/role_1/zuul-jobs link_target: trusted/project_1/opendev.org/zuul/zuul-jobs role_path: ansible/post_playbook_2/role_1/zuul-jobs/roles - path: trusted/project_0/opendev.org/opendev/base-jobs/playbooks/base/cleanup.yaml roles: - checkout: master checkout_description: playbook branch link_name: ansible/post_playbook_3/role_0/base-jobs link_target: trusted/project_0/opendev.org/opendev/base-jobs role_path: ansible/post_playbook_3/role_0/base-jobs/roles - checkout: master checkout_description: zuul branch link_name: ansible/post_playbook_3/role_1/zuul-jobs link_target: trusted/project_1/opendev.org/zuul/zuul-jobs role_path: ansible/post_playbook_3/role_1/zuul-jobs/roles - path: trusted/project_0/opendev.org/opendev/base-jobs/playbooks/base/post-logs.yaml roles: - checkout: master checkout_description: playbook branch link_name: ansible/post_playbook_4/role_0/base-jobs link_target: trusted/project_0/opendev.org/opendev/base-jobs role_path: ansible/post_playbook_4/role_0/base-jobs/roles - checkout: master checkout_description: zuul branch link_name: ansible/post_playbook_4/role_1/zuul-jobs link_target: trusted/project_1/opendev.org/zuul/zuul-jobs role_path: ansible/post_playbook_4/role_1/zuul-jobs/roles pre_playbooks: - path: trusted/project_0/opendev.org/opendev/base-jobs/playbooks/base/pre.yaml roles: - checkout: master checkout_description: playbook branch link_name: ansible/pre_playbook_0/role_0/base-jobs link_target: trusted/project_0/opendev.org/opendev/base-jobs role_path: ansible/pre_playbook_0/role_0/base-jobs/roles - checkout: master checkout_description: zuul branch link_name: ansible/pre_playbook_0/role_1/zuul-jobs link_target: trusted/project_1/opendev.org/zuul/zuul-jobs role_path: ansible/pre_playbook_0/role_1/zuul-jobs/roles - path: untrusted/project_0/opendev.org/zuul/zuul-jobs/playbooks/enable-fips/pre.yaml roles: - checkout: master checkout_description: zuul branch link_name: ansible/pre_playbook_1/role_0/base-jobs link_target: untrusted/project_1/opendev.org/opendev/base-jobs role_path: ansible/pre_playbook_1/role_0/base-jobs/roles - checkout: master checkout_description: playbook branch link_name: ansible/pre_playbook_1/role_1/zuul-jobs link_target: untrusted/project_0/opendev.org/zuul/zuul-jobs role_path: ansible/pre_playbook_1/role_1/zuul-jobs/roles - path: untrusted/project_0/opendev.org/zuul/zuul-jobs/playbooks/unittests/pre.yaml roles: - checkout: master checkout_description: zuul branch link_name: ansible/pre_playbook_2/role_0/base-jobs link_target: untrusted/project_1/opendev.org/opendev/base-jobs role_path: ansible/pre_playbook_2/role_0/base-jobs/roles - checkout: master checkout_description: playbook branch link_name: ansible/pre_playbook_2/role_1/zuul-jobs link_target: untrusted/project_0/opendev.org/zuul/zuul-jobs role_path: ansible/pre_playbook_2/role_1/zuul-jobs/roles - path: untrusted/project_0/opendev.org/zuul/zuul-jobs/playbooks/tox/pre.yaml roles: - checkout: master checkout_description: zuul branch link_name: ansible/pre_playbook_3/role_0/base-jobs link_target: untrusted/project_1/opendev.org/opendev/base-jobs role_path: ansible/pre_playbook_3/role_0/base-jobs/roles - checkout: master checkout_description: playbook branch link_name: ansible/pre_playbook_3/role_1/zuul-jobs link_target: untrusted/project_0/opendev.org/zuul/zuul-jobs role_path: ansible/pre_playbook_3/role_1/zuul-jobs/roles post_review: false post_timeout: 1800 pre_timeout: null project: canonical_hostname: opendev.org canonical_name: opendev.org/openstack/watcher-dashboard name: openstack/watcher-dashboard short_name: watcher-dashboard src_dir: src/opendev.org/openstack/watcher-dashboard projects: opendev.org/openstack/requirements: canonical_hostname: opendev.org canonical_name: opendev.org/openstack/requirements checkout: master checkout_description: zuul branch commit: 7c466f62332c8ba87b4b139f83fc1882038200a6 name: openstack/requirements required: true short_name: requirements src_dir: src/opendev.org/openstack/requirements opendev.org/openstack/watcher-dashboard: canonical_hostname: opendev.org canonical_name: opendev.org/openstack/watcher-dashboard checkout: master checkout_description: zuul branch commit: cdf7b25f40eb310f332a037bccdd68a13b4facea name: openstack/watcher-dashboard required: false short_name: watcher-dashboard src_dir: src/opendev.org/openstack/watcher-dashboard ref: refs/changes/24/998324/4 resources: {} tenant: openstack timeout: 1800 topic: null voting: true