all:
  children:
    zuul_unreachable:
      hosts: {}
  hosts:
    debian-bookworm:
      ansible_connection: ssh
      ansible_host: 2a13:1a81:8000:3124:f816:3eff:fea7:6cd4
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      nodepool:
        az: nova
        cloud: regiocloud-a-ci
        external_id: 8ad258e5-df69-481f-ac3a-3762a797ac7a
        host_id: 7f2607eceb24f4583c6f9496c53c64b51afe50de5eacda4379b21c42
        interface_ip: 2a13:1a81:8000:3124:f816:3eff:fea7:6cd4
        label: debian-bookworm
        node_properties: {}
        private_ipv4: 10.128.0.108
        private_ipv6: null
        provider: regiocloud-a
        public_ipv4: 81.163.192.58
        public_ipv6: 2a13:1a81:8000:3124:f816:3eff:fea7:6cd4
        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 python-osism-integration-tests explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: osism/python-osism/.zuul.yaml@main#138>'
      - '<Job python-osism-integration-tests explicit: None implied: None source:
        osism/python-osism/.zuul.yaml@main#143>'
      ansible_version: '9'
      attempts: 1
      branch: main
      build: 270fd8344e284a6db44fd88268b30904
      build_refs:
      - branch: main
        change: '2481'
        change_message: "Add unit tests for OpenStack command group\n\nCloses #2365\n\nAdds
          unit tests for the OpenStack-facing CLI command group under `osism/commands/`,
          following the test targets listed in the issue.\n\nNew test files:\n\n-
          `tests/unit/commands/test_migrate.py` \u2014 `Rabbitmq3to4`: kolla configuration
          validation, vhost preparation, queue/exchange classification, connection
          draining, deletion helpers, and the `check`/`list`/`delete` subcommand wiring
          including dry-run and error paths.\n- `tests/unit/commands/test_octavia.py`
          \u2014 both amphora wait helpers (poll loops, timeout bounds, query arguments).\n-
          `tests/unit/commands/test_amphora.py` \u2014 `AmphoraRestore` and `AmphoraRotate`
          including cleanup on failover errors, age-based rotation, and `ConflictException`
          handling.\n- `tests/unit/commands/test_loadbalancer.py` \u2014 configuration/password
          loaders, database status resets (exact SQL), and the `list`/`reset`/`delete`
          commands with prompt, failover, and `finally` cleanup handling.\n- `tests/unit/commands/test_manage_commands.py`
          \u2014 Celery `.si(...)` signature assembly for the image, flavor, dnsmasq,
          and project manage commands.\n\nExtended test files:\n\n- `test_compute.py`
          \u2014 enable/disable, listing with project/domain filters and uptime details,
          live/cold migration classification and polling, migration list query assembly,
          start/stop eligibility, evacuation.\n- `test_volume.py` \u2014 stuck-volume
          listing across all five queried statuses and the `VolumeRepair` sequences.\n-
          `test_status.py` \u2014 `display_time`, Galera health checks, `Database`/`Messaging`
          in both log and script formats, RabbitMQ overview/alarm/partition parsing.\n-
          `test_report.py` \u2014 per-host processing for `Memory`, `Lldp`, `Bgp`,
          and `Status` including failure bookkeeping.\n- `test_vault.py` \u2014 `SetPassword`/`UnsetPassword`
          and the `Check` failure chain with a real Fernet key round-trip.\n\nDeviations
          from the issue text (the code moved on since it was written): `loadbalancer.py`
          and `status.py` now delegate database connections to `osism.utils.mariadb.connect`
          instead of calling `pymysql.connect` directly (the proxysql shard-user selection
          lives there), and `report bgp --afi` rejects invalid casing via argparse
          `choices` before `take_action` runs. Tests assert against the current code.\n\n\U0001F916
          Generated with [Claude Code](https://claude.com/claude-code)"
        change_url: https://github.com/osism/python-osism/pull/2481
        commit_id: 88c7254207f515cb22971773f0dd8547ee4359f6
        patchset: 88c7254207f515cb22971773f0dd8547ee4359f6
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/python-osism
          name: osism/python-osism
          short_name: python-osism
        src_dir: src/github.com/osism/python-osism
        topic: null
      buildset: 0b20fc73d1884bffa457fb88e2ed091d
      buildset_refs:
      - branch: main
        change: '2481'
        change_message: "Add unit tests for OpenStack command group\n\nCloses #2365\n\nAdds
          unit tests for the OpenStack-facing CLI command group under `osism/commands/`,
          following the test targets listed in the issue.\n\nNew test files:\n\n-
          `tests/unit/commands/test_migrate.py` \u2014 `Rabbitmq3to4`: kolla configuration
          validation, vhost preparation, queue/exchange classification, connection
          draining, deletion helpers, and the `check`/`list`/`delete` subcommand wiring
          including dry-run and error paths.\n- `tests/unit/commands/test_octavia.py`
          \u2014 both amphora wait helpers (poll loops, timeout bounds, query arguments).\n-
          `tests/unit/commands/test_amphora.py` \u2014 `AmphoraRestore` and `AmphoraRotate`
          including cleanup on failover errors, age-based rotation, and `ConflictException`
          handling.\n- `tests/unit/commands/test_loadbalancer.py` \u2014 configuration/password
          loaders, database status resets (exact SQL), and the `list`/`reset`/`delete`
          commands with prompt, failover, and `finally` cleanup handling.\n- `tests/unit/commands/test_manage_commands.py`
          \u2014 Celery `.si(...)` signature assembly for the image, flavor, dnsmasq,
          and project manage commands.\n\nExtended test files:\n\n- `test_compute.py`
          \u2014 enable/disable, listing with project/domain filters and uptime details,
          live/cold migration classification and polling, migration list query assembly,
          start/stop eligibility, evacuation.\n- `test_volume.py` \u2014 stuck-volume
          listing across all five queried statuses and the `VolumeRepair` sequences.\n-
          `test_status.py` \u2014 `display_time`, Galera health checks, `Database`/`Messaging`
          in both log and script formats, RabbitMQ overview/alarm/partition parsing.\n-
          `test_report.py` \u2014 per-host processing for `Memory`, `Lldp`, `Bgp`,
          and `Status` including failure bookkeeping.\n- `test_vault.py` \u2014 `SetPassword`/`UnsetPassword`
          and the `Check` failure chain with a real Fernet key round-trip.\n\nDeviations
          from the issue text (the code moved on since it was written): `loadbalancer.py`
          and `status.py` now delegate database connections to `osism.utils.mariadb.connect`
          instead of calling `pymysql.connect` directly (the proxysql shard-user selection
          lives there), and `report bgp --afi` rejects invalid casing via argparse
          `choices` before `take_action` runs. Tests assert against the current code.\n\n\U0001F916
          Generated with [Claude Code](https://claude.com/claude-code)"
        change_url: https://github.com/osism/python-osism/pull/2481
        commit_id: 88c7254207f515cb22971773f0dd8547ee4359f6
        patchset: 88c7254207f515cb22971773f0dd8547ee4359f6
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/python-osism
          name: osism/python-osism
          short_name: python-osism
        src_dir: src/github.com/osism/python-osism
        topic: null
      change: '2481'
      change_message: "Add unit tests for OpenStack command group\n\nCloses #2365\n\nAdds
        unit tests for the OpenStack-facing CLI command group under `osism/commands/`,
        following the test targets listed in the issue.\n\nNew test files:\n\n- `tests/unit/commands/test_migrate.py`
        \u2014 `Rabbitmq3to4`: kolla configuration validation, vhost preparation,
        queue/exchange classification, connection draining, deletion helpers, and
        the `check`/`list`/`delete` subcommand wiring including dry-run and error
        paths.\n- `tests/unit/commands/test_octavia.py` \u2014 both amphora wait helpers
        (poll loops, timeout bounds, query arguments).\n- `tests/unit/commands/test_amphora.py`
        \u2014 `AmphoraRestore` and `AmphoraRotate` including cleanup on failover
        errors, age-based rotation, and `ConflictException` handling.\n- `tests/unit/commands/test_loadbalancer.py`
        \u2014 configuration/password loaders, database status resets (exact SQL),
        and the `list`/`reset`/`delete` commands with prompt, failover, and `finally`
        cleanup handling.\n- `tests/unit/commands/test_manage_commands.py` \u2014
        Celery `.si(...)` signature assembly for the image, flavor, dnsmasq, and project
        manage commands.\n\nExtended test files:\n\n- `test_compute.py` \u2014 enable/disable,
        listing with project/domain filters and uptime details, live/cold migration
        classification and polling, migration list query assembly, start/stop eligibility,
        evacuation.\n- `test_volume.py` \u2014 stuck-volume listing across all five
        queried statuses and the `VolumeRepair` sequences.\n- `test_status.py` \u2014
        `display_time`, Galera health checks, `Database`/`Messaging` in both log and
        script formats, RabbitMQ overview/alarm/partition parsing.\n- `test_report.py`
        \u2014 per-host processing for `Memory`, `Lldp`, `Bgp`, and `Status` including
        failure bookkeeping.\n- `test_vault.py` \u2014 `SetPassword`/`UnsetPassword`
        and the `Check` failure chain with a real Fernet key round-trip.\n\nDeviations
        from the issue text (the code moved on since it was written): `loadbalancer.py`
        and `status.py` now delegate database connections to `osism.utils.mariadb.connect`
        instead of calling `pymysql.connect` directly (the proxysql shard-user selection
        lives there), and `report bgp --afi` rejects invalid casing via argparse `choices`
        before `take_action` runs. Tests assert against the current code.\n\n\U0001F916
        Generated with [Claude Code](https://claude.com/claude-code)"
      change_url: https://github.com/osism/python-osism/pull/2481
      child_jobs: []
      commit_id: 88c7254207f515cb22971773f0dd8547ee4359f6
      event_id: 64077b80-81e2-11f1-9930-a82835631842
      executor:
        hostname: 521e9411259a
        inventory_file: /var/lib/zuul/builds/270fd8344e284a6db44fd88268b30904/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/270fd8344e284a6db44fd88268b30904/work/logs
        result_data_file: /var/lib/zuul/builds/270fd8344e284a6db44fd88268b30904/work/results.json
        src_root: /var/lib/zuul/builds/270fd8344e284a6db44fd88268b30904/work/src
        work_root: /var/lib/zuul/builds/270fd8344e284a6db44fd88268b30904/work
      include_vars: []
      items:
      - branch: main
        change: '2481'
        change_message: "Add unit tests for OpenStack command group\n\nCloses #2365\n\nAdds
          unit tests for the OpenStack-facing CLI command group under `osism/commands/`,
          following the test targets listed in the issue.\n\nNew test files:\n\n-
          `tests/unit/commands/test_migrate.py` \u2014 `Rabbitmq3to4`: kolla configuration
          validation, vhost preparation, queue/exchange classification, connection
          draining, deletion helpers, and the `check`/`list`/`delete` subcommand wiring
          including dry-run and error paths.\n- `tests/unit/commands/test_octavia.py`
          \u2014 both amphora wait helpers (poll loops, timeout bounds, query arguments).\n-
          `tests/unit/commands/test_amphora.py` \u2014 `AmphoraRestore` and `AmphoraRotate`
          including cleanup on failover errors, age-based rotation, and `ConflictException`
          handling.\n- `tests/unit/commands/test_loadbalancer.py` \u2014 configuration/password
          loaders, database status resets (exact SQL), and the `list`/`reset`/`delete`
          commands with prompt, failover, and `finally` cleanup handling.\n- `tests/unit/commands/test_manage_commands.py`
          \u2014 Celery `.si(...)` signature assembly for the image, flavor, dnsmasq,
          and project manage commands.\n\nExtended test files:\n\n- `test_compute.py`
          \u2014 enable/disable, listing with project/domain filters and uptime details,
          live/cold migration classification and polling, migration list query assembly,
          start/stop eligibility, evacuation.\n- `test_volume.py` \u2014 stuck-volume
          listing across all five queried statuses and the `VolumeRepair` sequences.\n-
          `test_status.py` \u2014 `display_time`, Galera health checks, `Database`/`Messaging`
          in both log and script formats, RabbitMQ overview/alarm/partition parsing.\n-
          `test_report.py` \u2014 per-host processing for `Memory`, `Lldp`, `Bgp`,
          and `Status` including failure bookkeeping.\n- `test_vault.py` \u2014 `SetPassword`/`UnsetPassword`
          and the `Check` failure chain with a real Fernet key round-trip.\n\nDeviations
          from the issue text (the code moved on since it was written): `loadbalancer.py`
          and `status.py` now delegate database connections to `osism.utils.mariadb.connect`
          instead of calling `pymysql.connect` directly (the proxysql shard-user selection
          lives there), and `report bgp --afi` rejects invalid casing via argparse
          `choices` before `take_action` runs. Tests assert against the current code.\n\n\U0001F916
          Generated with [Claude Code](https://claude.com/claude-code)"
        change_url: https://github.com/osism/python-osism/pull/2481
        commit_id: 88c7254207f515cb22971773f0dd8547ee4359f6
        patchset: 88c7254207f515cb22971773f0dd8547ee4359f6
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/python-osism
          name: osism/python-osism
          short_name: python-osism
          src_dir: src/github.com/osism/python-osism
        topic: null
      job: python-osism-integration-tests
      jobtags: []
      max_attempts: 3
      message: QWRkIHVuaXQgdGVzdHMgZm9yIE9wZW5TdGFjayBjb21tYW5kIGdyb3VwCgpDbG9zZXMgIzIzNjUKCkFkZHMgdW5pdCB0ZXN0cyBmb3IgdGhlIE9wZW5TdGFjay1mYWNpbmcgQ0xJIGNvbW1hbmQgZ3JvdXAgdW5kZXIgYG9zaXNtL2NvbW1hbmRzL2AsIGZvbGxvd2luZyB0aGUgdGVzdCB0YXJnZXRzIGxpc3RlZCBpbiB0aGUgaXNzdWUuCgpOZXcgdGVzdCBmaWxlczoKCi0gYHRlc3RzL3VuaXQvY29tbWFuZHMvdGVzdF9taWdyYXRlLnB5YCDigJQgYFJhYmJpdG1xM3RvNGA6IGtvbGxhIGNvbmZpZ3VyYXRpb24gdmFsaWRhdGlvbiwgdmhvc3QgcHJlcGFyYXRpb24sIHF1ZXVlL2V4Y2hhbmdlIGNsYXNzaWZpY2F0aW9uLCBjb25uZWN0aW9uIGRyYWluaW5nLCBkZWxldGlvbiBoZWxwZXJzLCBhbmQgdGhlIGBjaGVja2AvYGxpc3RgL2BkZWxldGVgIHN1YmNvbW1hbmQgd2lyaW5nIGluY2x1ZGluZyBkcnktcnVuIGFuZCBlcnJvciBwYXRocy4KLSBgdGVzdHMvdW5pdC9jb21tYW5kcy90ZXN0X29jdGF2aWEucHlgIOKAlCBib3RoIGFtcGhvcmEgd2FpdCBoZWxwZXJzIChwb2xsIGxvb3BzLCB0aW1lb3V0IGJvdW5kcywgcXVlcnkgYXJndW1lbnRzKS4KLSBgdGVzdHMvdW5pdC9jb21tYW5kcy90ZXN0X2FtcGhvcmEucHlgIOKAlCBgQW1waG9yYVJlc3RvcmVgIGFuZCBgQW1waG9yYVJvdGF0ZWAgaW5jbHVkaW5nIGNsZWFudXAgb24gZmFpbG92ZXIgZXJyb3JzLCBhZ2UtYmFzZWQgcm90YXRpb24sIGFuZCBgQ29uZmxpY3RFeGNlcHRpb25gIGhhbmRsaW5nLgotIGB0ZXN0cy91bml0L2NvbW1hbmRzL3Rlc3RfbG9hZGJhbGFuY2VyLnB5YCDigJQgY29uZmlndXJhdGlvbi9wYXNzd29yZCBsb2FkZXJzLCBkYXRhYmFzZSBzdGF0dXMgcmVzZXRzIChleGFjdCBTUUwpLCBhbmQgdGhlIGBsaXN0YC9gcmVzZXRgL2BkZWxldGVgIGNvbW1hbmRzIHdpdGggcHJvbXB0LCBmYWlsb3ZlciwgYW5kIGBmaW5hbGx5YCBjbGVhbnVwIGhhbmRsaW5nLgotIGB0ZXN0cy91bml0L2NvbW1hbmRzL3Rlc3RfbWFuYWdlX2NvbW1hbmRzLnB5YCDigJQgQ2VsZXJ5IGAuc2koLi4uKWAgc2lnbmF0dXJlIGFzc2VtYmx5IGZvciB0aGUgaW1hZ2UsIGZsYXZvciwgZG5zbWFzcSwgYW5kIHByb2plY3QgbWFuYWdlIGNvbW1hbmRzLgoKRXh0ZW5kZWQgdGVzdCBmaWxlczoKCi0gYHRlc3RfY29tcHV0ZS5weWAg4oCUIGVuYWJsZS9kaXNhYmxlLCBsaXN0aW5nIHdpdGggcHJvamVjdC9kb21haW4gZmlsdGVycyBhbmQgdXB0aW1lIGRldGFpbHMsIGxpdmUvY29sZCBtaWdyYXRpb24gY2xhc3NpZmljYXRpb24gYW5kIHBvbGxpbmcsIG1pZ3JhdGlvbiBsaXN0IHF1ZXJ5IGFzc2VtYmx5LCBzdGFydC9zdG9wIGVsaWdpYmlsaXR5LCBldmFjdWF0aW9uLgotIGB0ZXN0X3ZvbHVtZS5weWAg4oCUIHN0dWNrLXZvbHVtZSBsaXN0aW5nIGFjcm9zcyBhbGwgZml2ZSBxdWVyaWVkIHN0YXR1c2VzIGFuZCB0aGUgYFZvbHVtZVJlcGFpcmAgc2VxdWVuY2VzLgotIGB0ZXN0X3N0YXR1cy5weWAg4oCUIGBkaXNwbGF5X3RpbWVgLCBHYWxlcmEgaGVhbHRoIGNoZWNrcywgYERhdGFiYXNlYC9gTWVzc2FnaW5nYCBpbiBib3RoIGxvZyBhbmQgc2NyaXB0IGZvcm1hdHMsIFJhYmJpdE1RIG92ZXJ2aWV3L2FsYXJtL3BhcnRpdGlvbiBwYXJzaW5nLgotIGB0ZXN0X3JlcG9ydC5weWAg4oCUIHBlci1ob3N0IHByb2Nlc3NpbmcgZm9yIGBNZW1vcnlgLCBgTGxkcGAsIGBCZ3BgLCBhbmQgYFN0YXR1c2AgaW5jbHVkaW5nIGZhaWx1cmUgYm9va2tlZXBpbmcuCi0gYHRlc3RfdmF1bHQucHlgIOKAlCBgU2V0UGFzc3dvcmRgL2BVbnNldFBhc3N3b3JkYCBhbmQgdGhlIGBDaGVja2AgZmFpbHVyZSBjaGFpbiB3aXRoIGEgcmVhbCBGZXJuZXQga2V5IHJvdW5kLXRyaXAuCgpEZXZpYXRpb25zIGZyb20gdGhlIGlzc3VlIHRleHQgKHRoZSBjb2RlIG1vdmVkIG9uIHNpbmNlIGl0IHdhcyB3cml0dGVuKTogYGxvYWRiYWxhbmNlci5weWAgYW5kIGBzdGF0dXMucHlgIG5vdyBkZWxlZ2F0ZSBkYXRhYmFzZSBjb25uZWN0aW9ucyB0byBgb3Npc20udXRpbHMubWFyaWFkYi5jb25uZWN0YCBpbnN0ZWFkIG9mIGNhbGxpbmcgYHB5bXlzcWwuY29ubmVjdGAgZGlyZWN0bHkgKHRoZSBwcm94eXNxbCBzaGFyZC11c2VyIHNlbGVjdGlvbiBsaXZlcyB0aGVyZSksIGFuZCBgcmVwb3J0IGJncCAtLWFmaWAgcmVqZWN0cyBpbnZhbGlkIGNhc2luZyB2aWEgYXJncGFyc2UgYGNob2ljZXNgIGJlZm9yZSBgdGFrZV9hY3Rpb25gIHJ1bnMuIFRlc3RzIGFzc2VydCBhZ2FpbnN0IHRoZSBjdXJyZW50IGNvZGUuCgrwn6SWIEdlbmVyYXRlZCB3aXRoIFtDbGF1ZGUgQ29kZV0oaHR0cHM6Ly9jbGF1ZGUuY29tL2NsYXVkZS1jb2RlKQ==
      patchset: 88c7254207f515cb22971773f0dd8547ee4359f6
      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: 1d71e58c93442038e695a5d883d57a603182c7ae
          untrusted/project_0/github.com/osism/python-osism:
            canonical_name: github.com/osism/python-osism
            checkout: main
            commit: cc464d22a692c9e2fd7ce63dda3b7b156feaca98
          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/openinfra-zuul-jobs:
            canonical_name: github.com/osism/openinfra-zuul-jobs
            checkout: master
            commit: 242732586e2cba04d04867d3e302888c766bc231
          untrusted/project_3/github.com/osism/zuul-jobs:
            canonical_name: github.com/osism/zuul-jobs
            checkout: main
            commit: 1d71e58c93442038e695a5d883d57a603182c7ae
        playbooks:
        - path: untrusted/project_0/github.com/osism/python-osism/playbooks/test-integration.yml
          roles:
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/playbook_0/role_1/zuul-config
            link_target: untrusted/project_1/github.com/osism/zuul-config
            role_path: ansible/playbook_0/role_1/zuul-config/roles
          - checkout: master
            checkout_description: project default branch
            link_name: ansible/playbook_0/role_2/openinfra-zuul-jobs
            link_target: untrusted/project_2/github.com/osism/openinfra-zuul-jobs
            role_path: ansible/playbook_0/role_2/openinfra-zuul-jobs/roles
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/playbook_0/role_3/zuul-jobs
            link_target: untrusted/project_3/github.com/osism/zuul-jobs
            role_path: ansible/playbook_0/role_3/zuul-jobs/roles
      post_review: false
      post_timeout: 1800
      pre_timeout: null
      project:
        canonical_hostname: github.com
        canonical_name: github.com/osism/python-osism
        name: osism/python-osism
        short_name: python-osism
        src_dir: src/github.com/osism/python-osism
      projects:
        github.com/osism/python-osism:
          canonical_hostname: github.com
          canonical_name: github.com/osism/python-osism
          checkout: main
          checkout_description: zuul branch
          commit: cc464d22a692c9e2fd7ce63dda3b7b156feaca98
          name: osism/python-osism
          required: false
          short_name: python-osism
          src_dir: src/github.com/osism/python-osism
      ref: refs/pull/2481/head
      resources: {}
      tenant: osism
      timeout: 1800
      topic: null
      voting: true
