)]}'
{".zuul.yaml":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9df39f0cc3c4b9e426512e3fff90d9c9387711b8","unresolved":true,"context_lines":[{"line_number":1,"context_line":"- job:"},{"line_number":2,"context_line":"    name: cyborg-grenade"},{"line_number":3,"context_line":"    parent: grenade"},{"line_number":4,"context_line":"    required-projects: \u0026base_required_projects_master"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"ab5a29a9_1574c4ea","line":1,"in_reply_to":"35720eda_9c40903a","updated":"2026-03-11 19:08:55.000000000","message":"oh right this si true but it should be on the commit message not here","commit_id":"ec8057dad6dd95a4bee14bb267d37f1d5a479dba"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"7107af237419249ae9d504171781a466efa20ef4","unresolved":false,"context_lines":[{"line_number":1,"context_line":"- job:"},{"line_number":2,"context_line":"    name: cyborg-grenade"},{"line_number":3,"context_line":"    parent: grenade"},{"line_number":4,"context_line":"    required-projects: \u0026base_required_projects_master"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"b22b37a9_e0939ee7","line":1,"in_reply_to":"ab5a29a9_1574c4ea","updated":"2026-03-18 05:08:57.000000000","message":"Done","commit_id":"ec8057dad6dd95a4bee14bb267d37f1d5a479dba"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9df39f0cc3c4b9e426512e3fff90d9c9387711b8","unresolved":true,"context_lines":[{"line_number":40,"context_line":"      then runs scripts to upgrade it to the master release. If this job fails"},{"line_number":41,"context_line":"      alone, it indicates we may have broken upgrading cyborg across SLURP"},{"line_number":42,"context_line":"      releases."},{"line_number":43,"context_line":"    parent: cyborg-grenade"},{"line_number":44,"context_line":"    vars:"},{"line_number":45,"context_line":"      # Move this forward when master changes to a new skip-level-allowed"},{"line_number":46,"context_line":"      # target release. Right now, this is Epoxy (2025.1) because master is"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"921630ac_efb12075","line":43,"range":{"start_line":43,"start_character":12,"end_line":43,"end_character":26},"updated":"2026-03-11 19:08:55.000000000","message":"same general feedback as the watcher change\nhttps://review.opendev.org/c/openstack/watcher/+/979137\ncan we refactor this with yaml ancors and using the generic skip level job as a base.","commit_id":"ec8057dad6dd95a4bee14bb267d37f1d5a479dba"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"7107af237419249ae9d504171781a466efa20ef4","unresolved":false,"context_lines":[{"line_number":40,"context_line":"      then runs scripts to upgrade it to the master release. If this job fails"},{"line_number":41,"context_line":"      alone, it indicates we may have broken upgrading cyborg across SLURP"},{"line_number":42,"context_line":"      releases."},{"line_number":43,"context_line":"    parent: cyborg-grenade"},{"line_number":44,"context_line":"    vars:"},{"line_number":45,"context_line":"      # Move this forward when master changes to a new skip-level-allowed"},{"line_number":46,"context_line":"      # target release. Right now, this is Epoxy (2025.1) because master is"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"82f82274_d7cc1e96","line":43,"range":{"start_line":43,"start_character":12,"end_line":43,"end_character":26},"in_reply_to":"921630ac_efb12075","updated":"2026-03-18 05:08:57.000000000","message":"Done","commit_id":"ec8057dad6dd95a4bee14bb267d37f1d5a479dba"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9df39f0cc3c4b9e426512e3fff90d9c9387711b8","unresolved":true,"context_lines":[{"line_number":62,"context_line":"        - cyborg-tempest"},{"line_number":63,"context_line":"        - cyborg-tempest-ipv6-only"},{"line_number":64,"context_line":"        - cyborg-grenade"},{"line_number":65,"context_line":"        - cyborg-grenade-skip-level-always"},{"line_number":66,"context_line":"    gate:"},{"line_number":67,"context_line":"      jobs:"},{"line_number":68,"context_line":"        - cyborg-tempest"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"56956188_08fb0882","line":65,"in_reply_to":"0f5623c3_0ab87114","updated":"2026-03-11 19:08:55.000000000","message":"it shoudl be in both before we drop the WIP form the patch but this is fine for now","commit_id":"ec8057dad6dd95a4bee14bb267d37f1d5a479dba"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"7107af237419249ae9d504171781a466efa20ef4","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        - cyborg-tempest"},{"line_number":63,"context_line":"        - cyborg-tempest-ipv6-only"},{"line_number":64,"context_line":"        - cyborg-grenade"},{"line_number":65,"context_line":"        - cyborg-grenade-skip-level-always"},{"line_number":66,"context_line":"    gate:"},{"line_number":67,"context_line":"      jobs:"},{"line_number":68,"context_line":"        - cyborg-tempest"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"54a9df7b_b114d273","line":65,"in_reply_to":"56956188_08fb0882","updated":"2026-03-18 05:08:57.000000000","message":"Done","commit_id":"ec8057dad6dd95a4bee14bb267d37f1d5a479dba"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"82569534b0e641543db059a9afbc039b568fd413","unresolved":true,"context_lines":[{"line_number":8,"context_line":"      - openstack/cyborg"},{"line_number":9,"context_line":"      - openstack/python-cyborgclient"},{"line_number":10,"context_line":"      - openstack/tempest"},{"line_number":11,"context_line":"      - openstack/cyborg-tempest-plugin"},{"line_number":12,"context_line":"    vars: \u0026grenade_vars"},{"line_number":13,"context_line":"      devstack_plugins:"},{"line_number":14,"context_line":"        cyborg: https://opendev.org/openstack/cyborg"}],"source_content_type":"text/x-yaml","patch_set":23,"id":"25fc7248_f641a91d","line":11,"updated":"2026-03-19 19:08:23.000000000","message":"ack i think this makes sense\n\nbut i dont think we shoudl include tempest\n\n\ntempest should be there but i belive  we want to use master tempest always.\n\n\nhttps://opendev.org/openstack/aodh/src/branch/master/.zuul.yaml#L64\nhttps://opendev.org/openstack/barbican/src/branch/master/.zuul.yaml#L79\nhttps://opendev.org/openstack/cinder/src/branch/master/.zuul.yaml#L235\n\nif we look at other project we dont specify tempst \n\nthat comes form the base grenade job\n\nhttps://opendev.org/openstack/grenade/src/branch/master/.zuul.yaml#L43","commit_id":"a18bac6a36acc41ed9d7336d1a0bff362eb53864"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"25a099ad20882458a5a748f7da958e021b6e62c4","unresolved":false,"context_lines":[{"line_number":8,"context_line":"      - openstack/cyborg"},{"line_number":9,"context_line":"      - openstack/python-cyborgclient"},{"line_number":10,"context_line":"      - openstack/tempest"},{"line_number":11,"context_line":"      - openstack/cyborg-tempest-plugin"},{"line_number":12,"context_line":"    vars: \u0026grenade_vars"},{"line_number":13,"context_line":"      devstack_plugins:"},{"line_number":14,"context_line":"        cyborg: https://opendev.org/openstack/cyborg"}],"source_content_type":"text/x-yaml","patch_set":23,"id":"7bdab536_4e5cff92","line":11,"in_reply_to":"25fc7248_f641a91d","updated":"2026-03-20 03:37:02.000000000","message":"Done","commit_id":"a18bac6a36acc41ed9d7336d1a0bff362eb53864"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"82569534b0e641543db059a9afbc039b568fd413","unresolved":true,"context_lines":[{"line_number":35,"context_line":"      - ^(test-|)requirements.txt$"},{"line_number":36,"context_line":"      - ^.git.*$"},{"line_number":37,"context_line":"      - ^tox.ini$"},{"line_number":38,"context_line":"      - ^devstack/upgrade/*-grenade$"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"- job:"},{"line_number":41,"context_line":"    name: cyborg-grenade-skip-level-always"}],"source_content_type":"text/x-yaml","patch_set":23,"id":"507606f5_c93040e4","line":38,"range":{"start_line":38,"start_character":6,"end_line":38,"end_character":36},"updated":"2026-03-19 19:08:23.000000000","message":"we should be running the grenade job on changes to the \n\n`devstack/upgrade/localrc-grenade`\nand \n`devstack/upgrade/pluginrc-grenade`\n\nno?\n\ni guess your sexliding them because they are not tested?\n\nif so then we shoudl add a comment. explaining that.","commit_id":"a18bac6a36acc41ed9d7336d1a0bff362eb53864"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"25a099ad20882458a5a748f7da958e021b6e62c4","unresolved":false,"context_lines":[{"line_number":35,"context_line":"      - ^(test-|)requirements.txt$"},{"line_number":36,"context_line":"      - ^.git.*$"},{"line_number":37,"context_line":"      - ^tox.ini$"},{"line_number":38,"context_line":"      - ^devstack/upgrade/*-grenade$"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"- job:"},{"line_number":41,"context_line":"    name: cyborg-grenade-skip-level-always"}],"source_content_type":"text/x-yaml","patch_set":23,"id":"e795fced_81f5f865","line":38,"range":{"start_line":38,"start_character":6,"end_line":38,"end_character":36},"in_reply_to":"507606f5_c93040e4","updated":"2026-03-20 03:37:02.000000000","message":"Done","commit_id":"a18bac6a36acc41ed9d7336d1a0bff362eb53864"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"6185e4adb6d5c5c6fe93a113a92906c92fb3e0cf","unresolved":true,"context_lines":[{"line_number":7,"context_line":"    required-projects: \u0026base_required_projects_master"},{"line_number":8,"context_line":"      - openstack/cyborg"},{"line_number":9,"context_line":"      - openstack/python-cyborgclient"},{"line_number":10,"context_line":"      - openstack/cyborg-tempest-plugin"},{"line_number":11,"context_line":"    vars: \u0026grenade_vars"},{"line_number":12,"context_line":"      devstack_plugins:"},{"line_number":13,"context_line":"        cyborg: https://opendev.org/openstack/cyborg"}],"source_content_type":"text/x-yaml","patch_set":25,"id":"e374a158_c4088ddc","line":10,"range":{"start_line":10,"start_character":38,"end_line":10,"end_character":39},"updated":"2026-03-23 19:01:28.000000000","message":"also add openstack/grenade in required-projects list","commit_id":"f138583d0cfdac56d7f53dafd480e2cfd5bac123"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"ae9da9379e6b5273df27c1f1a6a2aef26c4d3596","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    required-projects: \u0026base_required_projects_master"},{"line_number":8,"context_line":"      - openstack/cyborg"},{"line_number":9,"context_line":"      - openstack/python-cyborgclient"},{"line_number":10,"context_line":"      - openstack/cyborg-tempest-plugin"},{"line_number":11,"context_line":"    vars: \u0026grenade_vars"},{"line_number":12,"context_line":"      devstack_plugins:"},{"line_number":13,"context_line":"        cyborg: https://opendev.org/openstack/cyborg"}],"source_content_type":"text/x-yaml","patch_set":25,"id":"11968c55_61535d6f","line":10,"range":{"start_line":10,"start_character":38,"end_line":10,"end_character":39},"in_reply_to":"63aa59f9_14f4a303","updated":"2026-03-23 21:55:22.000000000","message":"yeah, you are right, we do not need to add it here.","commit_id":"f138583d0cfdac56d7f53dafd480e2cfd5bac123"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8c9528efa017b0b5eb9bf9f814ea5d694e885eb7","unresolved":true,"context_lines":[{"line_number":7,"context_line":"    required-projects: \u0026base_required_projects_master"},{"line_number":8,"context_line":"      - openstack/cyborg"},{"line_number":9,"context_line":"      - openstack/python-cyborgclient"},{"line_number":10,"context_line":"      - openstack/cyborg-tempest-plugin"},{"line_number":11,"context_line":"    vars: \u0026grenade_vars"},{"line_number":12,"context_line":"      devstack_plugins:"},{"line_number":13,"context_line":"        cyborg: https://opendev.org/openstack/cyborg"}],"source_content_type":"text/x-yaml","patch_set":25,"id":"63aa59f9_14f4a303","line":10,"range":{"start_line":10,"start_character":38,"end_line":10,"end_character":39},"in_reply_to":"e374a158_c4088ddc","updated":"2026-03-23 19:13:53.000000000","message":"doesnt that come form the parent job?","commit_id":"f138583d0cfdac56d7f53dafd480e2cfd5bac123"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"6185e4adb6d5c5c6fe93a113a92906c92fb3e0cf","unresolved":true,"context_lines":[{"line_number":9,"context_line":"      - openstack/python-cyborgclient"},{"line_number":10,"context_line":"      - openstack/cyborg-tempest-plugin"},{"line_number":11,"context_line":"    vars: \u0026grenade_vars"},{"line_number":12,"context_line":"      devstack_plugins:"},{"line_number":13,"context_line":"        cyborg: https://opendev.org/openstack/cyborg"},{"line_number":14,"context_line":"      devstack_services:"},{"line_number":15,"context_line":"        tempest: true"}],"source_content_type":"text/x-yaml","patch_set":25,"id":"e4d7e30f_fe8eb3d3","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":23},"updated":"2026-03-23 19:01:28.000000000","message":"for the greande jobs where devstack_plugins is defined, grenade will automatically will detect the greande plugin in upgrade/ dir","commit_id":"f138583d0cfdac56d7f53dafd480e2cfd5bac123"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"970d490241376b4b63961af539037896b3cbf9a4","unresolved":false,"context_lines":[{"line_number":9,"context_line":"      - openstack/python-cyborgclient"},{"line_number":10,"context_line":"      - openstack/cyborg-tempest-plugin"},{"line_number":11,"context_line":"    vars: \u0026grenade_vars"},{"line_number":12,"context_line":"      devstack_plugins:"},{"line_number":13,"context_line":"        cyborg: https://opendev.org/openstack/cyborg"},{"line_number":14,"context_line":"      devstack_services:"},{"line_number":15,"context_line":"        tempest: true"}],"source_content_type":"text/x-yaml","patch_set":25,"id":"91aaefaf_82625375","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":23},"in_reply_to":"cb7a0fdb_384bdd3d","updated":"2026-03-30 17:58:39.000000000","message":"Done","commit_id":"f138583d0cfdac56d7f53dafd480e2cfd5bac123"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8c9528efa017b0b5eb9bf9f814ea5d694e885eb7","unresolved":true,"context_lines":[{"line_number":9,"context_line":"      - openstack/python-cyborgclient"},{"line_number":10,"context_line":"      - openstack/cyborg-tempest-plugin"},{"line_number":11,"context_line":"    vars: \u0026grenade_vars"},{"line_number":12,"context_line":"      devstack_plugins:"},{"line_number":13,"context_line":"        cyborg: https://opendev.org/openstack/cyborg"},{"line_number":14,"context_line":"      devstack_services:"},{"line_number":15,"context_line":"        tempest: true"}],"source_content_type":"text/x-yaml","patch_set":25,"id":"cb7a0fdb_384bdd3d","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":23},"in_reply_to":"e4d7e30f_fe8eb3d3","updated":"2026-03-23 19:13:53.000000000","message":"thansk i sort of assumed that might happen but good to confirm","commit_id":"f138583d0cfdac56d7f53dafd480e2cfd5bac123"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e7634b7665ccb0989aa65996495cdf807c458999","unresolved":false,"context_lines":[{"line_number":4,"context_line":"      Grenade job that performs upgrade from previous release(N-1) to"},{"line_number":5,"context_line":"      current release(N)."},{"line_number":6,"context_line":"    parent: grenade"},{"line_number":7,"context_line":"    required-projects: \u0026base_required_projects_master"},{"line_number":8,"context_line":"      - openstack/cyborg"},{"line_number":9,"context_line":"      - openstack/python-cyborgclient"},{"line_number":10,"context_line":"      - openstack/cyborg-tempest-plugin"}],"source_content_type":"text/x-yaml","patch_set":27,"id":"d82dcfd2_b2d06ad0","line":7,"in_reply_to":"06aef569_26dff7ba","updated":"2026-03-30 19:34:05.000000000","message":"this is also a fair suggestion\n\n\ni think fro now it ok as it is but we will likely refacto rhtis in the future.\n\ni am undecided if i want to move the defintions of \n\n\ncyborg-tempest\nand\ncyborg-tempest-ipv6-only\n\n\nher.\n\ni generally do not like defining the jobs in the tempest plugin repos if they are sued by the service project.\n\n\nif we end ups with other base jobs or just jobs in gnernal that are defiened in this file we can condier renaming the yaml anchor then","commit_id":"3180769c52599ad5e72affd58c290fbff4d550d2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e7634b7665ccb0989aa65996495cdf807c458999","unresolved":false,"context_lines":[{"line_number":27,"context_line":"      tempest_test_regex: cyborg_tempest_plugin"},{"line_number":28,"context_line":"      tox_envlist: all"},{"line_number":29,"context_line":"    irrelevant-files: \u0026base_irrelevant_files"},{"line_number":30,"context_line":"      - ^.*\\.rst$"},{"line_number":31,"context_line":"      - ^doc/.*$"},{"line_number":32,"context_line":"      - ^setup.cfg$"},{"line_number":33,"context_line":"      - ^releasenotes/.*$"}],"source_content_type":"text/x-yaml","patch_set":27,"id":"f9313438_e44c4410","line":30,"in_reply_to":"265dd3e1_95a51404","updated":"2026-03-30 19:34:05.000000000","message":"fair callout.\ngood to be aware of but no action needed.","commit_id":"3180769c52599ad5e72affd58c290fbff4d550d2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e7634b7665ccb0989aa65996495cdf807c458999","unresolved":false,"context_lines":[{"line_number":36,"context_line":"      - ^tox.ini$"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"- job:"},{"line_number":39,"context_line":"    name: cyborg-grenade-skip-level-always"},{"line_number":40,"context_line":"    description: |"},{"line_number":41,"context_line":"      Grenade job that skips the previous release, validating that projects"},{"line_number":42,"context_line":"      can support upgrades from N-2 to N release. It will always upgrade"}],"source_content_type":"text/x-yaml","patch_set":27,"id":"db10d6ae_c28db1b7","line":39,"in_reply_to":"7244e135_89442f84","updated":"2026-03-30 19:34:05.000000000","message":"in this case its just using the year in teh example which is fine.\n\n\ni much prefer this version to waht we had a couple of revsions ago.","commit_id":"3180769c52599ad5e72affd58c290fbff4d550d2"}],"/COMMIT_MSG":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9df39f0cc3c4b9e426512e3fff90d9c9387711b8","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Chandan Kumar (raukadah) \u003cchkumar@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2026-03-11 10:25:38 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[WIP] Add cyborg greande job"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"TODO: Add resources.sh to create workload during upgrade"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"a82c1443_3a34b2cb","line":7,"updated":"2026-03-11 19:08:55.000000000","message":"```suggestion\n[WIP] Add cyborg grenade job\n```\n\nhttps://review.opendev.org/c/openstack/cyborg/+/979802/comment/35720eda_9c40903a/","commit_id":"ec8057dad6dd95a4bee14bb267d37f1d5a479dba"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"7107af237419249ae9d504171781a466efa20ef4","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Chandan Kumar (raukadah) \u003cchkumar@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2026-03-11 10:25:38 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[WIP] Add cyborg greande job"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"TODO: Add resources.sh to create workload during upgrade"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"a3b65cee_62115858","line":7,"in_reply_to":"a82c1443_3a34b2cb","updated":"2026-03-18 05:08:57.000000000","message":"Done","commit_id":"ec8057dad6dd95a4bee14bb267d37f1d5a479dba"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9df39f0cc3c4b9e426512e3fff90d9c9387711b8","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[WIP] Add cyborg greande job"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"TODO: Add resources.sh to create workload during upgrade"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Depends-On: https://review.opendev.org/c/openstack/cyborg/+/979991"},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"18dea203_31214d89","line":9,"updated":"2026-03-11 19:08:55.000000000","message":"we can use the fake driver\n\nit support 16 instances\nso we can create device profile and a vm before we upstreade and anouther after and confirm they work are still listable/deletable for example.","commit_id":"ec8057dad6dd95a4bee14bb267d37f1d5a479dba"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"7107af237419249ae9d504171781a466efa20ef4","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[WIP] Add cyborg greande job"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"TODO: Add resources.sh to create workload during upgrade"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Depends-On: https://review.opendev.org/c/openstack/cyborg/+/979991"},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"6fc66b45_8ec64e8d","line":9,"in_reply_to":"18dea203_31214d89","updated":"2026-03-18 05:08:57.000000000","message":"Done","commit_id":"ec8057dad6dd95a4bee14bb267d37f1d5a479dba"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9df39f0cc3c4b9e426512e3fff90d9c9387711b8","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"TODO: Add resources.sh to create workload during upgrade"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Depends-On: https://review.opendev.org/c/openstack/cyborg/+/979991"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I52f1a785f3b12d3ae9b3272c75cafaa16370873d"},{"line_number":14,"context_line":"Signed-off-by: Chandan Kumar (raukadah) \u003cchkumar@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"a3bbb9f1_ef625886","line":11,"updated":"2026-03-11 19:08:55.000000000","message":"while this can work its generally better avoided\n\ncanyou rebase on top of it insteead","commit_id":"ec8057dad6dd95a4bee14bb267d37f1d5a479dba"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"7107af237419249ae9d504171781a466efa20ef4","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"TODO: Add resources.sh to create workload during upgrade"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Depends-On: https://review.opendev.org/c/openstack/cyborg/+/979991"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I52f1a785f3b12d3ae9b3272c75cafaa16370873d"},{"line_number":14,"context_line":"Signed-off-by: Chandan Kumar (raukadah) \u003cchkumar@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"35c039cb_6460dfba","line":11,"in_reply_to":"a3bbb9f1_ef625886","updated":"2026-03-18 05:08:57.000000000","message":"Done","commit_id":"ec8057dad6dd95a4bee14bb267d37f1d5a479dba"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"82569534b0e641543db059a9afbc039b568fd413","unresolved":true,"context_lines":[{"line_number":17,"context_line":"- Add Grenade plugin integration: settings, resources.sh (create/verify/"},{"line_number":18,"context_line":"  destroy device profiles), upgrade.sh, shutdown.sh"},{"line_number":19,"context_line":"- Add README with setup and run instructions for local Grenade runs"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Depends-On: https://review.opendev.org/c/openstack/cyborg/+/980293"},{"line_number":22,"context_line":"Depends-On: https://review.opendev.org/c/openstack/cyborg/+/980294"},{"line_number":23,"context_line":"Depends-On: https://review.opendev.org/c/openstack/cyborg/+/979991"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"2f8d70aa_8ccfd4ce","line":20,"updated":"2026-03-19 19:08:23.000000000","message":"so we are in an in between period.\n\ngrenade is still testing as if master is 2026.1 but technially its 2026.2\n\nthat wont update for  afew weeks.\n\nso technially this is passing because it not upgrdin form 2026.1 in the default grenade job that is still upgrading form 2025.2\n\nso we need to cherry-pick the status command change to stable/2026.1 so it does not break when that is fixed.","commit_id":"a18bac6a36acc41ed9d7336d1a0bff362eb53864"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"25a099ad20882458a5a748f7da958e021b6e62c4","unresolved":false,"context_lines":[{"line_number":17,"context_line":"- Add Grenade plugin integration: settings, resources.sh (create/verify/"},{"line_number":18,"context_line":"  destroy device profiles), upgrade.sh, shutdown.sh"},{"line_number":19,"context_line":"- Add README with setup and run instructions for local Grenade runs"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Depends-On: https://review.opendev.org/c/openstack/cyborg/+/980293"},{"line_number":22,"context_line":"Depends-On: https://review.opendev.org/c/openstack/cyborg/+/980294"},{"line_number":23,"context_line":"Depends-On: https://review.opendev.org/c/openstack/cyborg/+/979991"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"7744b407_67e93b63","line":20,"in_reply_to":"2f8d70aa_8ccfd4ce","updated":"2026-03-20 03:37:02.000000000","message":"Done","commit_id":"a18bac6a36acc41ed9d7336d1a0bff362eb53864"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"98f08cfa3d89217acbbb01c003fad43a1e59a984","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"8e9c03c5_d544b66f","updated":"2026-03-12 05:47:35.000000000","message":"Need to address few more things","commit_id":"d9d28171935005d057febd28c6015469d4495cc3"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"9af0d0b273d49b4909e92046ff92f0c0fe4ee117","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"609813f4_40758b1b","updated":"2026-03-12 06:49:05.000000000","message":"recheck","commit_id":"8d3567770c18540db2e8f98061d0a09f0b0bb7fc"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"88f51284cbeb4fac2b0f553ba00dd8a0016b689c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"39c60f0d_db6dce4c","updated":"2026-03-12 18:21:38.000000000","message":"some porgress now\n\n2026-03-12 16:08:26.940 | + /opt/stack/new/grenade/projects/60_nova/resources.sh:main:1 :   exit_trap\n2026-03-12 16:08:26.942 | + /opt/stack/new/grenade/functions:exit_trap:115 :   local r\u003d0\n2026-03-12 16:08:26.947 | + inc/plugin:resources:114                 :   for project in $projects\n2026-03-12 16:08:26.949 | + inc/plugin:resources:115                 :   local dir\u003d/opt/stack/new/cyborg/devstack/upgrade\n2026-03-12 16:08:26.951 | + inc/plugin:resources:116                 :   [[ -z /opt/stack/new/cyborg/devstack/upgrade ]]\n2026-03-12 16:08:26.954 | + inc/plugin:resources:119                 :   local resource\u003d/opt/stack/new/cyborg/devstack/upgrade/resources.sh\n2026-03-12 16:08:26.956 | + inc/plugin:resources:120                 :   [[ -e /opt/stack/new/cyborg/devstack/upgrade/resources.sh ]]\n2026-03-12 16:08:26.958 | + inc/plugin:resources:122                 :   TOP_DIR\u003d/opt/stack/old/devstack\n2026-03-12 16:08:26.960 | + inc/plugin:resources:122                 :   LOGDIR\u003d/opt/stack/logs\n2026-03-12 16:08:26.962 | + inc/plugin:resources:122                 :   /opt/stack/new/cyborg/devstack/upgrade/resources.sh verify post-upgrade\n2026-03-12 16:08:28.322 | + /opt/stack/new/cyborg/devstack/upgrade/resources.sh:main:13 :   DEVICE_PROFILE_GROUPS\u003d\u0027[{\"resources:FPGA\": \"1\", \"trait:CUSTOM_FAKE_DEVICE\": \"required\"}]\u0027\n2026-03-12 16:08:28.325 | + /opt/stack/new/cyborg/devstack/upgrade/resources.sh:main:176 :   case $1 in\n2026-03-12 16:08:28.326 | + /opt/stack/new/cyborg/devstack/upgrade/resources.sh:main:184 :   verify\n2026-03-12 16:08:28.328 | + /opt/stack/new/cyborg/devstack/upgrade/resources.sh:verify:157 :   verify_device_profile\n2026-03-12 16:08:28.330 | ++ /opt/stack/new/cyborg/devstack/upgrade/resources.sh:verify_device_profile:50 :   resource_get cyborg dp_uuid\n2026-03-12 16:08:28.332 | ++ /opt/stack/new/grenade/inc/plugin:resource_get:142 :   local project\u003dcyborg\n2026-03-12 16:08:28.334 | ++ /opt/stack/new/grenade/inc/plugin:resource_get:143 :   local key\u003ddp_uuid\n2026-03-12 16:08:28.336 | +++ /opt/stack/new/grenade/inc/plugin:resource_get:144 :   iniget /opt/stack/save/grenade_db.ini cyborg dp_uuid\n2026-03-12 16:08:28.353 | ++ /opt/stack/new/grenade/inc/plugin:resource_get:144 :   local value\u003d20da008d-8850-4842-8938-f0b5433b9066\n2026-03-12 16:08:28.354 | ++ /opt/stack/new/grenade/inc/plugin:resource_get:145 :   echo 20da008d-8850-4842-8938-f0b5433b9066\n2026-03-12 16:08:28.357 | + /opt/stack/new/cyborg/devstack/upgrade/resources.sh:verify_device_profile:50 :   local dp_uuid\u003d20da008d-8850-4842-8938-f0b5433b9066\n2026-03-12 16:08:28.359 | + /opt/stack/new/cyborg/devstack/upgrade/resources.sh:verify_device_profile:51 :   openstack accelerator device profile show 20da008d-8850-4842-8938-f0b5433b9066\n2026-03-12 16:08:30.033 | device_profile 20da008d-8850-4842-8938-f0b5433b9066 not found\n2026-03-12 16:08:30.218 | + /opt/stack/new/cyborg/devstack/upgrade/resources.sh:verify_device_profile:1 :   exit_trap\n2026-03-12 16:08:30.221 | + /opt/stack/new/grenade/functions:exit_trap:115 :   local r\u003d1\n2026-03-12 16:08:30.222 | 1 verify_device_profile /opt/stack/new/cyborg/devstack/upgrade/resources.sh\n2026-03-12 16:08:30.222 | 157 verify /opt/stack/new/cyborg/devstack/upgrade/resources.sh\n2026-03-12 16:08:30.222 | 184 main /opt/stack/new/cyborg/devstack/upgrade/resources.sh\n2026-03-12 16:08:30.222 | Exit code: 1\n2026-03-12 16:08:39.985 | + inc/plugin:resources:123                 :   die 123 \u0027Failed to run /opt/stack/new/cyborg/devstack/upgrade/resources.sh verify post-upgrade\u0027\n2026-03-12 16:08:39.987 | + /opt/stack/new/devstack/functions-common:die:288 :   local exitcode\u003d1\n2026-03-12 16:08:39.989 | [Call Trace]\n2026-03-12 16:08:39.989 | ./grenade.sh:361:resources","commit_id":"ec35532ee3cc12e62185e5687f9cca90832c1029"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"82569534b0e641543db059a9afbc039b568fd413","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"e8feb98b_43ac34d5","updated":"2026-03-19 19:08:23.000000000","message":"this is looking much better","commit_id":"a18bac6a36acc41ed9d7336d1a0bff362eb53864"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"25a099ad20882458a5a748f7da958e021b6e62c4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"8658bb0f_33e89c90","updated":"2026-03-20 03:37:02.000000000","message":"Thank you for the review comments, I have addressed them.\n\nI found it hard to running grenade job locally based on grenade docs. So I have added these files (*-grenade) from my env env which will help future developers to run it locally.","commit_id":"0603759e453d6978b29bccd084579e9f2c549611"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"767dd84330f96f7868371a1385ecfa3a6b5ec649","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"e11db24f_ecd61494","updated":"2026-03-23 12:23:46.000000000","message":"i think this is fine.\n\nlets make sure the dependencies get updated and we can try an merge them this week\nthen this can likely merge the week after unless there is more feedback.","commit_id":"f138583d0cfdac56d7f53dafd480e2cfd5bac123"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"6185e4adb6d5c5c6fe93a113a92906c92fb3e0cf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"6b0c43a3_6f574c58","updated":"2026-03-23 19:01:28.000000000","message":"this is duplicating a lot of base setting which are handled by the grenade and make maintenance more difficult.","commit_id":"f138583d0cfdac56d7f53dafd480e2cfd5bac123"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"970d490241376b4b63961af539037896b3cbf9a4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":27,"id":"ed47c891_2add1b7c","updated":"2026-03-30 17:58:39.000000000","message":"lgtm, thanks.\n\nchecked both jobs and they are configured and testing the releases upgrade correctly.","commit_id":"3180769c52599ad5e72affd58c290fbff4d550d2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e7634b7665ccb0989aa65996495cdf807c458999","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":27,"id":"ffffcf49_7ac5d1dc","updated":"2026-03-30 19:34:05.000000000","message":"non of the bot comment are really strictly wrong.\n\ni think i would prefer to merge this working impltion sooner rather then keep revising to be perfect\n\nwe can consider the ohter feedback in followups if desired.\n\n+2 but we need to resovle the deps before this can merge.\n\none note form irc.\n\n2024.1 is already in unmainted statsu and 2024.2 will likely be EOL before we get aroudn to backporting this\n\nwe will backport this to 2026.1\n\nwe may backprot it to 2025.2 but we shoudl drop the skip-level-always job in that release\n\nwe likely will not backprot this to 2025.1 as there will be no mainted stable branch to upgdade from by the time we get to that point.","commit_id":"3180769c52599ad5e72affd58c290fbff4d550d2"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"29f3bfa2606d3263d36d2244f86943ccf838431e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":27,"id":"b446e372_c8eaba6b","in_reply_to":"ffffcf49_7ac5d1dc","updated":"2026-04-09 05:29:10.000000000","message":"2026.1 backport: https://review.opendev.org/c/openstack/cyborg/+/983817\n2025.2 backport by dropping skip-level-always job: https://review.opendev.org/c/openstack/cyborg/+/983818","commit_id":"3180769c52599ad5e72affd58c290fbff4d550d2"}],"devstack/upgrade/README.rst":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"82569534b0e641543db059a9afbc039b568fd413","unresolved":true,"context_lines":[{"line_number":19,"context_line":"     cd grenade"},{"line_number":20,"context_line":"     git clone https://opendev.org/openstack/cyborg cyborg"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"2. Copy configs from Cyborg\u0027s devstack upgrade directory into the Grenade"},{"line_number":23,"context_line":"   repo root::"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"     CYBORG_UPGRADE\u003d./cyborg/devstack/upgrade"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"     cp \"$CYBORG_UPGRADE/devstack.local.conf.base-grenade\"    devstack.local.conf.base"},{"line_number":28,"context_line":"     cp \"$CYBORG_UPGRADE/devstack.local.conf.target-grenade\" devstack.local.conf.target"},{"line_number":29,"context_line":"     cp \"$CYBORG_UPGRADE/localrc-grenade\"                     localrc"},{"line_number":30,"context_line":"     cp \"$CYBORG_UPGRADE/pluginrc-grenade\"                    pluginrc"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Run"},{"line_number":33,"context_line":"\u003d\u003d\u003d"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"From the Grenade repo root::"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"     ./grenade.sh"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"If the test fails, clean and retry::"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"     ./clean.sh"}],"source_content_type":"text/x-rst","patch_set":23,"id":"8244ed37_1d485f3a","line":38,"range":{"start_line":22,"start_character":2,"end_line":38,"end_character":1},"updated":"2026-03-19 19:08:23.000000000","message":"are you providign base files so that grenade can replace the values?","commit_id":"a18bac6a36acc41ed9d7336d1a0bff362eb53864"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"767dd84330f96f7868371a1385ecfa3a6b5ec649","unresolved":false,"context_lines":[{"line_number":19,"context_line":"     cd grenade"},{"line_number":20,"context_line":"     git clone https://opendev.org/openstack/cyborg cyborg"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"2. Copy configs from Cyborg\u0027s devstack upgrade directory into the Grenade"},{"line_number":23,"context_line":"   repo root::"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"     CYBORG_UPGRADE\u003d./cyborg/devstack/upgrade"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"     cp \"$CYBORG_UPGRADE/devstack.local.conf.base-grenade\"    devstack.local.conf.base"},{"line_number":28,"context_line":"     cp \"$CYBORG_UPGRADE/devstack.local.conf.target-grenade\" devstack.local.conf.target"},{"line_number":29,"context_line":"     cp \"$CYBORG_UPGRADE/localrc-grenade\"                     localrc"},{"line_number":30,"context_line":"     cp \"$CYBORG_UPGRADE/pluginrc-grenade\"                    pluginrc"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Run"},{"line_number":33,"context_line":"\u003d\u003d\u003d"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"From the Grenade repo root::"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"     ./grenade.sh"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"If the test fails, clean and retry::"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"     ./clean.sh"}],"source_content_type":"text/x-rst","patch_set":23,"id":"c4dbba19_3f2a75b7","line":38,"range":{"start_line":22,"start_character":2,"end_line":38,"end_character":1},"in_reply_to":"8244ed37_1d485f3a","updated":"2026-03-23 12:23:46.000000000","message":"Acknowledged","commit_id":"a18bac6a36acc41ed9d7336d1a0bff362eb53864"}],"devstack/upgrade/devstack.local.conf.base-grenade":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"82569534b0e641543db059a9afbc039b568fd413","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Base (old) release localrc for Grenade. Used when running the initial"},{"line_number":2,"context_line":"# stack.sh for the release we are upgrading from."},{"line_number":3,"context_line":"[[local|localrc]]"},{"line_number":4,"context_line":"unset HOST_IP"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"# Paths for the base install"},{"line_number":7,"context_line":"DEST\u003d@BASE_RELEASE_DIR@"}],"source_content_type":"application/octet-stream","patch_set":23,"id":"2c0f5623_e8b257b4","line":4,"range":{"start_line":4,"start_character":0,"end_line":4,"end_character":13},"updated":"2026-03-19 19:08:23.000000000","message":"you shoudl not be doign that","commit_id":"a18bac6a36acc41ed9d7336d1a0bff362eb53864"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e9beb012831f7da02649fc1d158defa309a9470d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Base (old) release localrc for Grenade. Used when running the initial"},{"line_number":2,"context_line":"# stack.sh for the release we are upgrading from."},{"line_number":3,"context_line":"[[local|localrc]]"},{"line_number":4,"context_line":"unset HOST_IP"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"# Paths for the base install"},{"line_number":7,"context_line":"DEST\u003d@BASE_RELEASE_DIR@"}],"source_content_type":"application/octet-stream","patch_set":23,"id":"6a8368f3_99c95dfe","line":4,"range":{"start_line":4,"start_character":0,"end_line":4,"end_character":13},"in_reply_to":"2c0f5623_e8b257b4","updated":"2026-03-20 15:44:45.000000000","message":"Done","commit_id":"a18bac6a36acc41ed9d7336d1a0bff362eb53864"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"82569534b0e641543db059a9afbc039b568fd413","unresolved":false,"context_lines":[{"line_number":3,"context_line":"[[local|localrc]]"},{"line_number":4,"context_line":"unset HOST_IP"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"# Paths for the base install"},{"line_number":7,"context_line":"DEST\u003d@BASE_RELEASE_DIR@"},{"line_number":8,"context_line":"DATA_DIR\u003d@DATA_DIR@"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"# Shared passwords for base deployment"},{"line_number":11,"context_line":"ADMIN_PASSWORD\u003dpassword"}],"source_content_type":"application/octet-stream","patch_set":23,"id":"1b505dff_6e9b08da","line":8,"range":{"start_line":6,"start_character":1,"end_line":8,"end_character":19},"updated":"2026-03-19 19:08:23.000000000","message":"this si not valid in bash or rather\nthis result in the litral value `@BASE_RELEASE_DIR@` being assined to `DEST`\n\nyou shoud remvoe this.\n\nthese shoud be valid local.confs.\n\nteh correct way to use grenade is to git checkout the base release of devstack\nand install that\n\nthen you checkout the target release of devstack and grenande and run that\n\nyou proably ment something like \n\nDESE\u003d${BASE_RELEASE_DIR:-/opt/stack/old}\n\n---\nlater, ok look later you suign thse as palcehoslder for the greade script to replace.\n\ni guess that is ok.\n\nnomlaly if we have local.conf in our devstack folder we expect them to be directly usabel by devstack with some minor edits but since this is under the upgrade sub director following the greande convetion i guess is ok","commit_id":"a18bac6a36acc41ed9d7336d1a0bff362eb53864"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"82569534b0e641543db059a9afbc039b568fd413","unresolved":true,"context_lines":[{"line_number":15,"context_line":"MYSQL_PASSWORD\u003d$ADMIN_PASSWORD"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"# Host and logging"},{"line_number":18,"context_line":"HOST_IP\u003d$(hostname -i)"},{"line_number":19,"context_line":"LOGFILE\u003d$DEST/logs/stack.sh.log"},{"line_number":20,"context_line":"LOGDAYS\u003d2"},{"line_number":21,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":23,"id":"af80b232_57fa0637","line":18,"in_reply_to":"584db6c9_f9274790","updated":"2026-03-19 19:08:23.000000000","message":"`HOST_IP\u003d${HOST_IP:-$(hostname -I | awk \"{print \\$1}\")}`\n \ni guess is clightly better as something -i will fail but on the ohter hand automating this is alwasy sort of tricky since the behvior very much depend on other factors like you hosts file.\n \n``` \n[18:29:22]\u003e hostname -I\n192.168.16.120 192.168.122.1 172.17.0.1 192.168.130.1 10.44.32.87 \n~ via 🐹 v1.24.13 via python: v3.13.12 on ☁️  smooney@redhat.com\n[18:29:28]\u003e hostname -i\n127.0.1.1\n~ via 🐹 v1\n```\n-i as we are currently useing only returns a useful ip if our cannonical reslut is not localhost\n\n\n```\n       -i, --ip-address\n              Display the network address(es) of the host name. Note that this works only  if  the\n              host  name can be resolved. Avoid using this option; use hostname --all-ip-addresses\n              instead.\n\n       -I, --all-ip-addresses\n              Display all network addresses of the host. This option enumerates all configured ad‐\n              dresses on all network interfaces. The loopback interface and  IPv6  link-local  ad‐\n              dresses are omitted. Contrary to option -i, this option does not depend on name res‐\n              olution. Do not make any assumptions about the order of the output.\n\n```\n\n-I removes The loopback interface and  IPv6  link-local  addresses.\n\nso it should alwasy return a public adress which is what we are tryign to do here.\n\nso i think this is a good suggestion to adopt.\n\nwe can treat is as a nit but i think it would be a nice improvment","commit_id":"a18bac6a36acc41ed9d7336d1a0bff362eb53864"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"25a099ad20882458a5a748f7da958e021b6e62c4","unresolved":false,"context_lines":[{"line_number":15,"context_line":"MYSQL_PASSWORD\u003d$ADMIN_PASSWORD"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"# Host and logging"},{"line_number":18,"context_line":"HOST_IP\u003d$(hostname -i)"},{"line_number":19,"context_line":"LOGFILE\u003d$DEST/logs/stack.sh.log"},{"line_number":20,"context_line":"LOGDAYS\u003d2"},{"line_number":21,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":23,"id":"1d265772_154c1d12","line":18,"in_reply_to":"af80b232_57fa0637","updated":"2026-03-20 03:37:02.000000000","message":"Done","commit_id":"a18bac6a36acc41ed9d7336d1a0bff362eb53864"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"6185e4adb6d5c5c6fe93a113a92906c92fb3e0cf","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":25,"id":"26974e24_a5182169","updated":"2026-03-23 19:01:28.000000000","message":"I do not think we need this file, as it also duplicates the base settings defined in the grenade repo. Duplicating the base settings here also increases their maintenance burden in two places: one in the grenade repo and the other here.\n- https://github.com/openstack/grenade/blob/master/devstack.local.conf.base\n\nFor adding extra things in devstack localrc on the base or target node, you can use grenade_devstack_localrc in the job itself.\n\n        grenade_devstack_localrc:\n            old:\n               \u003csetting for base devstack localrc\u003e\n            new:\n               \u003csetting for target devstack localrc\u003e\n            shared:\n               \u003csetting which are applicable for both base and target\u003e","commit_id":"f138583d0cfdac56d7f53dafd480e2cfd5bac123"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8c9528efa017b0b5eb9bf9f814ea5d694e885eb7","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":25,"id":"c56049d0_294bb948","in_reply_to":"26974e24_a5182169","updated":"2026-03-23 19:13:53.000000000","message":"yes that is the better way to do this in the zuul job,\n\ncurrenlty this file and the next is not used in the zull job atall\n\nthis was just a placeholder for local usage but it woudl be better to isntastead docuemtn what to add to greandes defulst as you suggeded on irc.\n\nand remove thiese base files","commit_id":"f138583d0cfdac56d7f53dafd480e2cfd5bac123"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"8e7debad68c26bd5b34d0f82966d033c550ef7d0","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":25,"id":"18e14097_e18874cf","in_reply_to":"c56049d0_294bb948","updated":"2026-03-26 16:10:28.000000000","message":"+1 Added it in the README.","commit_id":"f138583d0cfdac56d7f53dafd480e2cfd5bac123"}],"devstack/upgrade/devstack.local.conf.target-grenade":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"6185e4adb6d5c5c6fe93a113a92906c92fb3e0cf","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":25,"id":"e2fb59e2_f20c967d","updated":"2026-03-23 19:01:28.000000000","message":"ditto","commit_id":"f138583d0cfdac56d7f53dafd480e2cfd5bac123"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"8e7debad68c26bd5b34d0f82966d033c550ef7d0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"47521a56_95727df8","in_reply_to":"e2fb59e2_f20c967d","updated":"2026-03-26 16:10:28.000000000","message":"Done","commit_id":"f138583d0cfdac56d7f53dafd480e2cfd5bac123"}],"devstack/upgrade/localrc-grenade":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"82569534b0e641543db059a9afbc039b568fd413","unresolved":true,"context_lines":[{"line_number":4,"context_line":"BASE_RELEASE\u003dold"},{"line_number":5,"context_line":"BASE_RELEASE_DIR\u003d/opt/stack/$BASE_RELEASE"},{"line_number":6,"context_line":"BASE_DEVSTACK_DIR\u003d$BASE_RELEASE_DIR/devstack"},{"line_number":7,"context_line":"BASE_DEVSTACK_BRANCH\u003dstable/2025.2"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"# Target (new) release: branch and paths for the release we upgrade to"},{"line_number":10,"context_line":"TARGET_RELEASE\u003dnew"}],"source_content_type":"application/octet-stream","patch_set":23,"id":"e34a90ca_9a24bd6e","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":34},"updated":"2026-03-19 19:08:23.000000000","message":"if this is only used locally i guess this is fine otherwise this shoudl eb coming form the greade job so this might be better.\n\n`BASE_DEVSTACK_BRANCH\u003d${BASE_DEVSTACK_BRANCH:-stable/2025.2}`","commit_id":"a18bac6a36acc41ed9d7336d1a0bff362eb53864"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"25a099ad20882458a5a748f7da958e021b6e62c4","unresolved":false,"context_lines":[{"line_number":4,"context_line":"BASE_RELEASE\u003dold"},{"line_number":5,"context_line":"BASE_RELEASE_DIR\u003d/opt/stack/$BASE_RELEASE"},{"line_number":6,"context_line":"BASE_DEVSTACK_DIR\u003d$BASE_RELEASE_DIR/devstack"},{"line_number":7,"context_line":"BASE_DEVSTACK_BRANCH\u003dstable/2025.2"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"# Target (new) release: branch and paths for the release we upgrade to"},{"line_number":10,"context_line":"TARGET_RELEASE\u003dnew"}],"source_content_type":"application/octet-stream","patch_set":23,"id":"a2dfcdbf_2eca5e9a","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":34},"in_reply_to":"e34a90ca_9a24bd6e","updated":"2026-03-20 03:37:02.000000000","message":"Done","commit_id":"a18bac6a36acc41ed9d7336d1a0bff362eb53864"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"82569534b0e641543db059a9afbc039b568fd413","unresolved":true,"context_lines":[{"line_number":10,"context_line":"TARGET_RELEASE\u003dnew"},{"line_number":11,"context_line":"TARGET_RELEASE_DIR\u003d/opt/stack/$TARGET_RELEASE"},{"line_number":12,"context_line":"TARGET_DEVSTACK_DIR\u003d$TARGET_RELEASE_DIR/devstack"},{"line_number":13,"context_line":"TARGET_DEVSTACK_BRANCH\u003dmaster"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"# Skip Tempest smoke on base and target (run separately in CI if needed)"},{"line_number":16,"context_line":"TARGET_RUN_SMOKE\u003dFalse"}],"source_content_type":"application/octet-stream","patch_set":23,"id":"a5a62885_a3bf4bc0","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":29},"updated":"2026-03-19 19:08:23.000000000","message":"```suggestion\nTARGET_DEVSTACK_BRANCH\u003d${TARGET_DEVSTACK_BRANCH:-master}\n```","commit_id":"a18bac6a36acc41ed9d7336d1a0bff362eb53864"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"25a099ad20882458a5a748f7da958e021b6e62c4","unresolved":false,"context_lines":[{"line_number":10,"context_line":"TARGET_RELEASE\u003dnew"},{"line_number":11,"context_line":"TARGET_RELEASE_DIR\u003d/opt/stack/$TARGET_RELEASE"},{"line_number":12,"context_line":"TARGET_DEVSTACK_DIR\u003d$TARGET_RELEASE_DIR/devstack"},{"line_number":13,"context_line":"TARGET_DEVSTACK_BRANCH\u003dmaster"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"# Skip Tempest smoke on base and target (run separately in CI if needed)"},{"line_number":16,"context_line":"TARGET_RUN_SMOKE\u003dFalse"}],"source_content_type":"application/octet-stream","patch_set":23,"id":"4f337a28_98e31606","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":29},"in_reply_to":"a5a62885_a3bf4bc0","updated":"2026-03-20 03:37:02.000000000","message":"Done","commit_id":"a18bac6a36acc41ed9d7336d1a0bff362eb53864"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"82569534b0e641543db059a9afbc039b568fd413","unresolved":true,"context_lines":[{"line_number":11,"context_line":"TARGET_RELEASE_DIR\u003d/opt/stack/$TARGET_RELEASE"},{"line_number":12,"context_line":"TARGET_DEVSTACK_DIR\u003d$TARGET_RELEASE_DIR/devstack"},{"line_number":13,"context_line":"TARGET_DEVSTACK_BRANCH\u003dmaster"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"# Skip Tempest smoke on base and target (run separately in CI if needed)"},{"line_number":16,"context_line":"TARGET_RUN_SMOKE\u003dFalse"},{"line_number":17,"context_line":"BASE_RUN_SMOKE\u003dFalse"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"# Where Grenade stores saved state (DB dumps, grenade_db.ini, etc.)"},{"line_number":20,"context_line":"SAVE_DIR\u003d$BASE_RELEASE_DIR/save"}],"source_content_type":"application/octet-stream","patch_set":23,"id":"91746f20_e9d1bcef","line":17,"range":{"start_line":14,"start_character":1,"end_line":17,"end_character":20},"updated":"2026-03-19 19:08:23.000000000","message":"smoke is intetionly fast so agian i dotn think this is the correct default for local usage\n\ni would leave this commeted out so people know how to skip it but we\nshoudl run them by default.","commit_id":"a18bac6a36acc41ed9d7336d1a0bff362eb53864"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"25a099ad20882458a5a748f7da958e021b6e62c4","unresolved":false,"context_lines":[{"line_number":11,"context_line":"TARGET_RELEASE_DIR\u003d/opt/stack/$TARGET_RELEASE"},{"line_number":12,"context_line":"TARGET_DEVSTACK_DIR\u003d$TARGET_RELEASE_DIR/devstack"},{"line_number":13,"context_line":"TARGET_DEVSTACK_BRANCH\u003dmaster"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"# Skip Tempest smoke on base and target (run separately in CI if needed)"},{"line_number":16,"context_line":"TARGET_RUN_SMOKE\u003dFalse"},{"line_number":17,"context_line":"BASE_RUN_SMOKE\u003dFalse"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"# Where Grenade stores saved state (DB dumps, grenade_db.ini, etc.)"},{"line_number":20,"context_line":"SAVE_DIR\u003d$BASE_RELEASE_DIR/save"}],"source_content_type":"application/octet-stream","patch_set":23,"id":"c499dbb9_ce7f2dae","line":17,"range":{"start_line":14,"start_character":1,"end_line":17,"end_character":20},"in_reply_to":"91746f20_e9d1bcef","updated":"2026-03-20 03:37:02.000000000","message":"Done","commit_id":"a18bac6a36acc41ed9d7336d1a0bff362eb53864"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"82569534b0e641543db059a9afbc039b568fd413","unresolved":true,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"# Plugins are checked out under this dir (e.g. $TARGET_RELEASE_DIR/cyborg)"},{"line_number":29,"context_line":"PLUGIN_DIR\u003d$TARGET_RELEASE_DIR"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"# Allow overwriting existing clone/install when re-running"},{"line_number":32,"context_line":"FORCE\u003dyes"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"# Git base URL for cloning OpenStack repos"},{"line_number":35,"context_line":"GIT_BASE\u003d${GIT_BASE:-https://github.com}"}],"source_content_type":"application/octet-stream","patch_set":23,"id":"632e19d4_719a01fa","line":33,"range":{"start_line":30,"start_character":1,"end_line":33,"end_character":1},"updated":"2026-03-19 19:08:23.000000000","message":"that not what this does.\n\nFORCE in devstack/greade is to force install on unsupproted distors\nit not releated to cloneing.","commit_id":"a18bac6a36acc41ed9d7336d1a0bff362eb53864"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"25a099ad20882458a5a748f7da958e021b6e62c4","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"# Plugins are checked out under this dir (e.g. $TARGET_RELEASE_DIR/cyborg)"},{"line_number":29,"context_line":"PLUGIN_DIR\u003d$TARGET_RELEASE_DIR"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"# Allow overwriting existing clone/install when re-running"},{"line_number":32,"context_line":"FORCE\u003dyes"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"# Git base URL for cloning OpenStack repos"},{"line_number":35,"context_line":"GIT_BASE\u003d${GIT_BASE:-https://github.com}"}],"source_content_type":"application/octet-stream","patch_set":23,"id":"614521aa_7a478271","line":33,"range":{"start_line":30,"start_character":1,"end_line":33,"end_character":1},"in_reply_to":"632e19d4_719a01fa","updated":"2026-03-20 03:37:02.000000000","message":"Done","commit_id":"a18bac6a36acc41ed9d7336d1a0bff362eb53864"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"82569534b0e641543db059a9afbc039b568fd413","unresolved":true,"context_lines":[{"line_number":32,"context_line":"FORCE\u003dyes"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"# Git base URL for cloning OpenStack repos"},{"line_number":35,"context_line":"GIT_BASE\u003d${GIT_BASE:-https://github.com}"}],"source_content_type":"application/octet-stream","patch_set":23,"id":"973f537c_d39320f7","line":35,"range":{"start_line":35,"start_character":29,"end_line":35,"end_character":39},"updated":"2026-03-19 19:08:23.000000000","message":"the default for this is normally opendev.org\n\nis there a reaosn you are changing it.\n\ni have done this in the past to pull form the mirrors but im not sure we shoudl do that in our commited code.","commit_id":"a18bac6a36acc41ed9d7336d1a0bff362eb53864"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"25a099ad20882458a5a748f7da958e021b6e62c4","unresolved":false,"context_lines":[{"line_number":32,"context_line":"FORCE\u003dyes"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"# Git base URL for cloning OpenStack repos"},{"line_number":35,"context_line":"GIT_BASE\u003d${GIT_BASE:-https://github.com}"}],"source_content_type":"application/octet-stream","patch_set":23,"id":"18696cca_3d790cc5","line":35,"range":{"start_line":35,"start_character":29,"end_line":35,"end_character":39},"in_reply_to":"973f537c_d39320f7","updated":"2026-03-20 03:37:02.000000000","message":"Done","commit_id":"a18bac6a36acc41ed9d7336d1a0bff362eb53864"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"6185e4adb6d5c5c6fe93a113a92906c92fb3e0cf","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":25,"id":"977eb18b_be6b639b","updated":"2026-03-23 19:01:28.000000000","message":"ditto. For extra settings specific to cyborg, you can use grenade_localrc in jobs definition itself.\n\nDuplicating the base settings here will end up maintaining those in two places, and the cyborg grenade job will not benefit from automatic updates when done in the grenade repo on every release.\n\nOne good example is this release, due to the duplicate setting here, cyborg grenade jobs running upgrade from stable/2025.2 -\u003e master\n- https://zuul.opendev.org/t/openstack/build/845a8c87ce0f4b368e0ef3fd79e5ac75/log/controller/logs/grenade_localrc.txt\n\nwhere if cyborg let grenade handle these, then it could have automatically moved cyborg grenade job to test stable/2026.1-\u003emaster when grenade repo is updated (https://review.opendev.org/c/openstack/grenade/+/981624)","commit_id":"f138583d0cfdac56d7f53dafd480e2cfd5bac123"}],"devstack/upgrade/pluginrc-grenade":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"82569534b0e641543db059a9afbc039b568fd413","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Grenade plugins: external projects that participate in the upgrade test."},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Cyborg"},{"line_number":4,"context_line":"enable_grenade_plugin cyborg  https://review.opendev.org/openstack/cyborg"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"# Neutron"},{"line_number":7,"context_line":"enable_grenade_plugin neutron https://opendev.org/openstack/neutron"}],"source_content_type":"application/octet-stream","patch_set":23,"id":"6e0037ac_bdef4852","line":4,"in_reply_to":"4adaf9fb_08170706","updated":"2026-03-19 19:08:23.000000000","message":"ya this is valid we shoudl not be defaulting to the gerrir url\nthis will wokr but we should be using the official url \n`https://opendev.org/openstack/cyborg`","commit_id":"a18bac6a36acc41ed9d7336d1a0bff362eb53864"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"25a099ad20882458a5a748f7da958e021b6e62c4","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Grenade plugins: external projects that participate in the upgrade test."},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Cyborg"},{"line_number":4,"context_line":"enable_grenade_plugin cyborg  https://review.opendev.org/openstack/cyborg"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"# Neutron"},{"line_number":7,"context_line":"enable_grenade_plugin neutron https://opendev.org/openstack/neutron"}],"source_content_type":"application/octet-stream","patch_set":23,"id":"c5b194cc_4683514c","line":4,"in_reply_to":"6e0037ac_bdef4852","updated":"2026-03-20 03:37:02.000000000","message":"Done","commit_id":"a18bac6a36acc41ed9d7336d1a0bff362eb53864"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"7e8c7cf912b08580806648094f6cb4e87daf32ae","unresolved":true,"context_lines":[{"line_number":4,"context_line":"enable_grenade_plugin cyborg  https://opendev.org/openstack/cyborg"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"# Neutron"},{"line_number":7,"context_line":"enable_grenade_plugin neutron https://opendev.org/openstack/neutron"}],"source_content_type":"application/octet-stream","patch_set":24,"id":"f313eb70_841a0f93","line":7,"updated":"2026-03-20 15:26:28.000000000","message":"I\u0027m not too familiar with grenade, why do we need to add neutron as a plugin for the cyborg job?","commit_id":"0603759e453d6978b29bccd084579e9f2c549611"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"d94fb05d30e1d28d4ae9407f050ffe0b56f29d26","unresolved":true,"context_lines":[{"line_number":4,"context_line":"enable_grenade_plugin cyborg  https://opendev.org/openstack/cyborg"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"# Neutron"},{"line_number":7,"context_line":"enable_grenade_plugin neutron https://opendev.org/openstack/neutron"}],"source_content_type":"application/octet-stream","patch_set":24,"id":"d565356c_b6304b43","line":7,"in_reply_to":"b007927e_1dbb7b13","updated":"2026-03-23 04:59:17.000000000","message":"In the cyborg-grenade job CI pluginrc file https://storage.gra.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_b88/openstack/b8851eda2f5c433c9e8e337d342bb1ab/controller/logs/grenade_pluginrc.txt\n```\nenable_grenade_plugin cyborg https://opendev.org/openstack/cyborg\nenable_grenade_plugin neutron https://opendev.org/openstack/neutron\n```\nIt was there. that\u0027s why I have added it while running it locally.\n\nhttps://github.com/openstack/grenade/blob/0a5e3bf3c360ef963637d83a58c9e862ed2f4b69/roles/write-grenade-conf/templates/pluginrc.j2#L1 creates the pluginrc based on values of grenade_plugins.\n\nIf we check the grenade zuul playbook https://github.com/openstack/grenade/blob/0a5e3bf3c360ef963637d83a58c9e862ed2f4b69/playbooks/grenade.yaml#L15\nIt\u0027s vars default to devstack_plugins.\n```\n- hosts: controller\n  roles:\n    - configure-grenade-branches\n    - role: write-grenade-conf\n      base_dir: \"{{ devstack_bases.shared }}\"\n      grenade_base_dir: \"{{ devstack_bases.new }}\"\n      grenade_plugins: \"{{ devstack_plugins|default({}) }}\"\n```\nIf we check the grenade job definition https://github.com/openstack/grenade/blob/master/.zuul.yaml#L210\n```\n      devstack_plugins:\n        neutron: https://opendev.org/openstack/neutron\n```\nthat\u0027s why neutron plugin is coming in the pluginrc.\n I am going to remove it.","commit_id":"0603759e453d6978b29bccd084579e9f2c549611"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"767dd84330f96f7868371a1385ecfa3a6b5ec649","unresolved":false,"context_lines":[{"line_number":4,"context_line":"enable_grenade_plugin cyborg  https://opendev.org/openstack/cyborg"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"# Neutron"},{"line_number":7,"context_line":"enable_grenade_plugin neutron https://opendev.org/openstack/neutron"}],"source_content_type":"application/octet-stream","patch_set":24,"id":"fade4fcb_bc90ad82","line":7,"in_reply_to":"d565356c_b6304b43","updated":"2026-03-23 12:23:46.000000000","message":"Done ya that makes sesne. the neutron pluging is requried for some advanced neutron config like trunk ports ectra but we dont use any of theose featuetres so we can reply on the default neutron integration in devstack/grenade","commit_id":"0603759e453d6978b29bccd084579e9f2c549611"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e9beb012831f7da02649fc1d158defa309a9470d","unresolved":true,"context_lines":[{"line_number":4,"context_line":"enable_grenade_plugin cyborg  https://opendev.org/openstack/cyborg"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"# Neutron"},{"line_number":7,"context_line":"enable_grenade_plugin neutron https://opendev.org/openstack/neutron"}],"source_content_type":"application/octet-stream","patch_set":24,"id":"b007927e_1dbb7b13","line":7,"in_reply_to":"f313eb70_841a0f93","updated":"2026-03-20 15:44:45.000000000","message":"i was going to say we need it to upgrade neutron \n\ni.e. that the only reaosn is to provide the neutron greande plugin\nbut neutron does not have one in tree.\n\nhttps://github.com/openstack/neutron/tree/master/devstack\n\nthe greande jobs upgrade all services not just cybrog\n\nand neutron is in covered by greade its self\nhttps://github.com/openstack/grenade/tree/master/projects/50_neutron\n\nso this is not needed.","commit_id":"0603759e453d6978b29bccd084579e9f2c549611"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"6185e4adb6d5c5c6fe93a113a92906c92fb3e0cf","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Grenade plugins: external projects that participate in the upgrade test."},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Cyborg"},{"line_number":4,"context_line":"enable_grenade_plugin cyborg  https://opendev.org/openstack/cyborg"}],"source_content_type":"application/octet-stream","patch_set":25,"id":"a93ee30d_7f132f32","line":4,"range":{"start_line":1,"start_character":0,"end_line":4,"end_character":66},"updated":"2026-03-23 19:01:28.000000000","message":"This file is not needed as for the greande jobs where devstack_plugins is defined, grenade will automatically will detect the greande plugin in upgrade/ dir","commit_id":"f138583d0cfdac56d7f53dafd480e2cfd5bac123"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"8e7debad68c26bd5b34d0f82966d033c550ef7d0","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Grenade plugins: external projects that participate in the upgrade test."},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Cyborg"},{"line_number":4,"context_line":"enable_grenade_plugin cyborg  https://opendev.org/openstack/cyborg"}],"source_content_type":"application/octet-stream","patch_set":25,"id":"57dfd199_96345246","line":4,"range":{"start_line":1,"start_character":0,"end_line":4,"end_character":66},"in_reply_to":"a93ee30d_7f132f32","updated":"2026-03-26 16:10:28.000000000","message":"Acknowledged","commit_id":"f138583d0cfdac56d7f53dafd480e2cfd5bac123"}],"devstack/upgrade/resources.sh":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e7634b7665ccb0989aa65996495cdf807c458999","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#!/usr/bin/env bash"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"set -o errexit"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"source $GRENADE_DIR/grenaderc"},{"line_number":6,"context_line":"source $GRENADE_DIR/functions"}],"source_content_type":"text/x-sh","patch_set":27,"id":"d06ef08f_fffa4ef1","line":3,"in_reply_to":"b50c7fc0_f651e1d8","updated":"2026-03-30 19:34:05.000000000","message":"this is an ok enhcanment but we can consider it for future hardening\nlets keep the scope fo this chagne limited ot what it currently does","commit_id":"3180769c52599ad5e72affd58c290fbff4d550d2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e7634b7665ccb0989aa65996495cdf807c458999","unresolved":true,"context_lines":[{"line_number":2,"context_line":""},{"line_number":3,"context_line":"set -o errexit"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"source $GRENADE_DIR/grenaderc"},{"line_number":6,"context_line":"source $GRENADE_DIR/functions"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"TOP_DIR\u003d${TOP_DIR:-$TARGET_DEVSTACK_DIR}"}],"source_content_type":"text/x-sh","patch_set":27,"id":"416f4bd9_b72eaaca","line":5,"in_reply_to":"d971f881_f0127538","updated":"2026-03-30 19:34:05.000000000","message":"this is a good recomemndation but lets adress this sepreatly in its own followup patch across the entirty of the devstack plugin.","commit_id":"3180769c52599ad5e72affd58c290fbff4d550d2"}],"devstack/upgrade/settings":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"82569534b0e641543db059a9afbc039b568fd413","unresolved":true,"context_lines":[{"line_number":10,"context_line":"devstack_localrc base enable_service cyborg-api cyborg-cond cyborg-agent"},{"line_number":11,"context_line":"devstack_localrc target enable_service cyborg-api cyborg-cond cyborg-agent"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"# Smoke tests disabled because Cyborg-specific tests are run via tempest_test_regex instead"},{"line_number":14,"context_line":"BASE_RUN_SMOKE\u003dFalse"},{"line_number":15,"context_line":"TARGET_RUN_SMOKE\u003dFalse"}],"source_content_type":"application/octet-stream","patch_set":23,"id":"8869ff35_f820b7b9","line":15,"range":{"start_line":13,"start_character":0,"end_line":15,"end_character":22},"updated":"2026-03-19 19:08:23.000000000","message":"this is not what we shodl be defautling too.\n\neven in ci we expect to run the smoke tests on the old and new release before we ever get to the job regex.\n\nthe smoke tests are run in greadee jobs alwasy to ensure the cloud it workign correctly before the project specifc tests are run.","commit_id":"a18bac6a36acc41ed9d7336d1a0bff362eb53864"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"25a099ad20882458a5a748f7da958e021b6e62c4","unresolved":false,"context_lines":[{"line_number":10,"context_line":"devstack_localrc base enable_service cyborg-api cyborg-cond cyborg-agent"},{"line_number":11,"context_line":"devstack_localrc target enable_service cyborg-api cyborg-cond cyborg-agent"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"# Smoke tests disabled because Cyborg-specific tests are run via tempest_test_regex instead"},{"line_number":14,"context_line":"BASE_RUN_SMOKE\u003dFalse"},{"line_number":15,"context_line":"TARGET_RUN_SMOKE\u003dFalse"}],"source_content_type":"application/octet-stream","patch_set":23,"id":"ee421e06_0dc80ecd","line":15,"range":{"start_line":13,"start_character":0,"end_line":15,"end_character":22},"in_reply_to":"8869ff35_f820b7b9","updated":"2026-03-20 03:37:02.000000000","message":"Done","commit_id":"a18bac6a36acc41ed9d7336d1a0bff362eb53864"}],"devstack/upgrade/shutdown.sh":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9df39f0cc3c4b9e426512e3fff90d9c9387711b8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#!/bin/bash"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"set -o errexit"},{"line_number":4,"context_line":""}],"source_content_type":"text/x-sh","patch_set":6,"id":"c6334d62_931f32e9","line":1,"in_reply_to":"0a08c4cc_559df8be","updated":"2026-03-11 19:08:55.000000000","message":"fiar we coudl use #!/usr/bin/env bash\n\nhowever i bleive this file is sourced not run by hand by grenade so it should not have a shebang line and should not be marked as executable\n\nalthough i could be wrong about that.\n\nwe shoudl confirm exactly how this is invoked.\n\nplugin.sh for example is soruced which is why we do not have a shebang line in it for the devstack plugin as its not a standalone script its a devstack plugin and devstack plugins are souce not executed so the yave acess to the global devstack function and varibale.s\n\n---\nlater\n\nTOP_DIR\u003d$TARGET_DEVSTACK_DIR $plugin_dir/upgrade.sh |\nhttps://github.com/openstack/grenade/blob/0a5e3bf3c360ef963637d83a58c9e862ed2f4b69/inc/upgrade#L65C9-L65C62\n\n local shutdown\u003d$dir/shutdown.sh\n        if [[ -e $shutdown ]]; then\n            TOP_DIR\u003d$BASE_DEVSTACK_DIR $shutdown || die $LINENO \"Failed to shutdown $project\"\n        fi\n\nhttps://github.com/openstack/grenade/blob/0a5e3bf3c360ef963637d83a58c9e862ed2f4b69/inc/plugin#L87\n\nok so thse are executed not source so its correct ot have a shebang line we\n\ngrenade uses #!/bin/bash for shudwon\nhttps://review.opendev.org/c/openstack/cyborg/+/979802/6/devstack/upgrade/shutdown.sh\n\nand #!/usr/bin/env bash for upgrade\n\nhttps://github.com/openstack/grenade/blob/0a5e3bf3c360ef963637d83a58c9e862ed2f4b69/projects/60_nova/upgrade.sh#L\n\nso for now lets do the same\n\n`#!/usr/bin/env bash` is better long term","commit_id":"ec8057dad6dd95a4bee14bb267d37f1d5a479dba"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9df39f0cc3c4b9e426512e3fff90d9c9387711b8","unresolved":true,"context_lines":[{"line_number":11,"context_line":"source $BASE_DEVSTACK_DIR/lib/tls"},{"line_number":12,"context_line":"source $BASE_DEVSTACK_DIR/lib/apache"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"WATCHER_DEVSTACK_DIR\u003d$(dirname $(dirname $0))"},{"line_number":15,"context_line":"source $WATCHER_DEVSTACK_DIR/settings"},{"line_number":16,"context_line":"source $WATCHER_DEVSTACK_DIR/plugin.sh"},{"line_number":17,"context_line":"source $WATCHER_DEVSTACK_DIR/lib/cyborg"}],"source_content_type":"text/x-sh","patch_set":6,"id":"d39b341e_5e5fe258","line":14,"in_reply_to":"8889750a_e062e0c1","updated":"2026-03-11 19:08:55.000000000","message":"\u003e **Recommendation**:\n\u003e Replace WATCHER_DEVSTACK_DIR with CYBORG_DEVSTACK_DIR on lines 14-17 of shutdown.sh. The variable should be: CYBORG_DEVSTACK_DIR\u003d$(dirname $(dirname $0))\n\n\nyes here and belove its a copy paste mistake\n\nthis is the incnation that i noramly used.\n\n`CYBORG_DEVSTACK_DIR\u003d$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" \u0026\u0026 cd .. \u0026\u0026 pwd )`\nhttps://opendev.org/x/networking-ovs-dpdk/src/branch/master/devstack/settings#L6\n\nbut\n\n`CYBORG_DEVSTACK_DIR\u003d$(dirname $(dirname $0))`\n\nshoudl be effectily the same\nit shoudl be defiend in the settign file normally","commit_id":"ec8057dad6dd95a4bee14bb267d37f1d5a479dba"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"7107af237419249ae9d504171781a466efa20ef4","unresolved":false,"context_lines":[{"line_number":11,"context_line":"source $BASE_DEVSTACK_DIR/lib/tls"},{"line_number":12,"context_line":"source $BASE_DEVSTACK_DIR/lib/apache"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"WATCHER_DEVSTACK_DIR\u003d$(dirname $(dirname $0))"},{"line_number":15,"context_line":"source $WATCHER_DEVSTACK_DIR/settings"},{"line_number":16,"context_line":"source $WATCHER_DEVSTACK_DIR/plugin.sh"},{"line_number":17,"context_line":"source $WATCHER_DEVSTACK_DIR/lib/cyborg"}],"source_content_type":"text/x-sh","patch_set":6,"id":"c647949c_209fdb1c","line":14,"in_reply_to":"d39b341e_5e5fe258","updated":"2026-03-18 05:08:57.000000000","message":"Done","commit_id":"ec8057dad6dd95a4bee14bb267d37f1d5a479dba"}],"devstack/upgrade/upgrade.sh":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9df39f0cc3c4b9e426512e3fff90d9c9387711b8","unresolved":true,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"source $TOP_DIR/openrc admin admin"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"CYBORG_DEVSTACK_DIR\u003d$(dirname $(dirname $BASH_SOURCE))"},{"line_number":49,"context_line":"source $CYBORG_DEVSTACK_DIR/settings"},{"line_number":50,"context_line":"source $CYBORG_DEVSTACK_DIR/lib/cyborg"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-sh","patch_set":6,"id":"b1f7471e_0d8a1aaf","line":48,"in_reply_to":"195a78c6_343b651d","updated":"2026-03-11 19:08:55.000000000","message":"yep \n`CYBORG_DEVSTACK_DIR\u003d$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" \u0026\u0026 cd .. \u0026\u0026 pwd )`\nor \n`CYBORG_DEVSTACK_DIR\u003d$(dirname $(dirname $0))`\nhere too although the varible name is correcnt in this case.","commit_id":"ec8057dad6dd95a4bee14bb267d37f1d5a479dba"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"7107af237419249ae9d504171781a466efa20ef4","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"source $TOP_DIR/openrc admin admin"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"CYBORG_DEVSTACK_DIR\u003d$(dirname $(dirname $BASH_SOURCE))"},{"line_number":49,"context_line":"source $CYBORG_DEVSTACK_DIR/settings"},{"line_number":50,"context_line":"source $CYBORG_DEVSTACK_DIR/lib/cyborg"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-sh","patch_set":6,"id":"bfdf474d_d392dc30","line":48,"in_reply_to":"b1f7471e_0d8a1aaf","updated":"2026-03-18 05:08:57.000000000","message":"Done","commit_id":"ec8057dad6dd95a4bee14bb267d37f1d5a479dba"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"a2ae9495b46c900f06a7fbc2623224d9e1dbe184","unresolved":true,"context_lines":[{"line_number":43,"context_line":"source $TARGET_DEVSTACK_DIR/lib/keystone"},{"line_number":44,"context_line":"source $TARGET_DEVSTACK_DIR/lib/placement"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"source $TOP_DIR/openrc admin admin"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"CYBORG_DEVSTACK_DIR\u003d$(dirname $(dirname $0))"},{"line_number":49,"context_line":"source $CYBORG_DEVSTACK_DIR/settings"}],"source_content_type":"text/x-sh","patch_set":22,"id":"57096cd5_69d4093f","line":46,"in_reply_to":"55f7d078_b2b04502","updated":"2026-03-18 05:03:04.000000000","message":"\u003e The upgrade.sh script uses $TOP_DIR/openrc but TOP_DIR is not defined in this script. It relies on GRENADE_DIR and assumes TOP_DIR will be available from sourced files.\n\u003e \n\u003e **Severity**: WARNING | **Confidence**: 0.7\n\u003e \n\u003e **Impact**: The script assumes TOP_DIR is defined in the environment or by sourced files. If GRENADE_DIR/functions doesn\u0027t set TOP_DIR, the openrc source command will fail.\n\u003e \n\u003e **Suggestion**:\n\u003e Add explicit TOP_DIR definition or verify that grenaderc/functions properly sets this variable. Consider adding: TOP_DIR\u003d${TOP_DIR:-$TARGET_DEVSTACK_DIR} before sourcing openrc.\n\nGood suggestion.","commit_id":"9b70aa02ffa39ea22910effcd3169e7526ed8aa0"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"7107af237419249ae9d504171781a466efa20ef4","unresolved":false,"context_lines":[{"line_number":43,"context_line":"source $TARGET_DEVSTACK_DIR/lib/keystone"},{"line_number":44,"context_line":"source $TARGET_DEVSTACK_DIR/lib/placement"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"source $TOP_DIR/openrc admin admin"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"CYBORG_DEVSTACK_DIR\u003d$(dirname $(dirname $0))"},{"line_number":49,"context_line":"source $CYBORG_DEVSTACK_DIR/settings"}],"source_content_type":"text/x-sh","patch_set":22,"id":"d1b9c04c_a400b3a6","line":46,"in_reply_to":"57096cd5_69d4093f","updated":"2026-03-18 05:08:57.000000000","message":"Done","commit_id":"9b70aa02ffa39ea22910effcd3169e7526ed8aa0"}]}
