)]}'
{"id":"openstack%2Fopenstacksdk~997117","triplet_id":"openstack%2Fopenstacksdk~master~If0d4c54ada121fb034f725d6af8fda288ebd4835","project":"openstack/openstacksdk","branch":"master","topic":"lp-2160562","hashtags":[],"change_id":"If0d4c54ada121fb034f725d6af8fda288ebd4835","subject":"Defer missing-catalog errors until proxy use.","status":"NEW","created":"2026-07-13 20:29:32.000000000","updated":"2026-07-13 21:35:44.000000000","submit_type":"MERGE_IF_NECESSARY","mergeable":true,"submittable":false,"total_comment_count":0,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"a72ae3b5fdc37c8207b3ea644dab0cd08f32d51f","_number":997117,"virtual_id_number":997117,"owner":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"actions":{},"labels":{"Verified":{"recommended":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"tag":"autogenerated:zuul:check","value":1,"date":"2026-07-13 21:35:44.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":"","value":1,"default_value":0,"optional":true},"Code-Review":{"all":[{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_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":{"all":[{"_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":[{"_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":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-07-13 21:35:44.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":"03af9871d5da24b7fd93ee6d97cdae8e1a304019","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"date":"2026-07-13 20:29:32.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"a72ae3b5fdc37c8207b3ea644dab0cd08f32d51f","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-13 21:35:44.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/cd241321b6af48a694e8d2687c14e5ff\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/73bec64e811749ffb8dcad301f9a2aa8 : SUCCESS in 3m 13s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/da28ba554d9841a5a27f589624342250 : SUCCESS in 3m 21s\n- openstack-tox-py312 https://zuul.opendev.org/t/openstack/build/cdc1ae7759d149caa25c805983824739 : SUCCESS in 3m 58s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/bebeee48dab649f0a9105ed8ffcebbe6 : SUCCESS in 3m 39s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/2915247b4fe44f308e527f3eba6d6b61 : SUCCESS in 6m 38s\n- openstack-tox-py315 https://zuul.opendev.org/t/openstack/build/faf16cc861ca4bc5abd7a6cf1ced739b : SUCCESS in 7m 40s (non-voting)\n- openstacksdk-functional-devstack-tips https://zuul.opendev.org/t/openstack/build/f0d0a59e40f44c13879fc1b9d2b9a468 : SUCCESS in 32m 54s\n- os-client-config-tox-py311-tips https://zuul.opendev.org/t/openstack/build/3b16b28b5b4f4e3aa9bf4e5acb2a66ff : SUCCESS in 3m 19s\n- osc-tox-py311-tips https://zuul.opendev.org/t/openstack/build/29e6c300e2de4cd8b68610d2deed0f80 : SUCCESS in 4m 10s\n- osc-tox-py314-tips https://zuul.opendev.org/t/openstack/build/667c3946c523404da9f9f9350a01fed3 : SUCCESS in 5m 16s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/59a2c5d1dcbe4943a7972601bee560de : SUCCESS in 6m 09s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/73b838109c644d2685c9e335af94417c : SUCCESS in 2m 41s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/b2d82ce598bb49b883ab52d8da56b810 : SUCCESS in 27m 44s\n- openstacksdk-functional-devstack-networking https://zuul.opendev.org/t/openstack/build/ef54d49e08d8450fbcc380755d427ab2 : SUCCESS in 1h 03m 57s\n- openstacksdk-functional-devstack-networking-ext https://zuul.opendev.org/t/openstack/build/1f48b12d1c5d4acdb149c22b3e5794bf : FAILURE in 57m 12s (non-voting)\n- openstacksdk-functional-devstack-magnum https://zuul.opendev.org/t/openstack/build/9e59850c7c3d40bc99a5f57f974a2831 : FAILURE in 54m 48s (non-voting)\n- openstacksdk-functional-devstack-manila https://zuul.opendev.org/t/openstack/build/f7ce901b8d984bd5a83fca1e1d1dfa40 : SUCCESS in 25m 37s\n- openstacksdk-functional-devstack-compute-manila https://zuul.opendev.org/t/openstack/build/59ffddbcf3c6471d889e0445f1d39ed0 : SUCCESS in 16m 34s\n- openstacksdk-functional-devstack-masakari https://zuul.opendev.org/t/openstack/build/dce4261994e245f58fb7ae9438d47643 : SUCCESS in 12m 42s\n- openstacksdk-functional-devstack-ironic https://zuul.opendev.org/t/openstack/build/8ea78b96f72a44c7aa97a527ef797541 : SUCCESS in 25m 57s\n- osc-functional-devstack-tips https://zuul.opendev.org/t/openstack/build/98989f2a7ed8484f84c61166938d8e03 : SUCCESS in 39m 11s (non-voting)\n- ansible-collections-openstack-functional-devstack https://zuul.opendev.org/t/openstack/build/9152da6d524e4896b21e18f4f5549f87 : SUCCESS in 33m 38s (non-voting)","accounts_in_message":[],"_revision_number":1}],"current_revision_number":1,"current_revision":"27fc1d824f7a66594f7827ff2b139bc87e78e4ec","revisions":{"27fc1d824f7a66594f7827ff2b139bc87e78e4ec":{"kind":"REWORK","_number":1,"created":"2026-07-13 20:29:32.000000000","uploader":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"ref":"refs/changes/17/997117/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/openstacksdk","ref":"refs/changes/17/997117/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/openstacksdk refs/changes/17/997117/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/openstacksdk refs/changes/17/997117/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/openstacksdk refs/changes/17/997117/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/openstacksdk refs/changes/17/997117/1"}}},"commit":{"parents":[{"commit":"8d9426395c172b35ef4ed1a8cbaa525c17944c6b","subject":"Merge \"share: Add missing query-string parameters\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/openstacksdk/commit/8d9426395c172b35ef4ed1a8cbaa525c17944c6b"}]}],"author":{"name":"Michael Still","email":"mikal@stillhq.com","date":"2026-07-13 20:16:43.000000000","tz":600},"committer":{"name":"Michael Still","email":"mikal@stillhq.com","date":"2026-07-13 20:29:29.000000000","tz":600},"subject":"Defer missing-catalog errors until proxy use.","message":"Defer missing-catalog errors until proxy use.\n\nAccessing a service proxy attribute on a Connection (for example\nconn.block_storage) performed endpoint discovery eagerly and raised\nkeystoneauth1\u0027s EndpointNotFound at attribute-access time when the\nservice is enabled in configuration but not present in the cloud\u0027s\nservice catalog. That punishes callers that fetch proxies for\nservices they never end up using: python-openstackclient 10.2.0\nreturns conn.block_storage from its volume client plugin and\n\"openstack server create\" touches that client unconditionally, so\nevery server create on a cloud without cinder now fails despite\nnever needing the volume API.\n\nCatch EndpointNotFound during proxy construction in\nServiceDescription.__get__ and hand back the existing\n_ServiceDisabledProxyShim instead, so the error surfaces as a clear\nServiceDisabledException if and when the proxy is actually used.\nThis mirrors how services disabled in configuration already degrade,\nand the cleanup path in openstackcloud.py already tolerates exactly\nthis shim (\"Cloud may include endpoint in catalog but not implement\nthe service\").\n\nConnections created with strict_proxies\u003dTrue retain the previous\nfail-fast behaviour; the existing test asserting the raise\n(TestFromConf.test_no_endpoint) runs under strict_proxies and is\nunchanged. New tests cover both construction paths: versioned SDK\nproxies, which fail version discovery inside _make_proxy(), and\npassthrough services without proxy classes, which fail in\nProxy.get_endpoint() immediately afterwards.\n\nCloses-Bug: #2160562\nChange-Id: If0d4c54ada121fb034f725d6af8fda288ebd4835\nSigned-off-by: Michael Still \u003cmikal@stillhq.com\u003e\nAssisted-By: Claude Fable 5 (200K context, high effort) \u003cnoreply@anthropic.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/openstacksdk/commit/27fc1d824f7a66594f7827ff2b139bc87e78e4ec"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/openstacksdk/commit/27fc1d824f7a66594f7827ff2b139bc87e78e4ec"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"OK","labels":[{"label":"Verified","status":"MAY","applied_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"MAY"},{"label":"Workflow","status":"MAY"},{"label":"Allow-Post-Review","status":"MAY"}]}],"submit_requirements":[{"name":"Verified","description":"Verified in gate by CI","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Verified\u003dMAX","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":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Code-Review\u003dMAX","label:Code-Review\u003dMIN"],"atom_explanations":{"label:Code-Review\u003dMAX":"","label:Code-Review\u003dMIN":""}}},{"name":"Workflow","description":"Approved for gate by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Workflow\u003dMAX AND -label:Workflow\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Workflow\u003dMAX","label:Workflow\u003dMIN"],"atom_explanations":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
