)]}'
{"id":"openstack%2Fopenstacksdk~989516","triplet_id":"openstack%2Fopenstacksdk~master~I997144be1039588ff18082ac1bcc02bc09424a89","project":"openstack/openstacksdk","branch":"master","topic":"trivial","hashtags":[],"change_id":"I997144be1039588ff18082ac1bcc02bc09424a89","subject":"tests: Fix intermittent JSONDecodeError in unit test setUp","status":"MERGED","created":"2026-05-21 11:56:31.000000000","updated":"2026-05-21 14:51:48.000000000","submitted":"2026-05-21 14:48:34.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":0,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"989516-trivial","meta_rev_id":"f19ba22db2bbc32f08dd873930ef17286477bbc4","_number":989516,"virtual_id_number":989516,"owner":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"value":0,"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},{"tag":"autogenerated:zuul:gate","value":2,"date":"2026-05-21 14:48:33.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","default_value":0,"optional":true},"Code-Review":{"approved":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"all":[{"value":2,"date":"2026-05-21 12:16:35.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","default_value":0,"optional":true},"Workflow":{"approved":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"all":[{"value":1,"date":"2026-05-21 12:16:35.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true},"Allow-Post-Review":{"all":[{"value":0,"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{" 0":"Abstain","+1":"Approved for Zuul Post Review Pipeline"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-05-21 13:32:52.000000000","updated_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"reviewer":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"state":"REVIEWER"}],"messages":[{"id":"94c48dc84c52e0a6a626c81431761ac5613a9480","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"date":"2026-05-21 11:56:31.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"f38e6329a06f8b45502de1b9d28ebd70ead1c2db","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"date":"2026-05-21 12:16:15.000000000","message":"Patch Set 2: Published edit on patch set 1.","accounts_in_message":[],"_revision_number":2},{"id":"8bb238af6c9095451b77b54294b7b660884769fc","author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"date":"2026-05-21 12:16:35.000000000","message":"Patch Set 2: Code-Review+2 Workflow+1","accounts_in_message":[],"_revision_number":2},{"id":"e27d3d3a3e41ca9927f2266742cc930dd5f2c369","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-05-21 13:32:52.000000000","message":"Patch Set 2: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/d90cb85786ae4d4eb1f2c9862329499c\n\n- bifrost-integration-openstacksdk-src https://zuul.opendev.org/t/openstack/build/9ac74f32ea434f1f8b1a6bbbcffb4264 : FAILURE in 5m 29s (non-voting)\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/bf7bc81d58594db8a6f47287516cf7c1 : SUCCESS in 3m 11s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/59675c0c176d480dac92488c5e4abada : SUCCESS in 2m 44s\n- openstack-tox-py312 https://zuul.opendev.org/t/openstack/build/b94ba84975a842fcb7dc0e717a6dbb42 : SUCCESS in 4m 07s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/5c01b240adf743e3b41c92bcacee44c1 : SUCCESS in 4m 04s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/ef7e254616934eedac1ea0fa56eb29e3 : SUCCESS in 3m 43s (non-voting)\n- openstacksdk-functional-devstack-tips https://zuul.opendev.org/t/openstack/build/f677669ab16a4f609f318e1ca9774adf : SUCCESS in 57m 54s\n- os-client-config-tox-py311-tips https://zuul.opendev.org/t/openstack/build/4162bb947ad24a97b309c789d0fa68d3 : SUCCESS in 5m 01s\n- osc-tox-py311-tips https://zuul.opendev.org/t/openstack/build/6ab2350f86734c17821fe5649129a1d9 : SUCCESS in 4m 18s\n- osc-tox-py314-tips https://zuul.opendev.org/t/openstack/build/7f36d6a93a42402a98ee09729d105b3f : SUCCESS in 4m 09s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/cff52f8c3e9245e1bcc72df29288c41f : SUCCESS in 11m 28s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/b8add13539e54df7b3c7400169841426 : SUCCESS in 4m 19s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/024e822a3cdf4fd083802b35fbcbf5e6 : SUCCESS in 56m 41s\n- openstacksdk-functional-devstack-networking https://zuul.opendev.org/t/openstack/build/5c3b03bca3234b74af098db5993e538d : SUCCESS in 59m 21s\n- openstacksdk-functional-devstack-networking-ext https://zuul.opendev.org/t/openstack/build/b0fb23d8ff2e4f9489442833d9dd087d : FAILURE in 58m 49s (non-voting)\n- openstacksdk-functional-devstack-magnum https://zuul.opendev.org/t/openstack/build/6c994dc2b22f4db5a2ac40dbaba6799b : FAILURE in 31m 11s (non-voting)\n- openstacksdk-functional-devstack-manila https://zuul.opendev.org/t/openstack/build/e5ee59b5fa464ff28a5563e7a572071e : SUCCESS in 18m 22s\n- openstacksdk-functional-devstack-compute-manila https://zuul.opendev.org/t/openstack/build/000d372d2a6c486c942674f24478f685 : SUCCESS in 13m 01s\n- openstacksdk-functional-devstack-masakari https://zuul.opendev.org/t/openstack/build/44d29fdd0f6a403db69717772a16af24 : SUCCESS in 12m 31s\n- openstacksdk-functional-devstack-ironic https://zuul.opendev.org/t/openstack/build/7aefc46c0fe74bd086d675c2af0c126b : SUCCESS in 44m 00s\n- osc-functional-devstack-tips https://zuul.opendev.org/t/openstack/build/1a1d54bf5f034c899ad262bc4f115786 : SUCCESS in 1h 10m 56s (non-voting)\n- ansible-collections-openstack-functional-devstack https://zuul.opendev.org/t/openstack/build/450d3af5cd724edbb799735905c1d219 : SUCCESS in 1h 02m 18s (non-voting)","accounts_in_message":[],"_revision_number":2},{"id":"d957b450209cc6b39e63249d21584a68a43ca0e0","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-05-21 13:33:44.000000000","message":"Patch Set 2: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":2},{"id":"2916d837e036c4574853d028f2e0ae27dfcb620b","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-05-21 14:48:33.000000000","message":"Patch Set 2: Verified+2\n\nBuild succeeded (gate pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/4c353f3af1804fc3b47a30ca409313f6\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/d6c47bde35364b9f962698f42251f4da : SUCCESS in 4m 21s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/746b4689273b488891fe4c6548cf8454 : SUCCESS in 4m 46s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/42f1292dd39c45dcbae89ce63e23b44c : SUCCESS in 4m 25s\n- openstacksdk-functional-devstack-tips https://zuul.opendev.org/t/openstack/build/20e99d9b867f47e78fe84de5e153c41b : SUCCESS in 50m 18s\n- os-client-config-tox-py311-tips https://zuul.opendev.org/t/openstack/build/784c2ab09bd047d794e3b29beb1f8eaa : SUCCESS in 4m 19s\n- osc-tox-py311-tips https://zuul.opendev.org/t/openstack/build/84c567fc07a941edba3325d110e76c4d : SUCCESS in 4m 35s\n- osc-tox-py314-tips https://zuul.opendev.org/t/openstack/build/37cb9628be5340d9bc759cb80bfddeb0 : SUCCESS in 8m 12s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/25c8aa650f59452f9b42c1dde11bc9be : SUCCESS in 12m 42s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/ea1be09c3da540e89a845c2ff22c64ae : SUCCESS in 4m 33s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/492f99aae8044bc0b7acb8bc02a46d1d : SUCCESS in 1h 06m 19s\n- openstacksdk-functional-devstack-networking https://zuul.opendev.org/t/openstack/build/e2a829015842410097cb4cc1d3c7f841 : SUCCESS in 1h 00m 02s\n- openstacksdk-functional-devstack-ironic https://zuul.opendev.org/t/openstack/build/c3ecf185990c487f8dace557c44edcf4 : SUCCESS in 20m 08s","accounts_in_message":[],"_revision_number":2},{"id":"66dc9857bb185002d82991ea3039e85e02a7bd04","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-05-21 14:48:34.000000000","message":"Change has been successfully merged","accounts_in_message":[],"_revision_number":2},{"id":"f19ba22db2bbc32f08dd873930ef17286477bbc4","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-05-21 14:51:48.000000000","message":"Patch Set 2:\n\nBuild succeeded (promote pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/20255c8a9c9c43368d143c1b6ac28a06\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/d73341d2707340909d157fc991f18681 : SUCCESS in 56s","accounts_in_message":[],"_revision_number":2}],"current_revision_number":2,"current_revision":"1c112d89f9d32c02e6480e3139aed8f5dda3c644","revisions":{"782eb79bdfe2c8f684e8f2f61c1b7c95e3bf1a20":{"kind":"REWORK","_number":1,"created":"2026-05-21 11:56:31.000000000","uploader":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"ref":"refs/changes/16/989516/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/openstacksdk","ref":"refs/changes/16/989516/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/openstacksdk refs/changes/16/989516/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/openstacksdk refs/changes/16/989516/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/openstacksdk refs/changes/16/989516/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/openstacksdk refs/changes/16/989516/1"}}},"commit":{"parents":[{"commit":"df8108a0975da9180fbfb6a02458d5d18471b034","subject":"trivial: Clean up docstrings in all Proxy.find_* methods","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/openstacksdk/commit/df8108a0975da9180fbfb6a02458d5d18471b034"}]}],"author":{"name":"Stephen Finucane","email":"stephenfin@redhat.com","date":"2026-05-21 11:55:20.000000000","tz":60},"committer":{"name":"Stephen Finucane","email":"stephenfin@redhat.com","date":"2026-05-21 11:55:53.000000000","tz":60},"subject":"tests: Fix intermittent JSONDecodeError in unit test setUp","message":"tests: Fix intermittent JSONDecodeError in unit test setUp\n\nThree bugs combined to cause an occasional test failure where\nOpenStackConfig.__init__ would crash with JSONDecodeError when loading\nan empty JSON file during test setUp:\n\n1. CONFIG_FILES/SECURE_FILES/VENDOR_FILES are module-level list constants.\n   OpenStackConfig.__init__ was assigning them by reference rather than\n   by copy, so the subsequent self._config_files.insert(0, override) call\n   permanently mutated the shared constant for all future callers in the\n   same process. Fix: wrap each assignment in list() to take a copy.\n\n2. _load_yaml_json_file only caught OSError(EACCES), allowing\n   json.JSONDecodeError (a ValueError subclass) and yaml.YAMLError to\n   propagate uncaught. An empty or malformed config file would therefore\n   crash OpenStackConfig.__init__ instead of being skipped. Fix: catch\n   (ValueError, yaml.YAMLError), log a warning, and continue.\n\n3. The general test TestCase base isolated OS_CLOUD but not\n   OS_CLIENT_CONFIG_FILE or OS_CLIENT_SECURE_FILE. The loader\n   unconditionally prepends those env vars to the file list even when\n   explicit config_files/secure_files are passed, so a value set in the\n   CI runner environment could override the test\u0027s own temp files. Fix:\n   add EnvironmentVariable fixtures for both vars in setUp.\n\nChange-Id: I997144be1039588ff18082ac1bcc02bc09424a89\nCo-Authored-By: Claude Sonnet 4.6 \u003cnoreply@anthropic.com\u003e\nSigned-off-by: Stephen Finucane \u003cstephenfin@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/openstacksdk/commit/782eb79bdfe2c8f684e8f2f61c1b7c95e3bf1a20"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/openstacksdk/commit/782eb79bdfe2c8f684e8f2f61c1b7c95e3bf1a20"}]},"branch":"refs/heads/master"},"1c112d89f9d32c02e6480e3139aed8f5dda3c644":{"kind":"REWORK","_number":2,"created":"2026-05-21 12:16:15.000000000","uploader":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"ref":"refs/changes/16/989516/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/openstacksdk","ref":"refs/changes/16/989516/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/openstacksdk refs/changes/16/989516/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/openstacksdk refs/changes/16/989516/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/openstacksdk refs/changes/16/989516/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/openstacksdk refs/changes/16/989516/2"}}},"commit":{"parents":[{"commit":"df8108a0975da9180fbfb6a02458d5d18471b034","subject":"trivial: Clean up docstrings in all Proxy.find_* methods","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/openstacksdk/commit/df8108a0975da9180fbfb6a02458d5d18471b034"}]}],"author":{"name":"Stephen Finucane","email":"stephenfin@redhat.com","date":"2026-05-21 11:55:20.000000000","tz":60},"committer":{"name":"Stephen Finucane","email":"stephenfin@redhat.com","date":"2026-05-21 12:16:15.000000000","tz":0},"subject":"tests: Fix intermittent JSONDecodeError in unit test setUp","message":"tests: Fix intermittent JSONDecodeError in unit test setUp\n\nThree bugs combined to cause an occasional test failure where\nOpenStackConfig.__init__ would crash with JSONDecodeError when loading\nan empty JSON file during test setUp:\n\n1. CONFIG_FILES/SECURE_FILES/VENDOR_FILES are module-level list constants.\n   OpenStackConfig.__init__ was assigning them by reference rather than\n   by copy, so the subsequent self._config_files.insert(0, override) call\n   permanently mutated the shared constant for all future callers in the\n   same process. Fix: wrap each assignment in list() to take a copy.\n\n2. _load_yaml_json_file only caught OSError(EACCES), allowing\n   json.JSONDecodeError (a ValueError subclass) and yaml.YAMLError to\n   propagate uncaught. An empty or malformed config file would therefore\n   crash OpenStackConfig.__init__ instead of being skipped. Fix: catch\n   (ValueError, yaml.YAMLError), log a warning, and continue.\n\n3. The general test TestCase base isolated OS_CLOUD but not\n   OS_CLIENT_CONFIG_FILE or OS_CLIENT_SECURE_FILE. The loader\n   unconditionally prepends those env vars to the file list even when\n   explicit config_files/secure_files are passed, so a value set in the\n   CI runner environment could override the test\u0027s own temp files. Fix:\n   add EnvironmentVariable fixtures for both vars in setUp.\n\nChange-Id: I997144be1039588ff18082ac1bcc02bc09424a89\nCo-Authored-By: Claude Sonnet 4.6 \u003cnoreply@anthropic.com\u003e\nSigned-off-by: Stephen Finucane \u003cstephenfin@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/openstacksdk/commit/1c112d89f9d32c02e6480e3139aed8f5dda3c644"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/openstacksdk/commit/1c112d89f9d32c02e6480e3139aed8f5dda3c644"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"CLOSED","labels":[{"label":"Verified","status":"MAY","applied_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"MAY","applied_by":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"}},{"label":"Workflow","status":"MAY","applied_by":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"}},{"label":"Allow-Post-Review","status":"MAY"}]}],"submit_requirements":[{"name":"Verified","description":"Verified in gate by CI","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Verified\u003dMAX"],"failing_atoms":["label:Verified\u003dMIN"],"atom_explanations":{"label:Verified\u003dMAX":"","label:Verified\u003dMIN":""}}},{"name":"Allow-Post-Review","description":"Allow Post Review","status":"NOT_APPLICABLE","is_legacy":false,"applicability_expression_result":{"fulfilled":false,"status":"FAIL"},"submittability_expression_result":{"expression":"is:true","fulfilled":true,"status":"NOT_EVALUATED","passing_atoms":[],"failing_atoms":[],"atom_explanations":{}}},{"name":"Code-Review","description":"Code reviewed by core reviewer","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Code-Review\u003dMAX"],"failing_atoms":["label:Code-Review\u003dMIN"],"atom_explanations":{"label:Code-Review\u003dMAX":"","label:Code-Review\u003dMIN":""}}},{"name":"Workflow","description":"Approved for gate by core reviewer","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Workflow\u003dMAX AND -label:Workflow\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Workflow\u003dMAX"],"failing_atoms":["label:Workflow\u003dMIN"],"atom_explanations":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
