At this point the keystone variable can be used to get the catalog:
keystone.service_catalog.get_endpoints()
This works (for v3) as it is in the Barbican charm's keystone v3 code. It's also backwards compatible with the v2_0 client if v2.Password(...) is used.
Unless something has changed, and it may well have done, then this is in response to https:/ /bugs.launchpad .net/python- keystoneclient/ +bug/1547331 which is about v3 keystone client having the missing service_catalog?
If so, the get_access() method forces a pre-auth and if placed on the keystone client, will then get the service catalog:
e.g.
auth = keystoneclient. auth.identity. v3.Password( ...) session. Session( auth=auth) v3.client. Client( session= sess) auth_ref = auth.get_ access( sess)
sess = keystoneclient.
keystone = keystone.
keystone.
At this point the keystone variable can be used to get the catalog:
keystone. service_ catalog. get_endpoints( )
This works (for v3) as it is in the Barbican charm's keystone v3 code. It's also backwards compatible with the v2_0 client if v2.Password(...) is used.
See https:/ /github. com/openstack/ charm-barbican/ blob/master/ src/tests/ basic_deploymen t.py#L142 as an example?
However, if this isn't the use case, then sorry for the interruption!