← Back to team overview

openstack team mailing list archive

Re: Accessing object data and metadata in Swift middleware

 

There are examples in swift.common.middleware of doing this.  

If you want to try changing the metadata on the way out you can look at: 

https://github.com/openstack/swift/blob/master/swift/common/middleware/staticweb.py#L367-L384

it makes use of the WSGIContext class which allows you to make a call down the pipeline and respond to it on the way back out.

If you want to just kinda peek at the object before sending the request you can use make_pre_authed_request as done here for containers:

https://github.com/openstack/swift/blob/master/swift/common/middleware/staticweb.py#L198-L201

that function will take auth out of the environment so you want to be careful about using it. It you want to keep auth you can do something along the lines of:

https://github.com/openstack/swift/blob/master/swift/common/middleware/bulk.py#L250-L259

which just makes a sub request using a copy of the current environment. In your case, after you get that response you'd probably just want to let the request continue on the pipeline instead of just completely overriding it like the bulk middleware does.

David





On Apr 21, 2013, at 10:11 AM, Itamar O wrote:

> Hello list,
> I am new to OpenStack development, and trying to implement a simple Swift middleware.
> I was able to successfully manipulate a PUT request for an object, processing the data that was uploaded by the request and storing some information in the object metadata.
> But now I am struggling with handling GET requests for objects.
> I would like to access the data and metadata of the requested object before it is passed down the pipeline, but I have no clue how to achieve this.
> 
> In case this is not the appropriate mailing list for this question, I apologize, and would appreciate if someone could refer me to the correct list.
> Otherwise, any advice will be much appreciated!
> 
> Thanks,
> - Itamar.
> _______________________________________________
> Mailing list: https://launchpad.net/~openstack
> Post to     : openstack@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~openstack
> More help   : https://help.launchpad.net/ListHelp



References