all:
  children:
    zuul_unreachable:
      hosts: {}
  hosts:
    debian-bookworm:
      ansible_connection: ssh
      ansible_host: 2a13:1a81:8000:3124:f816:3eff:feeb:18b2
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      nodepool:
        az: nova
        cloud: regiocloud-a-ci
        external_id: a0ec067d-8743-470f-883c-c16e50f94ec6
        host_id: 82101243836454d7401d5893feae9e2c5df7cc291646d8a99b33b53b
        interface_ip: 2a13:1a81:8000:3124:f816:3eff:feeb:18b2
        label: debian-bookworm
        node_properties: {}
        private_ipv4: 10.128.7.165
        private_ipv6: null
        provider: regiocloud-a
        public_ipv4: 81.163.193.156
        public_ipv6: 2a13:1a81:8000:3124:f816:3eff:feeb:18b2
        region: null
        slot: null
      tox_environment:
        MANAGER_VERSION: 9.0.0
        NOSE_HTML_OUT_FILE: nose_results.html
        NOSE_WITH_HTML_OUTPUT: 1
        NOSE_WITH_XUNIT: 1
      tox_envlist: test
  vars:
    tox_environment:
      MANAGER_VERSION: 9.0.0
      NOSE_HTML_OUT_FILE: nose_results.html
      NOSE_WITH_HTML_OUTPUT: 1
      NOSE_WITH_XUNIT: 1
    tox_envlist: test
    zuul:
      _inheritance_path:
      - '<Job base explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: osism/zuul-config/zuul.d/jobs.yaml@main#2>'
      - '<Job unittests explicit: None implied: {MatchAny:{ImpliedBranchMatcher:master}}
        source: osism/openinfra-zuul-jobs/zuul.d/general-jobs.yaml@master#9>'
      - '<Job tox explicit: None implied: {MatchAny:{ImpliedBranchMatcher:master}}
        source: osism/openinfra-zuul-jobs/zuul.d/python-jobs.yaml@master#1>'
      - '<Job generics-tox-test-stable-legacy explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: osism/generics/.zuul.yaml@main#10>'
      - '<Job generics-tox-test-stable-legacy explicit: None implied: None source:
        osism/generics/.zuul.yaml@main#44>'
      ansible_version: '9'
      attempts: 1
      branch: main
      build: e78dc2d4fc5845d1a66a471b3fcce5f3
      build_refs:
      - branch: main
        change: '613'
        change_message: "run.sh: accept environments/.vault_pass\n\nThe two execution
          paths of `run.sh` look for the vault password file in different\nplaces:\n\n|
          | seed-container path | local venv path |\n|---|---|---|\n| `environments/.vault_pass`
          | picked up, forwarded as its in-container path | ignored |\n| `environments/manager/.vault_pass`
          | ignored | picked up (`.vault_pass` next to the script) |\n\nSo there is
          no single location an operator can be told to use, and documentation that\nnames
          one has to add an exception for the other path \u2014 which is what the
          manager upgrade\nguide has to do right now:\n\n- osism/osism.github.io#1056\n\nThis
          looks for `../.vault_pass` as well, which is `environments/.vault_pass`
          seen from\n`environments/manager`. The script changes into its own directory
          at the start, so the\nrelative path resolves like the other relative paths
          already used there. The existing\nlookup stays the first candidate, so repositories
          that keep `.vault_pass` next to the\nscript are unaffected.\n\nDeliberately
          one-directional: the container path is *not* taught to accept\n`environments/manager/.vault_pass`.
          Making both locations work everywhere would leave\ntwo valid answers to
          \"where does the password go\"; this way `environments/.vault_pass` is\nthe
          one location that works on every path, and the manager-level file remains
          only for\nbackwards compatibility where it already worked.\n\nChecked by
          running the selection block against a scratch tree:\n\n| files present |
          result |\n|---|---|\n| none, plaintext secrets | unset, as before |\n| `environments/manager/.vault_pass`
          | `.vault_pass` \u2014 unchanged |\n| `environments/.vault_pass` | `../.vault_pass`
          \u2014 new, previously unset |\n| both | `.vault_pass` wins \u2014 unchanged
          |\n| none, encrypted `secrets.yml` | `ANSIBLE_ASK_VAULT_PASS=true` \u2014
          the fallthrough an added `elif` could have broken |\n\nDraft: it pairs with
          the documentation change above, whose exception sentence can be\ndropped
          once this lands.\n\n\U0001F916 Generated with [Claude Code](https://claude.com/claude-code)"
        change_url: https://github.com/osism/generics/pull/613
        commit_id: 00ee3fb426e41f2c766e3d1bdd6e79e55f2afc53
        patchset: 00ee3fb426e41f2c766e3d1bdd6e79e55f2afc53
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/generics
          name: osism/generics
          short_name: generics
        src_dir: src/github.com/osism/generics
        topic: null
      buildset: c29ab9f31c3c4699b55e87ef936a5495
      buildset_refs:
      - branch: main
        change: '613'
        change_message: "run.sh: accept environments/.vault_pass\n\nThe two execution
          paths of `run.sh` look for the vault password file in different\nplaces:\n\n|
          | seed-container path | local venv path |\n|---|---|---|\n| `environments/.vault_pass`
          | picked up, forwarded as its in-container path | ignored |\n| `environments/manager/.vault_pass`
          | ignored | picked up (`.vault_pass` next to the script) |\n\nSo there is
          no single location an operator can be told to use, and documentation that\nnames
          one has to add an exception for the other path \u2014 which is what the
          manager upgrade\nguide has to do right now:\n\n- osism/osism.github.io#1056\n\nThis
          looks for `../.vault_pass` as well, which is `environments/.vault_pass`
          seen from\n`environments/manager`. The script changes into its own directory
          at the start, so the\nrelative path resolves like the other relative paths
          already used there. The existing\nlookup stays the first candidate, so repositories
          that keep `.vault_pass` next to the\nscript are unaffected.\n\nDeliberately
          one-directional: the container path is *not* taught to accept\n`environments/manager/.vault_pass`.
          Making both locations work everywhere would leave\ntwo valid answers to
          \"where does the password go\"; this way `environments/.vault_pass` is\nthe
          one location that works on every path, and the manager-level file remains
          only for\nbackwards compatibility where it already worked.\n\nChecked by
          running the selection block against a scratch tree:\n\n| files present |
          result |\n|---|---|\n| none, plaintext secrets | unset, as before |\n| `environments/manager/.vault_pass`
          | `.vault_pass` \u2014 unchanged |\n| `environments/.vault_pass` | `../.vault_pass`
          \u2014 new, previously unset |\n| both | `.vault_pass` wins \u2014 unchanged
          |\n| none, encrypted `secrets.yml` | `ANSIBLE_ASK_VAULT_PASS=true` \u2014
          the fallthrough an added `elif` could have broken |\n\nDraft: it pairs with
          the documentation change above, whose exception sentence can be\ndropped
          once this lands.\n\n\U0001F916 Generated with [Claude Code](https://claude.com/claude-code)"
        change_url: https://github.com/osism/generics/pull/613
        commit_id: 00ee3fb426e41f2c766e3d1bdd6e79e55f2afc53
        patchset: 00ee3fb426e41f2c766e3d1bdd6e79e55f2afc53
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/generics
          name: osism/generics
          short_name: generics
        src_dir: src/github.com/osism/generics
        topic: null
      change: '613'
      change_message: "run.sh: accept environments/.vault_pass\n\nThe two execution
        paths of `run.sh` look for the vault password file in different\nplaces:\n\n|
        | seed-container path | local venv path |\n|---|---|---|\n| `environments/.vault_pass`
        | picked up, forwarded as its in-container path | ignored |\n| `environments/manager/.vault_pass`
        | ignored | picked up (`.vault_pass` next to the script) |\n\nSo there is
        no single location an operator can be told to use, and documentation that\nnames
        one has to add an exception for the other path \u2014 which is what the manager
        upgrade\nguide has to do right now:\n\n- osism/osism.github.io#1056\n\nThis
        looks for `../.vault_pass` as well, which is `environments/.vault_pass` seen
        from\n`environments/manager`. The script changes into its own directory at
        the start, so the\nrelative path resolves like the other relative paths already
        used there. The existing\nlookup stays the first candidate, so repositories
        that keep `.vault_pass` next to the\nscript are unaffected.\n\nDeliberately
        one-directional: the container path is *not* taught to accept\n`environments/manager/.vault_pass`.
        Making both locations work everywhere would leave\ntwo valid answers to \"where
        does the password go\"; this way `environments/.vault_pass` is\nthe one location
        that works on every path, and the manager-level file remains only for\nbackwards
        compatibility where it already worked.\n\nChecked by running the selection
        block against a scratch tree:\n\n| files present | result |\n|---|---|\n|
        none, plaintext secrets | unset, as before |\n| `environments/manager/.vault_pass`
        | `.vault_pass` \u2014 unchanged |\n| `environments/.vault_pass` | `../.vault_pass`
        \u2014 new, previously unset |\n| both | `.vault_pass` wins \u2014 unchanged
        |\n| none, encrypted `secrets.yml` | `ANSIBLE_ASK_VAULT_PASS=true` \u2014
        the fallthrough an added `elif` could have broken |\n\nDraft: it pairs with
        the documentation change above, whose exception sentence can be\ndropped once
        this lands.\n\n\U0001F916 Generated with [Claude Code](https://claude.com/claude-code)"
      change_url: https://github.com/osism/generics/pull/613
      child_jobs: []
      commit_id: 00ee3fb426e41f2c766e3d1bdd6e79e55f2afc53
      event_id: d8919cb0-9187-11f1-9831-2ed281615419
      executor:
        hostname: 521e9411259a
        inventory_file: /var/lib/zuul/builds/e78dc2d4fc5845d1a66a471b3fcce5f3/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/e78dc2d4fc5845d1a66a471b3fcce5f3/work/logs
        result_data_file: /var/lib/zuul/builds/e78dc2d4fc5845d1a66a471b3fcce5f3/work/results.json
        src_root: /var/lib/zuul/builds/e78dc2d4fc5845d1a66a471b3fcce5f3/work/src
        work_root: /var/lib/zuul/builds/e78dc2d4fc5845d1a66a471b3fcce5f3/work
      include_vars: []
      items:
      - branch: main
        change: '613'
        change_message: "run.sh: accept environments/.vault_pass\n\nThe two execution
          paths of `run.sh` look for the vault password file in different\nplaces:\n\n|
          | seed-container path | local venv path |\n|---|---|---|\n| `environments/.vault_pass`
          | picked up, forwarded as its in-container path | ignored |\n| `environments/manager/.vault_pass`
          | ignored | picked up (`.vault_pass` next to the script) |\n\nSo there is
          no single location an operator can be told to use, and documentation that\nnames
          one has to add an exception for the other path \u2014 which is what the
          manager upgrade\nguide has to do right now:\n\n- osism/osism.github.io#1056\n\nThis
          looks for `../.vault_pass` as well, which is `environments/.vault_pass`
          seen from\n`environments/manager`. The script changes into its own directory
          at the start, so the\nrelative path resolves like the other relative paths
          already used there. The existing\nlookup stays the first candidate, so repositories
          that keep `.vault_pass` next to the\nscript are unaffected.\n\nDeliberately
          one-directional: the container path is *not* taught to accept\n`environments/manager/.vault_pass`.
          Making both locations work everywhere would leave\ntwo valid answers to
          \"where does the password go\"; this way `environments/.vault_pass` is\nthe
          one location that works on every path, and the manager-level file remains
          only for\nbackwards compatibility where it already worked.\n\nChecked by
          running the selection block against a scratch tree:\n\n| files present |
          result |\n|---|---|\n| none, plaintext secrets | unset, as before |\n| `environments/manager/.vault_pass`
          | `.vault_pass` \u2014 unchanged |\n| `environments/.vault_pass` | `../.vault_pass`
          \u2014 new, previously unset |\n| both | `.vault_pass` wins \u2014 unchanged
          |\n| none, encrypted `secrets.yml` | `ANSIBLE_ASK_VAULT_PASS=true` \u2014
          the fallthrough an added `elif` could have broken |\n\nDraft: it pairs with
          the documentation change above, whose exception sentence can be\ndropped
          once this lands.\n\n\U0001F916 Generated with [Claude Code](https://claude.com/claude-code)"
        change_url: https://github.com/osism/generics/pull/613
        commit_id: 00ee3fb426e41f2c766e3d1bdd6e79e55f2afc53
        patchset: 00ee3fb426e41f2c766e3d1bdd6e79e55f2afc53
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/generics
          name: osism/generics
          short_name: generics
          src_dir: src/github.com/osism/generics
        topic: null
      job: generics-tox-test-stable-legacy
      jobtags: []
      max_attempts: 3
      message: cnVuLnNoOiBhY2NlcHQgZW52aXJvbm1lbnRzLy52YXVsdF9wYXNzCgpUaGUgdHdvIGV4ZWN1dGlvbiBwYXRocyBvZiBgcnVuLnNoYCBsb29rIGZvciB0aGUgdmF1bHQgcGFzc3dvcmQgZmlsZSBpbiBkaWZmZXJlbnQKcGxhY2VzOgoKfCB8IHNlZWQtY29udGFpbmVyIHBhdGggfCBsb2NhbCB2ZW52IHBhdGggfAp8LS0tfC0tLXwtLS18CnwgYGVudmlyb25tZW50cy8udmF1bHRfcGFzc2AgfCBwaWNrZWQgdXAsIGZvcndhcmRlZCBhcyBpdHMgaW4tY29udGFpbmVyIHBhdGggfCBpZ25vcmVkIHwKfCBgZW52aXJvbm1lbnRzL21hbmFnZXIvLnZhdWx0X3Bhc3NgIHwgaWdub3JlZCB8IHBpY2tlZCB1cCAoYC52YXVsdF9wYXNzYCBuZXh0IHRvIHRoZSBzY3JpcHQpIHwKClNvIHRoZXJlIGlzIG5vIHNpbmdsZSBsb2NhdGlvbiBhbiBvcGVyYXRvciBjYW4gYmUgdG9sZCB0byB1c2UsIGFuZCBkb2N1bWVudGF0aW9uIHRoYXQKbmFtZXMgb25lIGhhcyB0byBhZGQgYW4gZXhjZXB0aW9uIGZvciB0aGUgb3RoZXIgcGF0aCDigJQgd2hpY2ggaXMgd2hhdCB0aGUgbWFuYWdlciB1cGdyYWRlCmd1aWRlIGhhcyB0byBkbyByaWdodCBub3c6CgotIG9zaXNtL29zaXNtLmdpdGh1Yi5pbyMxMDU2CgpUaGlzIGxvb2tzIGZvciBgLi4vLnZhdWx0X3Bhc3NgIGFzIHdlbGwsIHdoaWNoIGlzIGBlbnZpcm9ubWVudHMvLnZhdWx0X3Bhc3NgIHNlZW4gZnJvbQpgZW52aXJvbm1lbnRzL21hbmFnZXJgLiBUaGUgc2NyaXB0IGNoYW5nZXMgaW50byBpdHMgb3duIGRpcmVjdG9yeSBhdCB0aGUgc3RhcnQsIHNvIHRoZQpyZWxhdGl2ZSBwYXRoIHJlc29sdmVzIGxpa2UgdGhlIG90aGVyIHJlbGF0aXZlIHBhdGhzIGFscmVhZHkgdXNlZCB0aGVyZS4gVGhlIGV4aXN0aW5nCmxvb2t1cCBzdGF5cyB0aGUgZmlyc3QgY2FuZGlkYXRlLCBzbyByZXBvc2l0b3JpZXMgdGhhdCBrZWVwIGAudmF1bHRfcGFzc2AgbmV4dCB0byB0aGUKc2NyaXB0IGFyZSB1bmFmZmVjdGVkLgoKRGVsaWJlcmF0ZWx5IG9uZS1kaXJlY3Rpb25hbDogdGhlIGNvbnRhaW5lciBwYXRoIGlzICpub3QqIHRhdWdodCB0byBhY2NlcHQKYGVudmlyb25tZW50cy9tYW5hZ2VyLy52YXVsdF9wYXNzYC4gTWFraW5nIGJvdGggbG9jYXRpb25zIHdvcmsgZXZlcnl3aGVyZSB3b3VsZCBsZWF2ZQp0d28gdmFsaWQgYW5zd2VycyB0byAid2hlcmUgZG9lcyB0aGUgcGFzc3dvcmQgZ28iOyB0aGlzIHdheSBgZW52aXJvbm1lbnRzLy52YXVsdF9wYXNzYCBpcwp0aGUgb25lIGxvY2F0aW9uIHRoYXQgd29ya3Mgb24gZXZlcnkgcGF0aCwgYW5kIHRoZSBtYW5hZ2VyLWxldmVsIGZpbGUgcmVtYWlucyBvbmx5IGZvcgpiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aGVyZSBpdCBhbHJlYWR5IHdvcmtlZC4KCkNoZWNrZWQgYnkgcnVubmluZyB0aGUgc2VsZWN0aW9uIGJsb2NrIGFnYWluc3QgYSBzY3JhdGNoIHRyZWU6Cgp8IGZpbGVzIHByZXNlbnQgfCByZXN1bHQgfAp8LS0tfC0tLXwKfCBub25lLCBwbGFpbnRleHQgc2VjcmV0cyB8IHVuc2V0LCBhcyBiZWZvcmUgfAp8IGBlbnZpcm9ubWVudHMvbWFuYWdlci8udmF1bHRfcGFzc2AgfCBgLnZhdWx0X3Bhc3NgIOKAlCB1bmNoYW5nZWQgfAp8IGBlbnZpcm9ubWVudHMvLnZhdWx0X3Bhc3NgIHwgYC4uLy52YXVsdF9wYXNzYCDigJQgbmV3LCBwcmV2aW91c2x5IHVuc2V0IHwKfCBib3RoIHwgYC52YXVsdF9wYXNzYCB3aW5zIOKAlCB1bmNoYW5nZWQgfAp8IG5vbmUsIGVuY3J5cHRlZCBgc2VjcmV0cy55bWxgIHwgYEFOU0lCTEVfQVNLX1ZBVUxUX1BBU1M9dHJ1ZWAg4oCUIHRoZSBmYWxsdGhyb3VnaCBhbiBhZGRlZCBgZWxpZmAgY291bGQgaGF2ZSBicm9rZW4gfAoKRHJhZnQ6IGl0IHBhaXJzIHdpdGggdGhlIGRvY3VtZW50YXRpb24gY2hhbmdlIGFib3ZlLCB3aG9zZSBleGNlcHRpb24gc2VudGVuY2UgY2FuIGJlCmRyb3BwZWQgb25jZSB0aGlzIGxhbmRzLgoK8J+kliBHZW5lcmF0ZWQgd2l0aCBbQ2xhdWRlIENvZGVdKGh0dHBzOi8vY2xhdWRlLmNvbS9jbGF1ZGUtY29kZSk=
      patchset: 00ee3fb426e41f2c766e3d1bdd6e79e55f2afc53
      pipeline: check
      playbook_context:
        playbook_projects:
          trusted/project_0/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: 71b711c422c10c242a8f785dc6d41ed9d12e9cd3
          trusted/project_1/github.com/osism/openinfra-zuul-jobs:
            canonical_name: github.com/osism/openinfra-zuul-jobs
            checkout: master
            commit: 242732586e2cba04d04867d3e302888c766bc231
          trusted/project_2/github.com/osism/zuul-jobs:
            canonical_name: github.com/osism/zuul-jobs
            checkout: main
            commit: dcb06ea8a3ad422cc9d98b376216617b2daa6a02
          untrusted/project_0/github.com/osism/openinfra-zuul-jobs:
            canonical_name: github.com/osism/openinfra-zuul-jobs
            checkout: master
            commit: 242732586e2cba04d04867d3e302888c766bc231
          untrusted/project_1/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: 71b711c422c10c242a8f785dc6d41ed9d12e9cd3
          untrusted/project_2/github.com/osism/zuul-jobs:
            canonical_name: github.com/osism/zuul-jobs
            checkout: main
            commit: dcb06ea8a3ad422cc9d98b376216617b2daa6a02
        playbooks:
        - path: untrusted/project_0/github.com/osism/openinfra-zuul-jobs/playbooks/tox/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: playbook branch
            link_name: ansible/playbook_0/role_1/openinfra-zuul-jobs
            link_target: untrusted/project_0/github.com/osism/openinfra-zuul-jobs
            role_path: ansible/playbook_0/role_1/openinfra-zuul-jobs/roles
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/playbook_0/role_2/zuul-jobs
            link_target: untrusted/project_2/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/generics
        name: osism/generics
        short_name: generics
        src_dir: src/github.com/osism/generics
      projects:
        github.com/osism/generics:
          canonical_hostname: github.com
          canonical_name: github.com/osism/generics
          checkout: main
          checkout_description: zuul branch
          commit: e3866e4b952aa7d29b218d379434897dc624f66c
          name: osism/generics
          required: false
          short_name: generics
          src_dir: src/github.com/osism/generics
      ref: refs/pull/613/head
      resources: {}
      tenant: osism
      timeout: 1800
      topic: null
      voting: true
