all:
  children:
    zuul_unreachable:
      hosts: {}
  hosts:
    debian-bookworm:
      ansible_connection: ssh
      ansible_host: 2a13:1a81:8000:3124:f816:3eff:fec0:4b8b
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      nodepool:
        az: nova
        cloud: regiocloud-a-ci
        external_id: 0cff8f1b-7690-4622-ab27-0cf1ed91a62a
        host_id: 4ba4344415ca7057d9956ea5de826bbc0b830981e82c0e0f191fa07b
        interface_ip: 2a13:1a81:8000:3124:f816:3eff:fec0:4b8b
        label: debian-bookworm
        node_properties: {}
        private_ipv4: 10.128.0.107
        private_ipv6: null
        provider: regiocloud-a
        public_ipv4: 81.163.193.76
        public_ipv6: 2a13:1a81:8000:3124:f816:3eff:fec0:4b8b
        region: null
        slot: null
  vars:
    zuul:
      _inheritance_path:
      - '<Job base explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: osism/zuul-config/zuul.d/jobs.yaml@main#2>'
      - '<Job flake8 explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: osism/zuul-jobs/.zuul.yaml@main#32>'
      - '<Job flake8 explicit: None implied: None source: osism/container-images/.zuul.yaml@main#2>'
      ansible_version: '9'
      attempts: 1
      branch: main
      build: 3682ecf3186f4b8c8ffd2661838423fa
      build_refs:
      - branch: main
        change: '935'
        change_message: "Add multi-release seed container (runtime collection-set
          selection)\n\n## What\n\nMake the `seed` container carry **per-release OSISM
          collection sets** and\nselect the right one at **runtime**, instead of baking
          only the `main`\ncollections at build time.\n\n- `seed/files/releases.txt`
          \u2014 the owned list of supported releases whose\n  collection sets are
          baked (plus the always-built `latest` from `main`).\n- `seed/files/render-requirements.py`
          \u2014 for a release, fetch\n  `osism/release/<version>/base.yml` and render
          a galaxy `requirements.yml`\n  from its pins (`ansible_collections.osism.{commons,services}`
          + the\n  `manager_playbooks_version`), writing a `.osism-set-info` marker.\n-
          `seed/files/select-collections.py` \u2014 at entrypoint time, resolve the
          set:\n  `MANAGER_VERSION` env wins, else `manager_version` from the bind-mounted\n
          \ `/opt/configuration/environments/manager/configuration.yml`, else `latest`;\n
          \ print the chosen `/opt/collections/<v>` path (run.sh exports it as\n  `ANSIBLE_COLLECTIONS_PATH`).
          An unknown/unbaked version hard-fails with\n  `USE_NON_MATCHING_COLLECTIONS=<set>`
          offered as a loud emergency override;\n  unreadable/malformed config hard-fails
          (only genuinely-absent config falls\n  back to `latest`).\n- `Containerfile`
          \u2014 a single `RUN` loop bakes each release set + `latest`,\n  runs `select-collections.py
          --build-check`, and sets the default\n  `ANSIBLE_COLLECTIONS_PATH=/opt/collections/latest`.\n\n##
          Why\n\nThe seed bakes the OSISM collections from `main` at build time, while
          the\nimages it deploys are pinned independently by `manager_version` in
          the\nconfiguration repo. Nothing ties the two together, and role templates
          encode\nimage internals \u2014 so collection code and deployed image can
          come from\ndifferent points in time and break the deploy (or half-work)
          with no hint\nthat version skew is the cause. The `run.sh` path avoids this
          because each\nrelease in `osism/release` pins the collection axis too; the
          seed container\nbypassed exactly that alignment. Runtime selection restores
          it **by\nconstruction** \u2014 there is no tag to pick wrong.\n\nCost is
          small: ~5.5 MB per collection set against a ~559 MB image; all\ncurrently-supported
          releases share the baked `ansible` version, so one\ninterpreter serves every
          set.\n\n## Validation\n\n- In-container matrix: env override, config-repo
          selection, unknown-release\n  hard error, `USE_NON_MATCHING_COLLECTIONS`
          (incl. unreadable-config\n  diagnostic), malformed-config hard error, tampered-marker
          core-line warning.\n- **Live end-to-end (OSISM 10.1.0):** this image drove
          a full manager\n  bootstrap + service deploy on a real cloud via the generics
          `run.sh`\n  `SEED_CONTAINER` delegation; `select-collections.py` selected\n
          \ `/opt/collections/10.1.0` from the config's `manager_version`, roles ran
          out\n  of that set, and the cluster came up healthy (ceph `HEALTH_OK` 9/9
          OSDs,\n  nova/cinder up, a VM-on-Ceph smoke passed).\n\n## Notes\n\n- On
          SELinux-enforcing hosts the config bind-mount needs `:z`/`:Z` (a\n  pre-existing
          seed-container property).\n- The deploy guide is updated in a companion
          `osism.github.io` change to\n  document the `run.sh` `SEED_CONTAINER` path
          rather than a separate wrapper.\n- Follow-up (out of scope here): record
          the seed image in the release\n  manifest so a release pins the manager
          images *and* the seed that deploys\n  them.\n\nDraft: opening for review
          of the approach before finalizing.\n\n\U0001F916 Generated with [Claude
          Code](https://claude.com/claude-code)\n"
        change_url: https://github.com/osism/container-images/pull/935
        commit_id: 67e23021b989a647c891fe5e8dfb50c098a60ea6
        patchset: 67e23021b989a647c891fe5e8dfb50c098a60ea6
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/container-images
          name: osism/container-images
          short_name: container-images
        src_dir: src/github.com/osism/container-images
        topic: null
      buildset: bd871584b1794fdbacdf90e057d174a8
      buildset_refs:
      - branch: main
        change: '935'
        change_message: "Add multi-release seed container (runtime collection-set
          selection)\n\n## What\n\nMake the `seed` container carry **per-release OSISM
          collection sets** and\nselect the right one at **runtime**, instead of baking
          only the `main`\ncollections at build time.\n\n- `seed/files/releases.txt`
          \u2014 the owned list of supported releases whose\n  collection sets are
          baked (plus the always-built `latest` from `main`).\n- `seed/files/render-requirements.py`
          \u2014 for a release, fetch\n  `osism/release/<version>/base.yml` and render
          a galaxy `requirements.yml`\n  from its pins (`ansible_collections.osism.{commons,services}`
          + the\n  `manager_playbooks_version`), writing a `.osism-set-info` marker.\n-
          `seed/files/select-collections.py` \u2014 at entrypoint time, resolve the
          set:\n  `MANAGER_VERSION` env wins, else `manager_version` from the bind-mounted\n
          \ `/opt/configuration/environments/manager/configuration.yml`, else `latest`;\n
          \ print the chosen `/opt/collections/<v>` path (run.sh exports it as\n  `ANSIBLE_COLLECTIONS_PATH`).
          An unknown/unbaked version hard-fails with\n  `USE_NON_MATCHING_COLLECTIONS=<set>`
          offered as a loud emergency override;\n  unreadable/malformed config hard-fails
          (only genuinely-absent config falls\n  back to `latest`).\n- `Containerfile`
          \u2014 a single `RUN` loop bakes each release set + `latest`,\n  runs `select-collections.py
          --build-check`, and sets the default\n  `ANSIBLE_COLLECTIONS_PATH=/opt/collections/latest`.\n\n##
          Why\n\nThe seed bakes the OSISM collections from `main` at build time, while
          the\nimages it deploys are pinned independently by `manager_version` in
          the\nconfiguration repo. Nothing ties the two together, and role templates
          encode\nimage internals \u2014 so collection code and deployed image can
          come from\ndifferent points in time and break the deploy (or half-work)
          with no hint\nthat version skew is the cause. The `run.sh` path avoids this
          because each\nrelease in `osism/release` pins the collection axis too; the
          seed container\nbypassed exactly that alignment. Runtime selection restores
          it **by\nconstruction** \u2014 there is no tag to pick wrong.\n\nCost is
          small: ~5.5 MB per collection set against a ~559 MB image; all\ncurrently-supported
          releases share the baked `ansible` version, so one\ninterpreter serves every
          set.\n\n## Validation\n\n- In-container matrix: env override, config-repo
          selection, unknown-release\n  hard error, `USE_NON_MATCHING_COLLECTIONS`
          (incl. unreadable-config\n  diagnostic), malformed-config hard error, tampered-marker
          core-line warning.\n- **Live end-to-end (OSISM 10.1.0):** this image drove
          a full manager\n  bootstrap + service deploy on a real cloud via the generics
          `run.sh`\n  `SEED_CONTAINER` delegation; `select-collections.py` selected\n
          \ `/opt/collections/10.1.0` from the config's `manager_version`, roles ran
          out\n  of that set, and the cluster came up healthy (ceph `HEALTH_OK` 9/9
          OSDs,\n  nova/cinder up, a VM-on-Ceph smoke passed).\n\n## Notes\n\n- On
          SELinux-enforcing hosts the config bind-mount needs `:z`/`:Z` (a\n  pre-existing
          seed-container property).\n- The deploy guide is updated in a companion
          `osism.github.io` change to\n  document the `run.sh` `SEED_CONTAINER` path
          rather than a separate wrapper.\n- Follow-up (out of scope here): record
          the seed image in the release\n  manifest so a release pins the manager
          images *and* the seed that deploys\n  them.\n\nDraft: opening for review
          of the approach before finalizing.\n\n\U0001F916 Generated with [Claude
          Code](https://claude.com/claude-code)\n"
        change_url: https://github.com/osism/container-images/pull/935
        commit_id: 67e23021b989a647c891fe5e8dfb50c098a60ea6
        patchset: 67e23021b989a647c891fe5e8dfb50c098a60ea6
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/container-images
          name: osism/container-images
          short_name: container-images
        src_dir: src/github.com/osism/container-images
        topic: null
      change: '935'
      change_message: "Add multi-release seed container (runtime collection-set selection)\n\n##
        What\n\nMake the `seed` container carry **per-release OSISM collection sets**
        and\nselect the right one at **runtime**, instead of baking only the `main`\ncollections
        at build time.\n\n- `seed/files/releases.txt` \u2014 the owned list of supported
        releases whose\n  collection sets are baked (plus the always-built `latest`
        from `main`).\n- `seed/files/render-requirements.py` \u2014 for a release,
        fetch\n  `osism/release/<version>/base.yml` and render a galaxy `requirements.yml`\n
        \ from its pins (`ansible_collections.osism.{commons,services}` + the\n  `manager_playbooks_version`),
        writing a `.osism-set-info` marker.\n- `seed/files/select-collections.py`
        \u2014 at entrypoint time, resolve the set:\n  `MANAGER_VERSION` env wins,
        else `manager_version` from the bind-mounted\n  `/opt/configuration/environments/manager/configuration.yml`,
        else `latest`;\n  print the chosen `/opt/collections/<v>` path (run.sh exports
        it as\n  `ANSIBLE_COLLECTIONS_PATH`). An unknown/unbaked version hard-fails
        with\n  `USE_NON_MATCHING_COLLECTIONS=<set>` offered as a loud emergency override;\n
        \ unreadable/malformed config hard-fails (only genuinely-absent config falls\n
        \ back to `latest`).\n- `Containerfile` \u2014 a single `RUN` loop bakes each
        release set + `latest`,\n  runs `select-collections.py --build-check`, and
        sets the default\n  `ANSIBLE_COLLECTIONS_PATH=/opt/collections/latest`.\n\n##
        Why\n\nThe seed bakes the OSISM collections from `main` at build time, while
        the\nimages it deploys are pinned independently by `manager_version` in the\nconfiguration
        repo. Nothing ties the two together, and role templates encode\nimage internals
        \u2014 so collection code and deployed image can come from\ndifferent points
        in time and break the deploy (or half-work) with no hint\nthat version skew
        is the cause. The `run.sh` path avoids this because each\nrelease in `osism/release`
        pins the collection axis too; the seed container\nbypassed exactly that alignment.
        Runtime selection restores it **by\nconstruction** \u2014 there is no tag
        to pick wrong.\n\nCost is small: ~5.5 MB per collection set against a ~559
        MB image; all\ncurrently-supported releases share the baked `ansible` version,
        so one\ninterpreter serves every set.\n\n## Validation\n\n- In-container matrix:
        env override, config-repo selection, unknown-release\n  hard error, `USE_NON_MATCHING_COLLECTIONS`
        (incl. unreadable-config\n  diagnostic), malformed-config hard error, tampered-marker
        core-line warning.\n- **Live end-to-end (OSISM 10.1.0):** this image drove
        a full manager\n  bootstrap + service deploy on a real cloud via the generics
        `run.sh`\n  `SEED_CONTAINER` delegation; `select-collections.py` selected\n
        \ `/opt/collections/10.1.0` from the config's `manager_version`, roles ran
        out\n  of that set, and the cluster came up healthy (ceph `HEALTH_OK` 9/9
        OSDs,\n  nova/cinder up, a VM-on-Ceph smoke passed).\n\n## Notes\n\n- On SELinux-enforcing
        hosts the config bind-mount needs `:z`/`:Z` (a\n  pre-existing seed-container
        property).\n- The deploy guide is updated in a companion `osism.github.io`
        change to\n  document the `run.sh` `SEED_CONTAINER` path rather than a separate
        wrapper.\n- Follow-up (out of scope here): record the seed image in the release\n
        \ manifest so a release pins the manager images *and* the seed that deploys\n
        \ them.\n\nDraft: opening for review of the approach before finalizing.\n\n\U0001F916
        Generated with [Claude Code](https://claude.com/claude-code)\n"
      change_url: https://github.com/osism/container-images/pull/935
      child_jobs: []
      commit_id: 67e23021b989a647c891fe5e8dfb50c098a60ea6
      event_id: 59e6d640-6d8e-11f1-83c9-ae1fe575ff56
      executor:
        hostname: 521e9411259a
        inventory_file: /var/lib/zuul/builds/3682ecf3186f4b8c8ffd2661838423fa/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/3682ecf3186f4b8c8ffd2661838423fa/work/logs
        result_data_file: /var/lib/zuul/builds/3682ecf3186f4b8c8ffd2661838423fa/work/results.json
        src_root: /var/lib/zuul/builds/3682ecf3186f4b8c8ffd2661838423fa/work/src
        work_root: /var/lib/zuul/builds/3682ecf3186f4b8c8ffd2661838423fa/work
      include_vars: []
      items:
      - branch: main
        change: '935'
        change_message: "Add multi-release seed container (runtime collection-set
          selection)\n\n## What\n\nMake the `seed` container carry **per-release OSISM
          collection sets** and\nselect the right one at **runtime**, instead of baking
          only the `main`\ncollections at build time.\n\n- `seed/files/releases.txt`
          \u2014 the owned list of supported releases whose\n  collection sets are
          baked (plus the always-built `latest` from `main`).\n- `seed/files/render-requirements.py`
          \u2014 for a release, fetch\n  `osism/release/<version>/base.yml` and render
          a galaxy `requirements.yml`\n  from its pins (`ansible_collections.osism.{commons,services}`
          + the\n  `manager_playbooks_version`), writing a `.osism-set-info` marker.\n-
          `seed/files/select-collections.py` \u2014 at entrypoint time, resolve the
          set:\n  `MANAGER_VERSION` env wins, else `manager_version` from the bind-mounted\n
          \ `/opt/configuration/environments/manager/configuration.yml`, else `latest`;\n
          \ print the chosen `/opt/collections/<v>` path (run.sh exports it as\n  `ANSIBLE_COLLECTIONS_PATH`).
          An unknown/unbaked version hard-fails with\n  `USE_NON_MATCHING_COLLECTIONS=<set>`
          offered as a loud emergency override;\n  unreadable/malformed config hard-fails
          (only genuinely-absent config falls\n  back to `latest`).\n- `Containerfile`
          \u2014 a single `RUN` loop bakes each release set + `latest`,\n  runs `select-collections.py
          --build-check`, and sets the default\n  `ANSIBLE_COLLECTIONS_PATH=/opt/collections/latest`.\n\n##
          Why\n\nThe seed bakes the OSISM collections from `main` at build time, while
          the\nimages it deploys are pinned independently by `manager_version` in
          the\nconfiguration repo. Nothing ties the two together, and role templates
          encode\nimage internals \u2014 so collection code and deployed image can
          come from\ndifferent points in time and break the deploy (or half-work)
          with no hint\nthat version skew is the cause. The `run.sh` path avoids this
          because each\nrelease in `osism/release` pins the collection axis too; the
          seed container\nbypassed exactly that alignment. Runtime selection restores
          it **by\nconstruction** \u2014 there is no tag to pick wrong.\n\nCost is
          small: ~5.5 MB per collection set against a ~559 MB image; all\ncurrently-supported
          releases share the baked `ansible` version, so one\ninterpreter serves every
          set.\n\n## Validation\n\n- In-container matrix: env override, config-repo
          selection, unknown-release\n  hard error, `USE_NON_MATCHING_COLLECTIONS`
          (incl. unreadable-config\n  diagnostic), malformed-config hard error, tampered-marker
          core-line warning.\n- **Live end-to-end (OSISM 10.1.0):** this image drove
          a full manager\n  bootstrap + service deploy on a real cloud via the generics
          `run.sh`\n  `SEED_CONTAINER` delegation; `select-collections.py` selected\n
          \ `/opt/collections/10.1.0` from the config's `manager_version`, roles ran
          out\n  of that set, and the cluster came up healthy (ceph `HEALTH_OK` 9/9
          OSDs,\n  nova/cinder up, a VM-on-Ceph smoke passed).\n\n## Notes\n\n- On
          SELinux-enforcing hosts the config bind-mount needs `:z`/`:Z` (a\n  pre-existing
          seed-container property).\n- The deploy guide is updated in a companion
          `osism.github.io` change to\n  document the `run.sh` `SEED_CONTAINER` path
          rather than a separate wrapper.\n- Follow-up (out of scope here): record
          the seed image in the release\n  manifest so a release pins the manager
          images *and* the seed that deploys\n  them.\n\nDraft: opening for review
          of the approach before finalizing.\n\n\U0001F916 Generated with [Claude
          Code](https://claude.com/claude-code)\n"
        change_url: https://github.com/osism/container-images/pull/935
        commit_id: 67e23021b989a647c891fe5e8dfb50c098a60ea6
        patchset: 67e23021b989a647c891fe5e8dfb50c098a60ea6
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/container-images
          name: osism/container-images
          short_name: container-images
          src_dir: src/github.com/osism/container-images
        topic: null
      job: flake8
      jobtags: []
      max_attempts: 3
      message: QWRkIG11bHRpLXJlbGVhc2Ugc2VlZCBjb250YWluZXIgKHJ1bnRpbWUgY29sbGVjdGlvbi1zZXQgc2VsZWN0aW9uKQoKIyMgV2hhdAoKTWFrZSB0aGUgYHNlZWRgIGNvbnRhaW5lciBjYXJyeSAqKnBlci1yZWxlYXNlIE9TSVNNIGNvbGxlY3Rpb24gc2V0cyoqIGFuZApzZWxlY3QgdGhlIHJpZ2h0IG9uZSBhdCAqKnJ1bnRpbWUqKiwgaW5zdGVhZCBvZiBiYWtpbmcgb25seSB0aGUgYG1haW5gCmNvbGxlY3Rpb25zIGF0IGJ1aWxkIHRpbWUuCgotIGBzZWVkL2ZpbGVzL3JlbGVhc2VzLnR4dGAg4oCUIHRoZSBvd25lZCBsaXN0IG9mIHN1cHBvcnRlZCByZWxlYXNlcyB3aG9zZQogIGNvbGxlY3Rpb24gc2V0cyBhcmUgYmFrZWQgKHBsdXMgdGhlIGFsd2F5cy1idWlsdCBgbGF0ZXN0YCBmcm9tIGBtYWluYCkuCi0gYHNlZWQvZmlsZXMvcmVuZGVyLXJlcXVpcmVtZW50cy5weWAg4oCUIGZvciBhIHJlbGVhc2UsIGZldGNoCiAgYG9zaXNtL3JlbGVhc2UvPHZlcnNpb24+L2Jhc2UueW1sYCBhbmQgcmVuZGVyIGEgZ2FsYXh5IGByZXF1aXJlbWVudHMueW1sYAogIGZyb20gaXRzIHBpbnMgKGBhbnNpYmxlX2NvbGxlY3Rpb25zLm9zaXNtLntjb21tb25zLHNlcnZpY2VzfWAgKyB0aGUKICBgbWFuYWdlcl9wbGF5Ym9va3NfdmVyc2lvbmApLCB3cml0aW5nIGEgYC5vc2lzbS1zZXQtaW5mb2AgbWFya2VyLgotIGBzZWVkL2ZpbGVzL3NlbGVjdC1jb2xsZWN0aW9ucy5weWAg4oCUIGF0IGVudHJ5cG9pbnQgdGltZSwgcmVzb2x2ZSB0aGUgc2V0OgogIGBNQU5BR0VSX1ZFUlNJT05gIGVudiB3aW5zLCBlbHNlIGBtYW5hZ2VyX3ZlcnNpb25gIGZyb20gdGhlIGJpbmQtbW91bnRlZAogIGAvb3B0L2NvbmZpZ3VyYXRpb24vZW52aXJvbm1lbnRzL21hbmFnZXIvY29uZmlndXJhdGlvbi55bWxgLCBlbHNlIGBsYXRlc3RgOwogIHByaW50IHRoZSBjaG9zZW4gYC9vcHQvY29sbGVjdGlvbnMvPHY+YCBwYXRoIChydW4uc2ggZXhwb3J0cyBpdCBhcwogIGBBTlNJQkxFX0NPTExFQ1RJT05TX1BBVEhgKS4gQW4gdW5rbm93bi91bmJha2VkIHZlcnNpb24gaGFyZC1mYWlscyB3aXRoCiAgYFVTRV9OT05fTUFUQ0hJTkdfQ09MTEVDVElPTlM9PHNldD5gIG9mZmVyZWQgYXMgYSBsb3VkIGVtZXJnZW5jeSBvdmVycmlkZTsKICB1bnJlYWRhYmxlL21hbGZvcm1lZCBjb25maWcgaGFyZC1mYWlscyAob25seSBnZW51aW5lbHktYWJzZW50IGNvbmZpZyBmYWxscwogIGJhY2sgdG8gYGxhdGVzdGApLgotIGBDb250YWluZXJmaWxlYCDigJQgYSBzaW5nbGUgYFJVTmAgbG9vcCBiYWtlcyBlYWNoIHJlbGVhc2Ugc2V0ICsgYGxhdGVzdGAsCiAgcnVucyBgc2VsZWN0LWNvbGxlY3Rpb25zLnB5IC0tYnVpbGQtY2hlY2tgLCBhbmQgc2V0cyB0aGUgZGVmYXVsdAogIGBBTlNJQkxFX0NPTExFQ1RJT05TX1BBVEg9L29wdC9jb2xsZWN0aW9ucy9sYXRlc3RgLgoKIyMgV2h5CgpUaGUgc2VlZCBiYWtlcyB0aGUgT1NJU00gY29sbGVjdGlvbnMgZnJvbSBgbWFpbmAgYXQgYnVpbGQgdGltZSwgd2hpbGUgdGhlCmltYWdlcyBpdCBkZXBsb3lzIGFyZSBwaW5uZWQgaW5kZXBlbmRlbnRseSBieSBgbWFuYWdlcl92ZXJzaW9uYCBpbiB0aGUKY29uZmlndXJhdGlvbiByZXBvLiBOb3RoaW5nIHRpZXMgdGhlIHR3byB0b2dldGhlciwgYW5kIHJvbGUgdGVtcGxhdGVzIGVuY29kZQppbWFnZSBpbnRlcm5hbHMg4oCUIHNvIGNvbGxlY3Rpb24gY29kZSBhbmQgZGVwbG95ZWQgaW1hZ2UgY2FuIGNvbWUgZnJvbQpkaWZmZXJlbnQgcG9pbnRzIGluIHRpbWUgYW5kIGJyZWFrIHRoZSBkZXBsb3kgKG9yIGhhbGYtd29yaykgd2l0aCBubyBoaW50CnRoYXQgdmVyc2lvbiBza2V3IGlzIHRoZSBjYXVzZS4gVGhlIGBydW4uc2hgIHBhdGggYXZvaWRzIHRoaXMgYmVjYXVzZSBlYWNoCnJlbGVhc2UgaW4gYG9zaXNtL3JlbGVhc2VgIHBpbnMgdGhlIGNvbGxlY3Rpb24gYXhpcyB0b287IHRoZSBzZWVkIGNvbnRhaW5lcgpieXBhc3NlZCBleGFjdGx5IHRoYXQgYWxpZ25tZW50LiBSdW50aW1lIHNlbGVjdGlvbiByZXN0b3JlcyBpdCAqKmJ5CmNvbnN0cnVjdGlvbioqIOKAlCB0aGVyZSBpcyBubyB0YWcgdG8gcGljayB3cm9uZy4KCkNvc3QgaXMgc21hbGw6IH41LjUgTUIgcGVyIGNvbGxlY3Rpb24gc2V0IGFnYWluc3QgYSB+NTU5IE1CIGltYWdlOyBhbGwKY3VycmVudGx5LXN1cHBvcnRlZCByZWxlYXNlcyBzaGFyZSB0aGUgYmFrZWQgYGFuc2libGVgIHZlcnNpb24sIHNvIG9uZQppbnRlcnByZXRlciBzZXJ2ZXMgZXZlcnkgc2V0LgoKIyMgVmFsaWRhdGlvbgoKLSBJbi1jb250YWluZXIgbWF0cml4OiBlbnYgb3ZlcnJpZGUsIGNvbmZpZy1yZXBvIHNlbGVjdGlvbiwgdW5rbm93bi1yZWxlYXNlCiAgaGFyZCBlcnJvciwgYFVTRV9OT05fTUFUQ0hJTkdfQ09MTEVDVElPTlNgIChpbmNsLiB1bnJlYWRhYmxlLWNvbmZpZwogIGRpYWdub3N0aWMpLCBtYWxmb3JtZWQtY29uZmlnIGhhcmQgZXJyb3IsIHRhbXBlcmVkLW1hcmtlciBjb3JlLWxpbmUgd2FybmluZy4KLSAqKkxpdmUgZW5kLXRvLWVuZCAoT1NJU00gMTAuMS4wKToqKiB0aGlzIGltYWdlIGRyb3ZlIGEgZnVsbCBtYW5hZ2VyCiAgYm9vdHN0cmFwICsgc2VydmljZSBkZXBsb3kgb24gYSByZWFsIGNsb3VkIHZpYSB0aGUgZ2VuZXJpY3MgYHJ1bi5zaGAKICBgU0VFRF9DT05UQUlORVJgIGRlbGVnYXRpb247IGBzZWxlY3QtY29sbGVjdGlvbnMucHlgIHNlbGVjdGVkCiAgYC9vcHQvY29sbGVjdGlvbnMvMTAuMS4wYCBmcm9tIHRoZSBjb25maWcncyBgbWFuYWdlcl92ZXJzaW9uYCwgcm9sZXMgcmFuIG91dAogIG9mIHRoYXQgc2V0LCBhbmQgdGhlIGNsdXN0ZXIgY2FtZSB1cCBoZWFsdGh5IChjZXBoIGBIRUFMVEhfT0tgIDkvOSBPU0RzLAogIG5vdmEvY2luZGVyIHVwLCBhIFZNLW9uLUNlcGggc21va2UgcGFzc2VkKS4KCiMjIE5vdGVzCgotIE9uIFNFTGludXgtZW5mb3JjaW5nIGhvc3RzIHRoZSBjb25maWcgYmluZC1tb3VudCBuZWVkcyBgOnpgL2A6WmAgKGEKICBwcmUtZXhpc3Rpbmcgc2VlZC1jb250YWluZXIgcHJvcGVydHkpLgotIFRoZSBkZXBsb3kgZ3VpZGUgaXMgdXBkYXRlZCBpbiBhIGNvbXBhbmlvbiBgb3Npc20uZ2l0aHViLmlvYCBjaGFuZ2UgdG8KICBkb2N1bWVudCB0aGUgYHJ1bi5zaGAgYFNFRURfQ09OVEFJTkVSYCBwYXRoIHJhdGhlciB0aGFuIGEgc2VwYXJhdGUgd3JhcHBlci4KLSBGb2xsb3ctdXAgKG91dCBvZiBzY29wZSBoZXJlKTogcmVjb3JkIHRoZSBzZWVkIGltYWdlIGluIHRoZSByZWxlYXNlCiAgbWFuaWZlc3Qgc28gYSByZWxlYXNlIHBpbnMgdGhlIG1hbmFnZXIgaW1hZ2VzICphbmQqIHRoZSBzZWVkIHRoYXQgZGVwbG95cwogIHRoZW0uCgpEcmFmdDogb3BlbmluZyBmb3IgcmV2aWV3IG9mIHRoZSBhcHByb2FjaCBiZWZvcmUgZmluYWxpemluZy4KCvCfpJYgR2VuZXJhdGVkIHdpdGggW0NsYXVkZSBDb2RlXShodHRwczovL2NsYXVkZS5jb20vY2xhdWRlLWNvZGUpCg==
      patchset: 67e23021b989a647c891fe5e8dfb50c098a60ea6
      pipeline: check
      playbook_context:
        playbook_projects:
          trusted/project_0/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: 3d5c7b5973754999f7005857a00ce9168944f0f1
          trusted/project_1/github.com/osism/openinfra-zuul-jobs:
            canonical_name: github.com/osism/openinfra-zuul-jobs
            checkout: master
            commit: 038dd8b856c62af4433c8477c5cb3d0480847059
          trusted/project_2/github.com/osism/zuul-jobs:
            canonical_name: github.com/osism/zuul-jobs
            checkout: main
            commit: 0c74c57cedff2b36bb37ca68a5338d1c49991496
          untrusted/project_0/github.com/osism/zuul-jobs:
            canonical_name: github.com/osism/zuul-jobs
            checkout: main
            commit: 0c74c57cedff2b36bb37ca68a5338d1c49991496
          untrusted/project_1/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: 3d5c7b5973754999f7005857a00ce9168944f0f1
          untrusted/project_2/github.com/osism/openinfra-zuul-jobs:
            canonical_name: github.com/osism/openinfra-zuul-jobs
            checkout: master
            commit: 038dd8b856c62af4433c8477c5cb3d0480847059
        playbooks:
        - path: untrusted/project_0/github.com/osism/zuul-jobs/playbooks/flake8/run.yaml
          roles:
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/playbook_0/role_0/zuul-config
            link_target: untrusted/project_1/github.com/osism/zuul-config
            role_path: ansible/playbook_0/role_0/zuul-config/roles
          - checkout: master
            checkout_description: project default branch
            link_name: ansible/playbook_0/role_1/openinfra-zuul-jobs
            link_target: untrusted/project_2/github.com/osism/openinfra-zuul-jobs
            role_path: ansible/playbook_0/role_1/openinfra-zuul-jobs/roles
          - checkout: main
            checkout_description: playbook branch
            link_name: ansible/playbook_0/role_2/zuul-jobs
            link_target: untrusted/project_0/github.com/osism/zuul-jobs
            role_path: ansible/playbook_0/role_2/zuul-jobs/roles
      post_review: false
      post_timeout: 1800
      pre_timeout: null
      project:
        canonical_hostname: github.com
        canonical_name: github.com/osism/container-images
        name: osism/container-images
        short_name: container-images
        src_dir: src/github.com/osism/container-images
      projects:
        github.com/osism/container-images:
          canonical_hostname: github.com
          canonical_name: github.com/osism/container-images
          checkout: main
          checkout_description: zuul branch
          commit: df2897a43bfa3762f947e796d573eeac8198075d
          name: osism/container-images
          required: false
          short_name: container-images
          src_dir: src/github.com/osism/container-images
      ref: refs/pull/935/head
      resources: {}
      tenant: osism
      timeout: 1800
      topic: null
      voting: true
