[openstack-dev] [neutron] How to look up a project name from Neutron server code?

Jay Pipes jaypipes at gmail.com
Tue Jul 17 14:55:25 UTC 2018


On 07/17/2018 03:36 AM, Neil Jerram wrote:
> Can someone help me with how to look up a project name (aka tenant name) 
> for a known project/tenant ID, from code (specifically a mechanism 
> driver) running in the Neutron server?
> 
> I believe that means I need to make a GET REST call as here: 
> https://developer.openstack.org/api-ref/identity/v3/index.html#projects.  But 
> I don't yet understand how a piece of Neutron server code can ensure 
> that it has the right credentials to do that.  If someone happens to 
> have actual code for doing this, I'm sure that would be very helpful.
> 
> (I'm aware that whenever the Neutron server processes an API request, 
> the project name for the project that generated that request is added 
> into the request context.  That is great when my code is running in an 
> API request context.  But there are other times when the code isn't in a 
> request context and still needs to map from a project ID to project 
> name; hence the question here.)

Hi Neil,

You basically answered your own question above :) The neutron request 
context gets built from oslo.context's Context.from_environ() [1] which 
has this note in the implementation [2]:

# Load a new context object from the environment variables set by
# auth_token middleware. See:
# 
https://docs.openstack.org/keystonemiddleware/latest/api/keystonemiddleware.auth_token.html#what-auth-token-adds-to-the-request-for-use-by-the-openstack-service

So, basically, simply look at the HTTP headers for HTTP_X_PROJECT_NAME. 
If you don't have access to a HTTP headers, then you'll need to pass 
some context object/struct to the code you're referring to. Might as 
well pass the neutron RequestContext (derived from oslo_context.Context) 
to the code you're referring to and you get all this for free.

Best,
-jay

[1] 
https://github.com/openstack/oslo.context/blob/4abd5377e4d847102a4e87a528d689e31cc1713c/oslo_context/context.py#L424

[2] 
https://github.com/openstack/oslo.context/blob/4abd5377e4d847102a4e87a528d689e31cc1713c/oslo_context/context.py#L433-L435



More information about the OpenStack-dev mailing list