Skip to content

Unable to get correct Endpoint for cinder using NewBlockStorageV3 #3651

@modzilla99

Description

@modzilla99

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)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions