all:
  children:
    zuul_unreachable:
      hosts: {}
  hosts:
    debian-bookworm:
      ansible_connection: ssh
      ansible_host: 2a13:1a81:8000:3124:f816:3eff:fe71:e15e
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      nodepool:
        az: nova
        cloud: regiocloud-a-ci
        external_id: bbe2e2cb-3809-446f-879e-9cbd39d733cc
        host_id: 5afd8fc909abddfe2ce3a956a91bbe56629648b7209fd0acfa541862
        interface_ip: 2a13:1a81:8000:3124:f816:3eff:fe71:e15e
        label: debian-bookworm
        node_properties: {}
        private_ipv4: 10.128.0.99
        private_ipv6: null
        provider: regiocloud-a
        public_ipv4: 81.163.193.71
        public_ipv6: 2a13:1a81:8000:3124:f816:3eff:fe71:e15e
        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-black explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: osism/zuul-jobs/.zuul.yaml@main#54>'
      - '<Job python-black explicit: None implied: None source: osism/ansible-collection-commons/.zuul.yaml@main#412>'
      ansible_version: '9'
      attempts: 1
      branch: main
      build: 14fc0484b03341fab2129501e8e7eff2
      build_refs:
      - branch: main
        change: '856'
        change_message: "configuration: preserve local files across configuration
          update\n\n## Problem\r\n\r\n`osism apply configuration` checks out the configuration
          repository with `force: true`, which discards local modifications to tracked
          files.\r\n\r\nIn a **monorepo setup** (netbox as a directory instead of
          a submodule), `netbox/settings.toml` is tracked in the repository and gets
          reset to the repository placeholder on every update \u2014 dropping the
          local NetBox URL and API token and breaking manager\u2194netbox communication
          until restored manually.\r\n\r\nCloses #855\r\n\r\n## Change\r\n\r\nAdd
          `configuration_git_preserve_files` (default `[]`): the listed files (paths
          relative to `configuration_directory`) are backed up before the force checkout
          and restored afterwards, so local modifications survive an update.\r\n\r\nOperators
          set it in the monorepo case:\r\n\r\n```yaml\r\nconfiguration_git_preserve_files:\r\n
          \ - netbox/settings.toml\r\n```\r\n\r\nThe backup is an untracked `*.osism-preserve`
          file, which `git reset --hard` (force) does not remove, so it reliably survives
          the checkout and is cleaned up afterwards.\r\n\r\n## Both scenarios covered\r\n\r\n|
          Scenario | Behavior |\r\n|---|---|\r\n| **Submodule** | Unaffected & safe
          by default: the force checkout uses `recursive: false` so the submodule
          working tree is not touched, and `git submodule update` runs without `--force`.
          Setting the variable here is a harmless no-op. |\r\n| **Monorepo** | `netbox/settings.toml`
          is tracked in the main repo and was overwritten by the force checkout. The
          preserve list keeps the local version. |\r\n\r\nDefault `[]` \u2192 no behavior
          change for existing deployments.\r\n\r\n## Verification\r\n\r\nExercised
          end-to-end through the real `roles/configuration/tasks/update.yml` against
          local git repos:\r\n\r\n- Monorepo, preserve **on** \u2192 local token preserved
          \u2705, no stray backup left behind\r\n- Monorepo, preserve **off** (control)
          \u2192 repository placeholder restored = reproduces the bug, proving the
          preserve list does the work \u2705\r\n- Submodule \u2192 local token preserved
          both after the force checkout and after `git submodule update` \u2705\r\n\r\nyamllint
          clean; the existing `configuration` molecule suite is unaffected (empty
          default list = no-op).\r\n\r\n\U0001F916 Generated with [Claude Code](https://claude.com/claude-code)"
        change_url: https://github.com/osism/ansible-collection-commons/pull/856
        commit_id: ddec7615c3c3ced98a1981aa322c07b678f06927
        patchset: ddec7615c3c3ced98a1981aa322c07b678f06927
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/ansible-collection-commons
          name: osism/ansible-collection-commons
          short_name: ansible-collection-commons
        src_dir: src/github.com/osism/ansible-collection-commons
        topic: null
      buildset: e75ba32aeaae4fa1bd5a3ab0b9707631
      buildset_refs:
      - branch: main
        change: '856'
        change_message: "configuration: preserve local files across configuration
          update\n\n## Problem\r\n\r\n`osism apply configuration` checks out the configuration
          repository with `force: true`, which discards local modifications to tracked
          files.\r\n\r\nIn a **monorepo setup** (netbox as a directory instead of
          a submodule), `netbox/settings.toml` is tracked in the repository and gets
          reset to the repository placeholder on every update \u2014 dropping the
          local NetBox URL and API token and breaking manager\u2194netbox communication
          until restored manually.\r\n\r\nCloses #855\r\n\r\n## Change\r\n\r\nAdd
          `configuration_git_preserve_files` (default `[]`): the listed files (paths
          relative to `configuration_directory`) are backed up before the force checkout
          and restored afterwards, so local modifications survive an update.\r\n\r\nOperators
          set it in the monorepo case:\r\n\r\n```yaml\r\nconfiguration_git_preserve_files:\r\n
          \ - netbox/settings.toml\r\n```\r\n\r\nThe backup is an untracked `*.osism-preserve`
          file, which `git reset --hard` (force) does not remove, so it reliably survives
          the checkout and is cleaned up afterwards.\r\n\r\n## Both scenarios covered\r\n\r\n|
          Scenario | Behavior |\r\n|---|---|\r\n| **Submodule** | Unaffected & safe
          by default: the force checkout uses `recursive: false` so the submodule
          working tree is not touched, and `git submodule update` runs without `--force`.
          Setting the variable here is a harmless no-op. |\r\n| **Monorepo** | `netbox/settings.toml`
          is tracked in the main repo and was overwritten by the force checkout. The
          preserve list keeps the local version. |\r\n\r\nDefault `[]` \u2192 no behavior
          change for existing deployments.\r\n\r\n## Verification\r\n\r\nExercised
          end-to-end through the real `roles/configuration/tasks/update.yml` against
          local git repos:\r\n\r\n- Monorepo, preserve **on** \u2192 local token preserved
          \u2705, no stray backup left behind\r\n- Monorepo, preserve **off** (control)
          \u2192 repository placeholder restored = reproduces the bug, proving the
          preserve list does the work \u2705\r\n- Submodule \u2192 local token preserved
          both after the force checkout and after `git submodule update` \u2705\r\n\r\nyamllint
          clean; the existing `configuration` molecule suite is unaffected (empty
          default list = no-op).\r\n\r\n\U0001F916 Generated with [Claude Code](https://claude.com/claude-code)"
        change_url: https://github.com/osism/ansible-collection-commons/pull/856
        commit_id: ddec7615c3c3ced98a1981aa322c07b678f06927
        patchset: ddec7615c3c3ced98a1981aa322c07b678f06927
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/ansible-collection-commons
          name: osism/ansible-collection-commons
          short_name: ansible-collection-commons
        src_dir: src/github.com/osism/ansible-collection-commons
        topic: null
      change: '856'
      change_message: "configuration: preserve local files across configuration update\n\n##
        Problem\r\n\r\n`osism apply configuration` checks out the configuration repository
        with `force: true`, which discards local modifications to tracked files.\r\n\r\nIn
        a **monorepo setup** (netbox as a directory instead of a submodule), `netbox/settings.toml`
        is tracked in the repository and gets reset to the repository placeholder
        on every update \u2014 dropping the local NetBox URL and API token and breaking
        manager\u2194netbox communication until restored manually.\r\n\r\nCloses #855\r\n\r\n##
        Change\r\n\r\nAdd `configuration_git_preserve_files` (default `[]`): the listed
        files (paths relative to `configuration_directory`) are backed up before the
        force checkout and restored afterwards, so local modifications survive an
        update.\r\n\r\nOperators set it in the monorepo case:\r\n\r\n```yaml\r\nconfiguration_git_preserve_files:\r\n
        \ - netbox/settings.toml\r\n```\r\n\r\nThe backup is an untracked `*.osism-preserve`
        file, which `git reset --hard` (force) does not remove, so it reliably survives
        the checkout and is cleaned up afterwards.\r\n\r\n## Both scenarios covered\r\n\r\n|
        Scenario | Behavior |\r\n|---|---|\r\n| **Submodule** | Unaffected & safe
        by default: the force checkout uses `recursive: false` so the submodule working
        tree is not touched, and `git submodule update` runs without `--force`. Setting
        the variable here is a harmless no-op. |\r\n| **Monorepo** | `netbox/settings.toml`
        is tracked in the main repo and was overwritten by the force checkout. The
        preserve list keeps the local version. |\r\n\r\nDefault `[]` \u2192 no behavior
        change for existing deployments.\r\n\r\n## Verification\r\n\r\nExercised end-to-end
        through the real `roles/configuration/tasks/update.yml` against local git
        repos:\r\n\r\n- Monorepo, preserve **on** \u2192 local token preserved \u2705,
        no stray backup left behind\r\n- Monorepo, preserve **off** (control) \u2192
        repository placeholder restored = reproduces the bug, proving the preserve
        list does the work \u2705\r\n- Submodule \u2192 local token preserved both
        after the force checkout and after `git submodule update` \u2705\r\n\r\nyamllint
        clean; the existing `configuration` molecule suite is unaffected (empty default
        list = no-op).\r\n\r\n\U0001F916 Generated with [Claude Code](https://claude.com/claude-code)"
      change_url: https://github.com/osism/ansible-collection-commons/pull/856
      child_jobs: []
      commit_id: ddec7615c3c3ced98a1981aa322c07b678f06927
      event_id: fac425a0-6a2c-11f1-859d-829735f7c5f5
      executor:
        hostname: 521e9411259a
        inventory_file: /var/lib/zuul/builds/14fc0484b03341fab2129501e8e7eff2/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/14fc0484b03341fab2129501e8e7eff2/work/logs
        result_data_file: /var/lib/zuul/builds/14fc0484b03341fab2129501e8e7eff2/work/results.json
        src_root: /var/lib/zuul/builds/14fc0484b03341fab2129501e8e7eff2/work/src
        work_root: /var/lib/zuul/builds/14fc0484b03341fab2129501e8e7eff2/work
      include_vars: []
      items:
      - branch: main
        change: '856'
        change_message: "configuration: preserve local files across configuration
          update\n\n## Problem\r\n\r\n`osism apply configuration` checks out the configuration
          repository with `force: true`, which discards local modifications to tracked
          files.\r\n\r\nIn a **monorepo setup** (netbox as a directory instead of
          a submodule), `netbox/settings.toml` is tracked in the repository and gets
          reset to the repository placeholder on every update \u2014 dropping the
          local NetBox URL and API token and breaking manager\u2194netbox communication
          until restored manually.\r\n\r\nCloses #855\r\n\r\n## Change\r\n\r\nAdd
          `configuration_git_preserve_files` (default `[]`): the listed files (paths
          relative to `configuration_directory`) are backed up before the force checkout
          and restored afterwards, so local modifications survive an update.\r\n\r\nOperators
          set it in the monorepo case:\r\n\r\n```yaml\r\nconfiguration_git_preserve_files:\r\n
          \ - netbox/settings.toml\r\n```\r\n\r\nThe backup is an untracked `*.osism-preserve`
          file, which `git reset --hard` (force) does not remove, so it reliably survives
          the checkout and is cleaned up afterwards.\r\n\r\n## Both scenarios covered\r\n\r\n|
          Scenario | Behavior |\r\n|---|---|\r\n| **Submodule** | Unaffected & safe
          by default: the force checkout uses `recursive: false` so the submodule
          working tree is not touched, and `git submodule update` runs without `--force`.
          Setting the variable here is a harmless no-op. |\r\n| **Monorepo** | `netbox/settings.toml`
          is tracked in the main repo and was overwritten by the force checkout. The
          preserve list keeps the local version. |\r\n\r\nDefault `[]` \u2192 no behavior
          change for existing deployments.\r\n\r\n## Verification\r\n\r\nExercised
          end-to-end through the real `roles/configuration/tasks/update.yml` against
          local git repos:\r\n\r\n- Monorepo, preserve **on** \u2192 local token preserved
          \u2705, no stray backup left behind\r\n- Monorepo, preserve **off** (control)
          \u2192 repository placeholder restored = reproduces the bug, proving the
          preserve list does the work \u2705\r\n- Submodule \u2192 local token preserved
          both after the force checkout and after `git submodule update` \u2705\r\n\r\nyamllint
          clean; the existing `configuration` molecule suite is unaffected (empty
          default list = no-op).\r\n\r\n\U0001F916 Generated with [Claude Code](https://claude.com/claude-code)"
        change_url: https://github.com/osism/ansible-collection-commons/pull/856
        commit_id: ddec7615c3c3ced98a1981aa322c07b678f06927
        patchset: ddec7615c3c3ced98a1981aa322c07b678f06927
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/ansible-collection-commons
          name: osism/ansible-collection-commons
          short_name: ansible-collection-commons
          src_dir: src/github.com/osism/ansible-collection-commons
        topic: null
      job: python-black
      jobtags: []
      max_attempts: 3
      message: Y29uZmlndXJhdGlvbjogcHJlc2VydmUgbG9jYWwgZmlsZXMgYWNyb3NzIGNvbmZpZ3VyYXRpb24gdXBkYXRlCgojIyBQcm9ibGVtDQoNCmBvc2lzbSBhcHBseSBjb25maWd1cmF0aW9uYCBjaGVja3Mgb3V0IHRoZSBjb25maWd1cmF0aW9uIHJlcG9zaXRvcnkgd2l0aCBgZm9yY2U6IHRydWVgLCB3aGljaCBkaXNjYXJkcyBsb2NhbCBtb2RpZmljYXRpb25zIHRvIHRyYWNrZWQgZmlsZXMuDQoNCkluIGEgKiptb25vcmVwbyBzZXR1cCoqIChuZXRib3ggYXMgYSBkaXJlY3RvcnkgaW5zdGVhZCBvZiBhIHN1Ym1vZHVsZSksIGBuZXRib3gvc2V0dGluZ3MudG9tbGAgaXMgdHJhY2tlZCBpbiB0aGUgcmVwb3NpdG9yeSBhbmQgZ2V0cyByZXNldCB0byB0aGUgcmVwb3NpdG9yeSBwbGFjZWhvbGRlciBvbiBldmVyeSB1cGRhdGUg4oCUIGRyb3BwaW5nIHRoZSBsb2NhbCBOZXRCb3ggVVJMIGFuZCBBUEkgdG9rZW4gYW5kIGJyZWFraW5nIG1hbmFnZXLihpRuZXRib3ggY29tbXVuaWNhdGlvbiB1bnRpbCByZXN0b3JlZCBtYW51YWxseS4NCg0KQ2xvc2VzICM4NTUNCg0KIyMgQ2hhbmdlDQoNCkFkZCBgY29uZmlndXJhdGlvbl9naXRfcHJlc2VydmVfZmlsZXNgIChkZWZhdWx0IGBbXWApOiB0aGUgbGlzdGVkIGZpbGVzIChwYXRocyByZWxhdGl2ZSB0byBgY29uZmlndXJhdGlvbl9kaXJlY3RvcnlgKSBhcmUgYmFja2VkIHVwIGJlZm9yZSB0aGUgZm9yY2UgY2hlY2tvdXQgYW5kIHJlc3RvcmVkIGFmdGVyd2FyZHMsIHNvIGxvY2FsIG1vZGlmaWNhdGlvbnMgc3Vydml2ZSBhbiB1cGRhdGUuDQoNCk9wZXJhdG9ycyBzZXQgaXQgaW4gdGhlIG1vbm9yZXBvIGNhc2U6DQoNCmBgYHlhbWwNCmNvbmZpZ3VyYXRpb25fZ2l0X3ByZXNlcnZlX2ZpbGVzOg0KICAtIG5ldGJveC9zZXR0aW5ncy50b21sDQpgYGANCg0KVGhlIGJhY2t1cCBpcyBhbiB1bnRyYWNrZWQgYCoub3Npc20tcHJlc2VydmVgIGZpbGUsIHdoaWNoIGBnaXQgcmVzZXQgLS1oYXJkYCAoZm9yY2UpIGRvZXMgbm90IHJlbW92ZSwgc28gaXQgcmVsaWFibHkgc3Vydml2ZXMgdGhlIGNoZWNrb3V0IGFuZCBpcyBjbGVhbmVkIHVwIGFmdGVyd2FyZHMuDQoNCiMjIEJvdGggc2NlbmFyaW9zIGNvdmVyZWQNCg0KfCBTY2VuYXJpbyB8IEJlaGF2aW9yIHwNCnwtLS18LS0tfA0KfCAqKlN1Ym1vZHVsZSoqIHwgVW5hZmZlY3RlZCAmIHNhZmUgYnkgZGVmYXVsdDogdGhlIGZvcmNlIGNoZWNrb3V0IHVzZXMgYHJlY3Vyc2l2ZTogZmFsc2VgIHNvIHRoZSBzdWJtb2R1bGUgd29ya2luZyB0cmVlIGlzIG5vdCB0b3VjaGVkLCBhbmQgYGdpdCBzdWJtb2R1bGUgdXBkYXRlYCBydW5zIHdpdGhvdXQgYC0tZm9yY2VgLiBTZXR0aW5nIHRoZSB2YXJpYWJsZSBoZXJlIGlzIGEgaGFybWxlc3Mgbm8tb3AuIHwNCnwgKipNb25vcmVwbyoqIHwgYG5ldGJveC9zZXR0aW5ncy50b21sYCBpcyB0cmFja2VkIGluIHRoZSBtYWluIHJlcG8gYW5kIHdhcyBvdmVyd3JpdHRlbiBieSB0aGUgZm9yY2UgY2hlY2tvdXQuIFRoZSBwcmVzZXJ2ZSBsaXN0IGtlZXBzIHRoZSBsb2NhbCB2ZXJzaW9uLiB8DQoNCkRlZmF1bHQgYFtdYCDihpIgbm8gYmVoYXZpb3IgY2hhbmdlIGZvciBleGlzdGluZyBkZXBsb3ltZW50cy4NCg0KIyMgVmVyaWZpY2F0aW9uDQoNCkV4ZXJjaXNlZCBlbmQtdG8tZW5kIHRocm91Z2ggdGhlIHJlYWwgYHJvbGVzL2NvbmZpZ3VyYXRpb24vdGFza3MvdXBkYXRlLnltbGAgYWdhaW5zdCBsb2NhbCBnaXQgcmVwb3M6DQoNCi0gTW9ub3JlcG8sIHByZXNlcnZlICoqb24qKiDihpIgbG9jYWwgdG9rZW4gcHJlc2VydmVkIOKchSwgbm8gc3RyYXkgYmFja3VwIGxlZnQgYmVoaW5kDQotIE1vbm9yZXBvLCBwcmVzZXJ2ZSAqKm9mZioqIChjb250cm9sKSDihpIgcmVwb3NpdG9yeSBwbGFjZWhvbGRlciByZXN0b3JlZCA9IHJlcHJvZHVjZXMgdGhlIGJ1ZywgcHJvdmluZyB0aGUgcHJlc2VydmUgbGlzdCBkb2VzIHRoZSB3b3JrIOKchQ0KLSBTdWJtb2R1bGUg4oaSIGxvY2FsIHRva2VuIHByZXNlcnZlZCBib3RoIGFmdGVyIHRoZSBmb3JjZSBjaGVja291dCBhbmQgYWZ0ZXIgYGdpdCBzdWJtb2R1bGUgdXBkYXRlYCDinIUNCg0KeWFtbGxpbnQgY2xlYW47IHRoZSBleGlzdGluZyBgY29uZmlndXJhdGlvbmAgbW9sZWN1bGUgc3VpdGUgaXMgdW5hZmZlY3RlZCAoZW1wdHkgZGVmYXVsdCBsaXN0ID0gbm8tb3ApLg0KDQrwn6SWIEdlbmVyYXRlZCB3aXRoIFtDbGF1ZGUgQ29kZV0oaHR0cHM6Ly9jbGF1ZGUuY29tL2NsYXVkZS1jb2RlKQ==
      patchset: ddec7615c3c3ced98a1981aa322c07b678f06927
      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/python-black/run.yml
          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/ansible-collection-commons
        name: osism/ansible-collection-commons
        short_name: ansible-collection-commons
        src_dir: src/github.com/osism/ansible-collection-commons
      projects:
        github.com/osism/ansible-collection-commons:
          canonical_hostname: github.com
          canonical_name: github.com/osism/ansible-collection-commons
          checkout: main
          checkout_description: zuul branch
          commit: 97ce5db3008c9d23870b98d6b2866470ea0a0699
          name: osism/ansible-collection-commons
          required: false
          short_name: ansible-collection-commons
          src_dir: src/github.com/osism/ansible-collection-commons
      ref: refs/pull/856/head
      resources: {}
      tenant: osism
      timeout: 1800
      topic: null
      voting: true
