)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"92e55a53c84dbb37c0121e13469fd40151ddf95a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"d96ceccc_b1eaddf5","updated":"2026-03-27 10:30:19.000000000","message":"Agree with gmaan\u0027s comments RE: moving imports up top. -1 is for that. I also have a question inline though.","commit_id":"4a5057150bc18fc10cdd4ed0b72061ca4811d2ff"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"658ce123b158ba82b96056bee759595d2a5da051","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"9a931762_1822c5ae","updated":"2026-03-27 01:25:47.000000000","message":"overall lgtm, this will be helpful to test neutron periodic worker are pickable or not. Because neutron periodic worker launch was one case there spawn was failing on conf object pickle.\n\nCan we add some releasenotes for this?","commit_id":"4a5057150bc18fc10cdd4ed0b72061ca4811d2ff"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"83deca880591ade1eac821a2866799c8b34831e4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"31f5c474_b4dc7ca8","updated":"2026-07-01 15:41:35.000000000","message":"Failure is related to the patch. I am working on an update.","commit_id":"31fe3abe4707a96f806e68a5876bac9c6c028a80"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"986dad4e0379445234bcddac77f603e52ad94f91","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":3,"id":"a4a94bdd_87d2a0c0","updated":"2026-03-31 17:44:32.000000000","message":"GR-OSS team group review that included Clif Houck.","commit_id":"31fe3abe4707a96f806e68a5876bac9c6c028a80"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"c5e60e5bba7f19a1e03b5bf64084f7a2f5933a9a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"4a263a70_a0de16d4","updated":"2026-07-01 18:21:37.000000000","message":"https://zuul.opendev.org/t/openstack/build/753fd6daf98e4e9ea8039a53691b3dc4/log/controller/logs/screen-q-ovn-agent.txt#601","commit_id":"31fe3abe4707a96f806e68a5876bac9c6c028a80"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"23da82f3295a5330557d69b673bc73aa971d380d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"630373f3_0d3c7e06","updated":"2026-06-10 15:44:52.000000000","message":"idk why Daniel didn\u0027t add +A but there is no unresoleved comment left in this change so I\u0027ll merge it now.","commit_id":"31fe3abe4707a96f806e68a5876bac9c6c028a80"},{"author":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"change_message_id":"bf2bce4ff6bfeded506421b08a8130bbf7fe2039","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"ae22c9b6_23e2b4bb","updated":"2026-06-11 10:21:51.000000000","message":"recheck","commit_id":"31fe3abe4707a96f806e68a5876bac9c6c028a80"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"9b5f8098717c20e5cddb53165f2dca5fc01aeb22","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"c7d40857_3e78cec3","updated":"2026-06-26 13:15:05.000000000","message":"recheck","commit_id":"31fe3abe4707a96f806e68a5876bac9c6c028a80"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"05a3447fed02d667b1d4f6df0dce87732181d532","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"d0f3b3dd_9678c65c","updated":"2026-06-11 12:05:54.000000000","message":"recheck","commit_id":"31fe3abe4707a96f806e68a5876bac9c6c028a80"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"fe4b23a4c75d32de53a8f4f75bfff5f9aa84ebe8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"7403a8b9_db99ffb6","updated":"2026-06-10 18:02:15.000000000","message":"recheck - curl: (28) Failed to connect to 169.254.169.254 port 80 after 130584 ms: Connection timed out","commit_id":"31fe3abe4707a96f806e68a5876bac9c6c028a80"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"da761e78167213465702156b3f369721bc0135cc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"da5521ed_99fbe6c1","updated":"2026-06-23 15:02:04.000000000","message":"recheck - tempest.lib.exceptions.TimeoutException: Request timed out\nDetails: Timeout while verifying metadata on server.","commit_id":"31fe3abe4707a96f806e68a5876bac9c6c028a80"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"ebedba8bc2fca3c5b368a83533c8861117e85581","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"61982d1d_10d2b627","updated":"2026-06-15 15:40:51.000000000","message":"recheck - yet another recheck since this patch is unlikely related.\n\ntempest.lib.exceptions.TimeoutException: Request timed out\nDetails: Timeout while verifying metadata on server.","commit_id":"31fe3abe4707a96f806e68a5876bac9c6c028a80"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"d051e4a4d17090e55a0783e6f33913e6e1d6f34f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"57f8845b_61524d1c","updated":"2026-06-15 10:58:48.000000000","message":"recheck access to metadata server timed out. Let\u0027s see if that is reproducible.","commit_id":"31fe3abe4707a96f806e68a5876bac9c6c028a80"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"31e84fe04dfdca419f5c4b2c73df1808f0817c22","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"121a36fd_e13beda4","updated":"2026-06-10 18:02:06.000000000","message":"stdout:\n\n2026-06-10 16:37:06,170 98467 ERROR    [tempest.api.compute.base] metadata service not available yet\n2026-06-10 16:37:06.170 98467 ERROR tempest.api.compute.base Traceback (most recent call last):\n2026-06-10 16:37:06.170 98467 ERROR tempest.api.compute.base   File \"/opt/stack/tempest/tempest/api/compute/base.py\", line 576, in get_and_verify_metadata\n2026-06-10 16:37:06.170 98467 ERROR tempest.api.compute.base     md_json \u003d ssh_client.exec_command(cmd)\n2026-06-10 16:37:06.170 98467 ERROR tempest.api.compute.base               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n2026-06-10 16:37:06.170 98467 ERROR tempest.api.compute.base   File \"/opt/stack/tempest/tempest/lib/common/utils/linux/remote_client.py\", line 31, in wrapper\n2026-06-10 16:37:06.170 98467 ERROR tempest.api.compute.base     return function(self, *args, **kwargs)\n2026-06-10 16:37:06.170 98467 ERROR tempest.api.compute.base            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n2026-06-10 16:37:06.170 98467 ERROR tempest.api.compute.base   File \"/opt/stack/tempest/tempest/lib/common/utils/linux/remote_client.py\", line 115, in exec_command\n2026-06-10 16:37:06.170 98467 ERROR tempest.api.compute.base     return self.ssh_client.exec_command(cmd)\n2026-06-10 16:37:06.170 98467 ERROR tempest.api.compute.base            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n2026-06-10 16:37:06.170 98467 ERROR tempest.api.compute.base   File \"/opt/stack/tempest/tempest/lib/common/ssh.py\", line 237, in exec_command\n2026-06-10 16:37:06.170 98467 ERROR tempest.api.compute.base     raise exceptions.SSHExecCommandFailed(\n2026-06-10 16:37:06.170 98467 ERROR tempest.api.compute.base tempest.lib.exceptions.SSHExecCommandFailed: Command \u0027set -eu -o pipefail; PATH\u003d$PATH:/sbin:/usr/sbin; curl http://169.254.169.254/openstack/latest/meta_data.json\u0027, exit status: 28, stderr:\n2026-06-10 16:37:06.170 98467 ERROR tempest.api.compute.base   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n2026-06-10 16:37:06.170 98467 ERROR tempest.api.compute.base                                  Dload  Upload   Total   Spent    Left  Speed\n2026-06-10 16:37:06.170 98467 ERROR tempest.api.compute.base","commit_id":"31fe3abe4707a96f806e68a5876bac9c6c028a80"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"7df5cecd32408955374e50cafc8570089c803abf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"f0cac8e1_290f53a5","updated":"2026-03-27 16:05:22.000000000","message":"thanks, lgtm","commit_id":"31fe3abe4707a96f806e68a5876bac9c6c028a80"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"ca393ce05e9fbb9e6b6291de9cfa1268f1c4ffa6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"98e49c31_2a9de943","updated":"2026-07-02 10:25:26.000000000","message":"Based on the discussion around spawn support, I also experimented with an alternative oslo.config approach:\n\nhttps://review.opendev.org/c/openstack/oslo.config/+/995080\n\nInstead of making ConfigOpts internals directly pickleable, this prototype introduces explicit ConfigOpts state snapshots (export_state/import_state) and uses those snapshots for spawn worker state transfer. The goal is to preserve the effective configuration state while avoiding serialization of process-local internals.\n\nI\u0027d appreciate any feedback on whether this direction seems reasonable.","commit_id":"b88cd7decd57bbe3d382227940e72e88b15b9779"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"a6e094d79850e8fd2f90d624f76ca7a0e914092e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"fe06e66c_f12b3a93","in_reply_to":"98e49c31_2a9de943","updated":"2026-07-03 10:38:56.000000000","message":"I like the approach you\u0027ve taken. I will give it a thorough review by next week. Generally, I don\u0027t mind if that merges instead.","commit_id":"b88cd7decd57bbe3d382227940e72e88b15b9779"}],"oslo_config/cfg.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"92e55a53c84dbb37c0121e13469fd40151ddf95a","unresolved":true,"context_lines":[{"line_number":2850,"context_line":""},{"line_number":2851,"context_line":"    def __reduce__(self) -\u003e str | tuple[Any, ...]:"},{"line_number":2852,"context_line":"        if self is CONF:"},{"line_number":2853,"context_line":"            return (_get_conf_singleton, ())"},{"line_number":2854,"context_line":"        return super().__reduce__()"},{"line_number":2855,"context_line":""},{"line_number":2856,"context_line":"    def reset(self) -\u003e None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"d3ffa4ef_9c536b48","line":2853,"updated":"2026-03-27 10:30:19.000000000","message":"Why the layer of indirection? 😕 I assume there\u0027s a reason we can\u0027t do\n\n\n```suggestion\n            return (CONF, ())\n```\n\nIf there\u0027s a good reason, can we get a comment on `_get_conf_singleton` indicating why it exists","commit_id":"4a5057150bc18fc10cdd4ed0b72061ca4811d2ff"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"af6506981a7a155ae406d122600b5c9160f57da6","unresolved":false,"context_lines":[{"line_number":2850,"context_line":""},{"line_number":2851,"context_line":"    def __reduce__(self) -\u003e str | tuple[Any, ...]:"},{"line_number":2852,"context_line":"        if self is CONF:"},{"line_number":2853,"context_line":"            return (_get_conf_singleton, ())"},{"line_number":2854,"context_line":"        return super().__reduce__()"},{"line_number":2855,"context_line":""},{"line_number":2856,"context_line":"    def reset(self) -\u003e None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"cf5d2ec7_a22310f5","line":2853,"in_reply_to":"cf8461ed_79db1438","updated":"2026-03-27 13:09:55.000000000","message":"Done","commit_id":"4a5057150bc18fc10cdd4ed0b72061ca4811d2ff"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"91427b9f5aeca9bebb0f2d04087a12f6de763162","unresolved":true,"context_lines":[{"line_number":2850,"context_line":""},{"line_number":2851,"context_line":"    def __reduce__(self) -\u003e str | tuple[Any, ...]:"},{"line_number":2852,"context_line":"        if self is CONF:"},{"line_number":2853,"context_line":"            return (_get_conf_singleton, ())"},{"line_number":2854,"context_line":"        return super().__reduce__()"},{"line_number":2855,"context_line":""},{"line_number":2856,"context_line":"    def reset(self) -\u003e None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"cf8461ed_79db1438","line":2853,"in_reply_to":"d3ffa4ef_9c536b48","updated":"2026-03-27 12:43:05.000000000","message":"Yeah, so, this will unpickle to None.\nhttps://github.com/openstack/oslo.config/blob/master/oslo_config/cfg.py#L2453","commit_id":"4a5057150bc18fc10cdd4ed0b72061ca4811d2ff"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ed13f821aa7510a0cfe020658cd8bb292945d8df","unresolved":false,"context_lines":[{"line_number":2885,"context_line":"        \u0027_sources\u0027,"},{"line_number":2886,"context_line":"        \u0027_ConfigOpts__cache\u0027,"},{"line_number":2887,"context_line":"        \u0027_ConfigOpts__drivers_cache\u0027,"},{"line_number":2888,"context_line":"    )"},{"line_number":2889,"context_line":""},{"line_number":2890,"context_line":"    def __getstate__(self) -\u003e dict[str, Any]:"},{"line_number":2891,"context_line":"        \"\"\"Return the serializable state: registered options and groups,"}],"source_content_type":"text/x-python","patch_set":5,"id":"06d16ac1_1241e81c","line":2888,"updated":"2026-07-02 07:36:48.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"4d142e760b3cd19e96c4d3741735886a018e424c"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ed13f821aa7510a0cfe020658cd8bb292945d8df","unresolved":false,"context_lines":[{"line_number":2886,"context_line":"        \u0027_ConfigOpts__cache\u0027,"},{"line_number":2887,"context_line":"        \u0027_ConfigOpts__drivers_cache\u0027,"},{"line_number":2888,"context_line":"    )"},{"line_number":2889,"context_line":""},{"line_number":2890,"context_line":"    def __getstate__(self) -\u003e dict[str, Any]:"},{"line_number":2891,"context_line":"        \"\"\"Return the serializable state: registered options and groups,"},{"line_number":2892,"context_line":"        parsed values, defaults and overrides; restoring never re-parses"}],"source_content_type":"text/x-python","patch_set":5,"id":"96da80b9_b157c5d0","line":2889,"updated":"2026-07-02 07:36:48.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"4d142e760b3cd19e96c4d3741735886a018e424c"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ed13f821aa7510a0cfe020658cd8bb292945d8df","unresolved":false,"context_lines":[{"line_number":2887,"context_line":"        \u0027_ConfigOpts__drivers_cache\u0027,"},{"line_number":2888,"context_line":"    )"},{"line_number":2889,"context_line":""},{"line_number":2890,"context_line":"    def __getstate__(self) -\u003e dict[str, Any]:"},{"line_number":2891,"context_line":"        \"\"\"Return the serializable state: registered options and groups,"},{"line_number":2892,"context_line":"        parsed values, defaults and overrides; restoring never re-parses"},{"line_number":2893,"context_line":"        or re-reads files."}],"source_content_type":"text/x-python","patch_set":5,"id":"9bcbf97b_758baded","line":2890,"updated":"2026-07-02 07:36:48.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"4d142e760b3cd19e96c4d3741735886a018e424c"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ed13f821aa7510a0cfe020658cd8bb292945d8df","unresolved":false,"context_lines":[{"line_number":2888,"context_line":"    )"},{"line_number":2889,"context_line":""},{"line_number":2890,"context_line":"    def __getstate__(self) -\u003e dict[str, Any]:"},{"line_number":2891,"context_line":"        \"\"\"Return the serializable state: registered options and groups,"},{"line_number":2892,"context_line":"        parsed values, defaults and overrides; restoring never re-parses"},{"line_number":2893,"context_line":"        or re-reads files."},{"line_number":2894,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"0e8a4293_9eabef7c","line":2891,"updated":"2026-07-02 07:36:48.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"4d142e760b3cd19e96c4d3741735886a018e424c"}],"oslo_config/tests/test_cfg.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"658ce123b158ba82b96056bee759595d2a5da051","unresolved":true,"context_lines":[{"line_number":5793,"context_line":""},{"line_number":5794,"context_line":"    def test_pickle_conf_singleton(self):"},{"line_number":5795,"context_line":"        \"\"\"The module-level CONF singleton round-trips through pickle.\"\"\""},{"line_number":5796,"context_line":"        import pickle"},{"line_number":5797,"context_line":""},{"line_number":5798,"context_line":"        data \u003d pickle.dumps(cfg.CONF)"},{"line_number":5799,"context_line":"        restored \u003d pickle.loads(data)"}],"source_content_type":"text/x-python","patch_set":2,"id":"b9b818cc_055d37a3","line":5796,"range":{"start_line":5796,"start_character":0,"end_line":5796,"end_character":21},"updated":"2026-03-27 01:25:47.000000000","message":"can you import these at the start?","commit_id":"4a5057150bc18fc10cdd4ed0b72061ca4811d2ff"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"91427b9f5aeca9bebb0f2d04087a12f6de763162","unresolved":false,"context_lines":[{"line_number":5793,"context_line":""},{"line_number":5794,"context_line":"    def test_pickle_conf_singleton(self):"},{"line_number":5795,"context_line":"        \"\"\"The module-level CONF singleton round-trips through pickle.\"\"\""},{"line_number":5796,"context_line":"        import pickle"},{"line_number":5797,"context_line":""},{"line_number":5798,"context_line":"        data \u003d pickle.dumps(cfg.CONF)"},{"line_number":5799,"context_line":"        restored \u003d pickle.loads(data)"}],"source_content_type":"text/x-python","patch_set":2,"id":"f15e5b3e_cb257f91","line":5796,"range":{"start_line":5796,"start_character":0,"end_line":5796,"end_character":21},"in_reply_to":"b9b818cc_055d37a3","updated":"2026-03-27 12:43:05.000000000","message":"Acknowledged","commit_id":"4a5057150bc18fc10cdd4ed0b72061ca4811d2ff"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"658ce123b158ba82b96056bee759595d2a5da051","unresolved":true,"context_lines":[{"line_number":5801,"context_line":""},{"line_number":5802,"context_line":"    def test_copy_conf_singleton(self):"},{"line_number":5803,"context_line":"        \"\"\"copy.copy on CONF returns the singleton.\"\"\""},{"line_number":5804,"context_line":"        import copy"},{"line_number":5805,"context_line":""},{"line_number":5806,"context_line":"        copied \u003d copy.copy(cfg.CONF)"},{"line_number":5807,"context_line":"        self.assertIs(copied, cfg.CONF)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3c6e8d68_4368004b","line":5804,"range":{"start_line":5804,"start_character":0,"end_line":5804,"end_character":19},"updated":"2026-03-27 01:25:47.000000000","message":"ditto","commit_id":"4a5057150bc18fc10cdd4ed0b72061ca4811d2ff"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"91427b9f5aeca9bebb0f2d04087a12f6de763162","unresolved":false,"context_lines":[{"line_number":5801,"context_line":""},{"line_number":5802,"context_line":"    def test_copy_conf_singleton(self):"},{"line_number":5803,"context_line":"        \"\"\"copy.copy on CONF returns the singleton.\"\"\""},{"line_number":5804,"context_line":"        import copy"},{"line_number":5805,"context_line":""},{"line_number":5806,"context_line":"        copied \u003d copy.copy(cfg.CONF)"},{"line_number":5807,"context_line":"        self.assertIs(copied, cfg.CONF)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7d9571f2_6bfc2ccf","line":5804,"range":{"start_line":5804,"start_character":0,"end_line":5804,"end_character":19},"in_reply_to":"3c6e8d68_4368004b","updated":"2026-03-27 12:43:05.000000000","message":"Acknowledged","commit_id":"4a5057150bc18fc10cdd4ed0b72061ca4811d2ff"}]}
