all: children: zuul_unreachable: hosts: {} hosts: mock-host: ansible_connection: ssh ansible_host: 38.102.83.73 ansible_port: 22 ansible_python_interpreter: auto ansible_user: zuul-worker build_target: epel-8-x86_64 nodepool: az: nova cloud: vexxhost-nodepool-sf external_id: 195281f1-4ef1-4254-b575-b6f347ccfc8d host_id: 51aa9e131917ba50e0172bb0f531d399b463c4c7890fcea7db1ae368 interface_ip: 38.102.83.73 label: cloud-centos-9 node_properties: {} private_ipv4: 38.102.83.73 private_ipv6: null provider: vexxhost-nodepool-sf public_ipv4: 38.102.83.73 public_ipv6: '' region: RegionOne slot: null zuul_node: az: nova cloud: vexxhost-nodepool-sf external_id: 195281f1-4ef1-4254-b575-b6f347ccfc8d host_id: 51aa9e131917ba50e0172bb0f531d399b463c4c7890fcea7db1ae368 interface_ip: 38.102.83.73 label: cloud-centos-9 node_properties: {} private_ipv4: 38.102.83.73 private_ipv6: null provider: vexxhost-nodepool-sf public_ipv4: 38.102.83.73 public_ipv6: '' region: RegionOne slot: null uuid: null vars: build_target: epel-8-x86_64 zuul: _inheritance_path: - '' - '' - '' ansible_version: '9' attempts: 1 branch: main build: 14712dbcc5b6485f885478cde8ccd142 build_refs: - branch: main change: '12' change_message: "fix(get-logs): only rewrite must-gather image for matching IDMS/ICSP sources\n\n## Problem\r\n\r\nThe `get-logs` script blindly grabs the first IDMS entry's mirror and extracts the registry hostname to rewrite the must-gather image URL. This breaks **connected clusters** that have unrelated IDMS entries (e.g. for OADP operators on `quay.io`):\r\n\r\n1. Script finds IDMS entry: `quay.io/prega/test/oadp/oadp-velero-plugin-for-legacy-aws-rhel9`\r\n2. Extracts registry: `quay.io`\r\n3. Rewrites must-gather image to: `quay.io/openshift4/ose-must-gather`\r\n4. That image doesn't exist there \u2192 `ImagePullBackOff` \u2192 `unauthorized`\r\n5. Result: empty `must_gather.tar.gz` (~2KB instead of ~100MB)\r\n\r\n## Fix\r\n\r\nInstead of blindly using the first IDMS/ICSP entry, the script now looks for an entry whose **source** specifically matches the image being pulled (e.g. `registry.redhat.io/openshift4`). If no matching entry exists, the original image reference is used as-is.\r\n\r\n### Before (broken)\r\n```bash\r\n# Grabs first IDMS entry regardless of source\r\nidms_reg=$(oc get imagedigestmirrorsets -o json | jq -r '.items[0].spec.imageDigestMirrors[0].mirrors[0]')\r\nregistry=${idms_reg/\\/\\*}\r\nimage=\"${registry}/${image#*/}\"\r\n```\r\n\r\n### After (fixed)\r\n```bash\r\n# Only rewrite if there's an IDMS entry matching the image source\r\nimage_source=\"${image%/*}\"\r\nmirror=$(oc get imagedigestmirrorsets -o json | jq -r --arg source \"${image_source}\" \\\r\n '[.items[].spec.imageDigestMirrors[] | select(.source == $source) | .mirrors[0]] | first // \"\"')\r\nif [[ -n \"${mirror}\" ]]; then\r\n image=\"${mirror}/${image##*/}\"\r\nfi\r\n```\r\n\r\n## Behavior\r\n\r\n| Scenario | Before | After |\r\n|----------|--------|-------|\r\n| Connected cluster with unrelated IDMS | \u274C Rewrites to wrong registry | \u2705 Uses original image |\r\n| Disconnected cluster with matching IDMS | \u2705 Rewrites correctly | \u2705 Rewrites correctly |\r\n| Cluster with no IDMS | \u2705 Uses original image | \u2705 Uses original image |\r\n" change_url: https://github.com/distributedci/dci-openshift-app-agent/pull/12 commit_id: 657ea704665cee28d7fcbd9591c545c9e8ae4aba patchset: 657ea704665cee28d7fcbd9591c545c9e8ae4aba project: canonical_hostname: github.com canonical_name: github.com/distributedci/dci-openshift-app-agent name: distributedci/dci-openshift-app-agent short_name: dci-openshift-app-agent src_dir: src/github.com/distributedci/dci-openshift-app-agent src_dir: src/github.com/distributedci/dci-openshift-app-agent topic: null buildset: cfe6c7a32bae4798bbc068751516aec6 buildset_refs: - branch: main change: '12' change_message: "fix(get-logs): only rewrite must-gather image for matching IDMS/ICSP sources\n\n## Problem\r\n\r\nThe `get-logs` script blindly grabs the first IDMS entry's mirror and extracts the registry hostname to rewrite the must-gather image URL. This breaks **connected clusters** that have unrelated IDMS entries (e.g. for OADP operators on `quay.io`):\r\n\r\n1. Script finds IDMS entry: `quay.io/prega/test/oadp/oadp-velero-plugin-for-legacy-aws-rhel9`\r\n2. Extracts registry: `quay.io`\r\n3. Rewrites must-gather image to: `quay.io/openshift4/ose-must-gather`\r\n4. That image doesn't exist there \u2192 `ImagePullBackOff` \u2192 `unauthorized`\r\n5. Result: empty `must_gather.tar.gz` (~2KB instead of ~100MB)\r\n\r\n## Fix\r\n\r\nInstead of blindly using the first IDMS/ICSP entry, the script now looks for an entry whose **source** specifically matches the image being pulled (e.g. `registry.redhat.io/openshift4`). If no matching entry exists, the original image reference is used as-is.\r\n\r\n### Before (broken)\r\n```bash\r\n# Grabs first IDMS entry regardless of source\r\nidms_reg=$(oc get imagedigestmirrorsets -o json | jq -r '.items[0].spec.imageDigestMirrors[0].mirrors[0]')\r\nregistry=${idms_reg/\\/\\*}\r\nimage=\"${registry}/${image#*/}\"\r\n```\r\n\r\n### After (fixed)\r\n```bash\r\n# Only rewrite if there's an IDMS entry matching the image source\r\nimage_source=\"${image%/*}\"\r\nmirror=$(oc get imagedigestmirrorsets -o json | jq -r --arg source \"${image_source}\" \\\r\n '[.items[].spec.imageDigestMirrors[] | select(.source == $source) | .mirrors[0]] | first // \"\"')\r\nif [[ -n \"${mirror}\" ]]; then\r\n image=\"${mirror}/${image##*/}\"\r\nfi\r\n```\r\n\r\n## Behavior\r\n\r\n| Scenario | Before | After |\r\n|----------|--------|-------|\r\n| Connected cluster with unrelated IDMS | \u274C Rewrites to wrong registry | \u2705 Uses original image |\r\n| Disconnected cluster with matching IDMS | \u2705 Rewrites correctly | \u2705 Rewrites correctly |\r\n| Cluster with no IDMS | \u2705 Uses original image | \u2705 Uses original image |\r\n" change_url: https://github.com/distributedci/dci-openshift-app-agent/pull/12 commit_id: 657ea704665cee28d7fcbd9591c545c9e8ae4aba patchset: 657ea704665cee28d7fcbd9591c545c9e8ae4aba project: canonical_hostname: github.com canonical_name: github.com/distributedci/dci-openshift-app-agent name: distributedci/dci-openshift-app-agent short_name: dci-openshift-app-agent src_dir: src/github.com/distributedci/dci-openshift-app-agent src_dir: src/github.com/distributedci/dci-openshift-app-agent topic: null change: '12' change_message: "fix(get-logs): only rewrite must-gather image for matching IDMS/ICSP sources\n\n## Problem\r\n\r\nThe `get-logs` script blindly grabs the first IDMS entry's mirror and extracts the registry hostname to rewrite the must-gather image URL. This breaks **connected clusters** that have unrelated IDMS entries (e.g. for OADP operators on `quay.io`):\r\n\r\n1. Script finds IDMS entry: `quay.io/prega/test/oadp/oadp-velero-plugin-for-legacy-aws-rhel9`\r\n2. Extracts registry: `quay.io`\r\n3. Rewrites must-gather image to: `quay.io/openshift4/ose-must-gather`\r\n4. That image doesn't exist there \u2192 `ImagePullBackOff` \u2192 `unauthorized`\r\n5. Result: empty `must_gather.tar.gz` (~2KB instead of ~100MB)\r\n\r\n## Fix\r\n\r\nInstead of blindly using the first IDMS/ICSP entry, the script now looks for an entry whose **source** specifically matches the image being pulled (e.g. `registry.redhat.io/openshift4`). If no matching entry exists, the original image reference is used as-is.\r\n\r\n### Before (broken)\r\n```bash\r\n# Grabs first IDMS entry regardless of source\r\nidms_reg=$(oc get imagedigestmirrorsets -o json | jq -r '.items[0].spec.imageDigestMirrors[0].mirrors[0]')\r\nregistry=${idms_reg/\\/\\*}\r\nimage=\"${registry}/${image#*/}\"\r\n```\r\n\r\n### After (fixed)\r\n```bash\r\n# Only rewrite if there's an IDMS entry matching the image source\r\nimage_source=\"${image%/*}\"\r\nmirror=$(oc get imagedigestmirrorsets -o json | jq -r --arg source \"${image_source}\" \\\r\n '[.items[].spec.imageDigestMirrors[] | select(.source == $source) | .mirrors[0]] | first // \"\"')\r\nif [[ -n \"${mirror}\" ]]; then\r\n image=\"${mirror}/${image##*/}\"\r\nfi\r\n```\r\n\r\n## Behavior\r\n\r\n| Scenario | Before | After |\r\n|----------|--------|-------|\r\n| Connected cluster with unrelated IDMS | \u274C Rewrites to wrong registry | \u2705 Uses original image |\r\n| Disconnected cluster with matching IDMS | \u2705 Rewrites correctly | \u2705 Rewrites correctly |\r\n| Cluster with no IDMS | \u2705 Uses original image | \u2705 Uses original image |\r\n" change_url: https://github.com/distributedci/dci-openshift-app-agent/pull/12 child_jobs: [] commit_id: 657ea704665cee28d7fcbd9591c545c9e8ae4aba event_id: 74993cf0-64f9-11f1-8e53-c3c88fe92682 executor: hostname: 38.102.83.40 inventory_file: /var/lib/zuul/builds/14712dbcc5b6485f885478cde8ccd142/ansible/inventory.yaml log_root: /var/lib/zuul/builds/14712dbcc5b6485f885478cde8ccd142/work/logs result_data_file: /var/lib/zuul/builds/14712dbcc5b6485f885478cde8ccd142/work/results.json src_root: /var/lib/zuul/builds/14712dbcc5b6485f885478cde8ccd142/work/src work_root: /var/lib/zuul/builds/14712dbcc5b6485f885478cde8ccd142/work include_vars: [] items: - branch: main change: '12' change_message: "fix(get-logs): only rewrite must-gather image for matching IDMS/ICSP sources\n\n## Problem\r\n\r\nThe `get-logs` script blindly grabs the first IDMS entry's mirror and extracts the registry hostname to rewrite the must-gather image URL. This breaks **connected clusters** that have unrelated IDMS entries (e.g. for OADP operators on `quay.io`):\r\n\r\n1. Script finds IDMS entry: `quay.io/prega/test/oadp/oadp-velero-plugin-for-legacy-aws-rhel9`\r\n2. Extracts registry: `quay.io`\r\n3. Rewrites must-gather image to: `quay.io/openshift4/ose-must-gather`\r\n4. That image doesn't exist there \u2192 `ImagePullBackOff` \u2192 `unauthorized`\r\n5. Result: empty `must_gather.tar.gz` (~2KB instead of ~100MB)\r\n\r\n## Fix\r\n\r\nInstead of blindly using the first IDMS/ICSP entry, the script now looks for an entry whose **source** specifically matches the image being pulled (e.g. `registry.redhat.io/openshift4`). If no matching entry exists, the original image reference is used as-is.\r\n\r\n### Before (broken)\r\n```bash\r\n# Grabs first IDMS entry regardless of source\r\nidms_reg=$(oc get imagedigestmirrorsets -o json | jq -r '.items[0].spec.imageDigestMirrors[0].mirrors[0]')\r\nregistry=${idms_reg/\\/\\*}\r\nimage=\"${registry}/${image#*/}\"\r\n```\r\n\r\n### After (fixed)\r\n```bash\r\n# Only rewrite if there's an IDMS entry matching the image source\r\nimage_source=\"${image%/*}\"\r\nmirror=$(oc get imagedigestmirrorsets -o json | jq -r --arg source \"${image_source}\" \\\r\n '[.items[].spec.imageDigestMirrors[] | select(.source == $source) | .mirrors[0]] | first // \"\"')\r\nif [[ -n \"${mirror}\" ]]; then\r\n image=\"${mirror}/${image##*/}\"\r\nfi\r\n```\r\n\r\n## Behavior\r\n\r\n| Scenario | Before | After |\r\n|----------|--------|-------|\r\n| Connected cluster with unrelated IDMS | \u274C Rewrites to wrong registry | \u2705 Uses original image |\r\n| Disconnected cluster with matching IDMS | \u2705 Rewrites correctly | \u2705 Rewrites correctly |\r\n| Cluster with no IDMS | \u2705 Uses original image | \u2705 Uses original image |\r\n" change_url: https://github.com/distributedci/dci-openshift-app-agent/pull/12 commit_id: 657ea704665cee28d7fcbd9591c545c9e8ae4aba patchset: 657ea704665cee28d7fcbd9591c545c9e8ae4aba project: canonical_hostname: github.com canonical_name: github.com/distributedci/dci-openshift-app-agent name: distributedci/dci-openshift-app-agent short_name: dci-openshift-app-agent src_dir: src/github.com/distributedci/dci-openshift-app-agent topic: null job: dci-build-rpm-job jobtags: [] max_attempts: 3 message: Zml4KGdldC1sb2dzKTogb25seSByZXdyaXRlIG11c3QtZ2F0aGVyIGltYWdlIGZvciBtYXRjaGluZyBJRE1TL0lDU1Agc291cmNlcwoKIyMgUHJvYmxlbQ0KDQpUaGUgYGdldC1sb2dzYCBzY3JpcHQgYmxpbmRseSBncmFicyB0aGUgZmlyc3QgSURNUyBlbnRyeSdzIG1pcnJvciBhbmQgZXh0cmFjdHMgdGhlIHJlZ2lzdHJ5IGhvc3RuYW1lIHRvIHJld3JpdGUgdGhlIG11c3QtZ2F0aGVyIGltYWdlIFVSTC4gVGhpcyBicmVha3MgKipjb25uZWN0ZWQgY2x1c3RlcnMqKiB0aGF0IGhhdmUgdW5yZWxhdGVkIElETVMgZW50cmllcyAoZS5nLiBmb3IgT0FEUCBvcGVyYXRvcnMgb24gYHF1YXkuaW9gKToNCg0KMS4gU2NyaXB0IGZpbmRzIElETVMgZW50cnk6IGBxdWF5LmlvL3ByZWdhL3Rlc3Qvb2FkcC9vYWRwLXZlbGVyby1wbHVnaW4tZm9yLWxlZ2FjeS1hd3MtcmhlbDlgDQoyLiBFeHRyYWN0cyByZWdpc3RyeTogYHF1YXkuaW9gDQozLiBSZXdyaXRlcyBtdXN0LWdhdGhlciBpbWFnZSB0bzogYHF1YXkuaW8vb3BlbnNoaWZ0NC9vc2UtbXVzdC1nYXRoZXJgDQo0LiBUaGF0IGltYWdlIGRvZXNuJ3QgZXhpc3QgdGhlcmUg4oaSIGBJbWFnZVB1bGxCYWNrT2ZmYCDihpIgYHVuYXV0aG9yaXplZGANCjUuIFJlc3VsdDogZW1wdHkgYG11c3RfZ2F0aGVyLnRhci5nemAgKH4yS0IgaW5zdGVhZCBvZiB+MTAwTUIpDQoNCiMjIEZpeA0KDQpJbnN0ZWFkIG9mIGJsaW5kbHkgdXNpbmcgdGhlIGZpcnN0IElETVMvSUNTUCBlbnRyeSwgdGhlIHNjcmlwdCBub3cgbG9va3MgZm9yIGFuIGVudHJ5IHdob3NlICoqc291cmNlKiogc3BlY2lmaWNhbGx5IG1hdGNoZXMgdGhlIGltYWdlIGJlaW5nIHB1bGxlZCAoZS5nLiBgcmVnaXN0cnkucmVkaGF0LmlvL29wZW5zaGlmdDRgKS4gSWYgbm8gbWF0Y2hpbmcgZW50cnkgZXhpc3RzLCB0aGUgb3JpZ2luYWwgaW1hZ2UgcmVmZXJlbmNlIGlzIHVzZWQgYXMtaXMuDQoNCiMjIyBCZWZvcmUgKGJyb2tlbikNCmBgYGJhc2gNCiMgR3JhYnMgZmlyc3QgSURNUyBlbnRyeSByZWdhcmRsZXNzIG9mIHNvdXJjZQ0KaWRtc19yZWc9JChvYyBnZXQgaW1hZ2VkaWdlc3RtaXJyb3JzZXRzIC1vIGpzb24gfCBqcSAtciAnLml0ZW1zWzBdLnNwZWMuaW1hZ2VEaWdlc3RNaXJyb3JzWzBdLm1pcnJvcnNbMF0nKQ0KcmVnaXN0cnk9JHtpZG1zX3JlZy9cL1wqfQ0KaW1hZ2U9IiR7cmVnaXN0cnl9LyR7aW1hZ2UjKi99Ig0KYGBgDQoNCiMjIyBBZnRlciAoZml4ZWQpDQpgYGBiYXNoDQojIE9ubHkgcmV3cml0ZSBpZiB0aGVyZSdzIGFuIElETVMgZW50cnkgbWF0Y2hpbmcgdGhlIGltYWdlIHNvdXJjZQ0KaW1hZ2Vfc291cmNlPSIke2ltYWdlJS8qfSINCm1pcnJvcj0kKG9jIGdldCBpbWFnZWRpZ2VzdG1pcnJvcnNldHMgLW8ganNvbiB8IGpxIC1yIC0tYXJnIHNvdXJjZSAiJHtpbWFnZV9zb3VyY2V9IiBcDQogICdbLml0ZW1zW10uc3BlYy5pbWFnZURpZ2VzdE1pcnJvcnNbXSB8IHNlbGVjdCguc291cmNlID09ICRzb3VyY2UpIHwgLm1pcnJvcnNbMF1dIHwgZmlyc3QgLy8gIiInKQ0KaWYgW1sgLW4gIiR7bWlycm9yfSIgXV07IHRoZW4NCiAgaW1hZ2U9IiR7bWlycm9yfS8ke2ltYWdlIyMqL30iDQpmaQ0KYGBgDQoNCiMjIEJlaGF2aW9yDQoNCnwgU2NlbmFyaW8gfCBCZWZvcmUgfCBBZnRlciB8DQp8LS0tLS0tLS0tLXwtLS0tLS0tLXwtLS0tLS0tfA0KfCBDb25uZWN0ZWQgY2x1c3RlciB3aXRoIHVucmVsYXRlZCBJRE1TIHwg4p2MIFJld3JpdGVzIHRvIHdyb25nIHJlZ2lzdHJ5IHwg4pyFIFVzZXMgb3JpZ2luYWwgaW1hZ2UgfA0KfCBEaXNjb25uZWN0ZWQgY2x1c3RlciB3aXRoIG1hdGNoaW5nIElETVMgfCDinIUgUmV3cml0ZXMgY29ycmVjdGx5IHwg4pyFIFJld3JpdGVzIGNvcnJlY3RseSB8DQp8IENsdXN0ZXIgd2l0aCBubyBJRE1TIHwg4pyFIFVzZXMgb3JpZ2luYWwgaW1hZ2UgfCDinIUgVXNlcyBvcmlnaW5hbCBpbWFnZSB8DQo= patchset: 657ea704665cee28d7fcbd9591c545c9e8ae4aba pipeline: check playbook_context: playbook_projects: trusted/project_0/gitlab.com/softwarefactory-project/centosinfra-prod/dci-config: canonical_name: gitlab.com/softwarefactory-project/centosinfra-prod/dci-config checkout: main commit: 401c077f4f321288dc08f65b2bd861fbd6a8e7ea trusted/project_1/opendev.org/zuul/zuul-jobs: canonical_name: opendev.org/zuul/zuul-jobs checkout: master commit: 82e3e8b1292a25e38235bb92b157992d326531d1 playbooks: - path: trusted/project_0/gitlab.com/softwarefactory-project/centosinfra-prod/dci-config/playbooks/rpm/build.yaml roles: - checkout: main checkout_description: playbook branch link_name: ansible/playbook_0/role_0/dci-config link_target: trusted/project_0/gitlab.com/softwarefactory-project/centosinfra-prod/dci-config role_path: ansible/playbook_0/role_0/dci-config/roles - checkout: master checkout_description: project default branch link_name: ansible/playbook_0/role_1/zuul-jobs link_target: trusted/project_1/opendev.org/zuul/zuul-jobs role_path: ansible/playbook_0/role_1/zuul-jobs/roles post_playbooks: - path: trusted/project_0/gitlab.com/softwarefactory-project/centosinfra-prod/dci-config/playbooks/base/post.yaml roles: - checkout: main checkout_description: playbook branch link_name: ansible/post_playbook_0/role_0/dci-config link_target: trusted/project_0/gitlab.com/softwarefactory-project/centosinfra-prod/dci-config role_path: ansible/post_playbook_0/role_0/dci-config/roles - checkout: master checkout_description: project default branch link_name: ansible/post_playbook_0/role_1/zuul-jobs link_target: trusted/project_1/opendev.org/zuul/zuul-jobs role_path: ansible/post_playbook_0/role_1/zuul-jobs/roles pre_playbooks: - path: trusted/project_0/gitlab.com/softwarefactory-project/centosinfra-prod/dci-config/playbooks/base/pre.yaml roles: - checkout: main checkout_description: playbook branch link_name: ansible/pre_playbook_0/role_0/dci-config link_target: trusted/project_0/gitlab.com/softwarefactory-project/centosinfra-prod/dci-config role_path: ansible/pre_playbook_0/role_0/dci-config/roles - checkout: master checkout_description: project default 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: trusted/project_0/gitlab.com/softwarefactory-project/centosinfra-prod/dci-config/playbooks/rpm/prepare-mock-host.yaml roles: - checkout: main checkout_description: playbook branch link_name: ansible/pre_playbook_1/role_0/dci-config link_target: trusted/project_0/gitlab.com/softwarefactory-project/centosinfra-prod/dci-config role_path: ansible/pre_playbook_1/role_0/dci-config/roles - checkout: master checkout_description: project default branch link_name: ansible/pre_playbook_1/role_1/zuul-jobs link_target: trusted/project_1/opendev.org/zuul/zuul-jobs role_path: ansible/pre_playbook_1/role_1/zuul-jobs/roles post_review: false post_timeout: null pre_timeout: null project: canonical_hostname: github.com canonical_name: github.com/distributedci/dci-openshift-app-agent name: distributedci/dci-openshift-app-agent short_name: dci-openshift-app-agent src_dir: src/github.com/distributedci/dci-openshift-app-agent projects: github.com/distributedci/dci-openshift-app-agent: canonical_hostname: github.com canonical_name: github.com/distributedci/dci-openshift-app-agent checkout: main checkout_description: zuul branch commit: 657ea704665cee28d7fcbd9591c545c9e8ae4aba name: distributedci/dci-openshift-app-agent required: false short_name: dci-openshift-app-agent src_dir: src/github.com/distributedci/dci-openshift-app-agent github.com/distributedci/dci-packaging: canonical_hostname: github.com canonical_name: github.com/distributedci/dci-packaging checkout: main checkout_description: zuul branch commit: 1567c04e744d7baade72e451b0c0fd7b192987bb name: distributedci/dci-packaging required: true short_name: dci-packaging src_dir: src/github.com/distributedci/dci-packaging gitlab.com/softwarefactory-project/centosinfra-prod/dci-config: canonical_hostname: gitlab.com canonical_name: gitlab.com/softwarefactory-project/centosinfra-prod/dci-config checkout: main checkout_description: zuul branch commit: 401c077f4f321288dc08f65b2bd861fbd6a8e7ea name: softwarefactory-project/centosinfra-prod/dci-config required: true short_name: dci-config src_dir: src/gitlab.com/softwarefactory-project/centosinfra-prod/dci-config ref: refs/pull/12/head resources: {} tenant: dci timeout: 1800 topic: null voting: true