What happened?
I am unable to create a correct BlockStorageV3 service client. It will always return the URL for the BlockStorageV2 Endpoint.
The problem, is that in the catalog of our cloud the cinderv2 Endpoint is set before cinderv3, resulting in the parsing logic of the EndpointLocator to take the first entry.
~ : openstack catalog list | select Name Type
╭────┬───────────┬─────────────────╮
│ # │ Name │ Type │
├────┼───────────┼─────────────────┤
│ 0 │ gnocchi1 │ metric │
│ 1 │ keystone │ identity │
│ 2 │ octavia │ load-balancer │
│ 3 │ cinderv2 │ volumev2 │
│ 4 │ cinderv3 │ volumev3 │
│ 5 │ magnum │ container-infra │
│ 6 │ gnocchi2 │ metric │
│ 7 │ designate │ dns │
│ 8 │ nova │ compute │
│ 9 │ heat │ orchestration │
│ 10 │ glance │ image │
│ 11 │ barbican │ key-manager │
│ 12 │ midonet │ midonet │
│ 13 │ swift │ object-store │
│ 14 │ placement │ placement │
│ 15 │ neutron │ network │
│ 16 │ heat-cfn │ cloudformation │
╰────┴───────────┴─────────────────╯
Since the ServiceTypeAliases map does not differentiate between volumev2 and volumev3 it will just grab the first one, which in our case is cinderv2.
I am aware that I can set the name of the Endpoint using the EndpointOpts, but to me this seems highly brittle as I can't be sure whether that is always cinderv3 on all other clouds.
Version
v2 (current)
What happened?
I am unable to create a correct
BlockStorageV3service client. It will always return the URL for theBlockStorageV2Endpoint.The problem, is that in the catalog of our cloud the
cinderv2Endpoint is set beforecinderv3, resulting in the parsing logic of the EndpointLocator to take the first entry.Since the ServiceTypeAliases map does not differentiate between volumev2 and volumev3 it will just grab the first one, which in our case is cinderv2.
I am aware that I can set the name of the Endpoint using the EndpointOpts, but to me this seems highly brittle as I can't be sure whether that is always
cinderv3on all other clouds.Version
v2 (current)