<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Dec 19, 2016 at 11:54 AM, Monty Taylor <span dir="ltr"><<a href="mailto:mordred@inaugust.com" target="_blank">mordred@inaugust.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hey all,<br>
<br>
In the docs for listing containers:<br>
<br>
<a href="http://developer.openstack.org/api-ref/object-storage/?expanded=show-account-details-and-list-containers-detail" rel="noreferrer" target="_blank">http://developer.openstack.<wbr>org/api-ref/object-storage/?<wbr>expanded=show-account-details-<wbr>and-list-containers-detail</a><br>
<br>
it says that limit is optional. However, if you give it<br>
full_listing=True, swiftclient always sends at least a second query with<br>
a marker set to the name of the last element of the original return<br>
value. This leads me believe there is a default value for limit server<br>
side that swiftclient is trying to account for.<br>
<br>
Looking through capabilities, it seems there is:<br>
<br>
swift.account_listing_limit<br>
swift.container_listing_limit<br>
<br></blockquote><div><br></div><div>Yeah there is a server side limit, and as you surmise you can find it when you query the cluster for the information (swift capabilities or  curl -i http://<swift_endpoint>/info |python -m json.tool).</div><div><br></div><div>The swift client will look at capabilities and be smart about it.</div><div><br></div><div>We limit the size of the response to the server size limit. full_listing is swiftclient trying to be helpful and paginate for you.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
I'm guessing swift.account_listing_limit would apply to getting the list<br>
of containers, and container_listing_limit would apply to listing<br>
objects in a container, yeah?<br></blockquote><div><br></div><div>Exactly, yes.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
Relatedly, there is a X-Account-Container-Count header. Testing against<br>
rackspace public shows me that it contains the total count of containers<br>
even if I provide a limit parameter:<br>
<br>
>>> r=c.get('/?format=json&limit=<wbr>2')<br>
>>> r.headers['X-Account-<wbr>Container-Count']<br>
'4'<br>
<br>
Would that also be the case if I had hit the<br>
swift.account_listing_limit limit?</blockquote><div><br></div><div>Yup, the container-count (account metadata) and object-count (container metadata) are how many are in the account/container NOT in the response. As it's gathering the metadata information from the account/container. If you fire off a HEAD (or stat in swiftclient) you'll get the same counts. </div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> </blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
I ask because it seems like it would be ever-so-mildly more efficient to<br>
look at the returned count and the total count and only do the loop if<br>
there is a mismatch - but I'm curious if there is something I should<br>
account for I'm not seeing. (I'm working on making direct REST calls,<br>
but starting with swiftclient's behavior to make sure I'm doing things<br>
right)<br>
<br>
Also - the question about limit behavior when not given seems like it<br>
could be added to the docs - and I'd be happy to make that patch if I'm<br>
reading things right.<br></blockquote><div><br></div><div>Looking at the API docs briefly, this could be more clearly stated. Especially as the first paragraph in the Account GET mentions if you get 'limit' back then there are more objects, and the first paragraph of the Container GET mentions there being a default limit on the server side if the parameters are omitted:</div><div><a href="http://developer.openstack.org/api-ref/object-storage/?expanded=show-account-details-and-list-containers-detail,show-container-details-and-list-objects-detail">http://developer.openstack.org/api-ref/object-storage/?expanded=show-account-details-and-list-containers-detail,show-container-details-and-list-objects-detail</a><br></div><div><br></div><div>So yeah could definitely be cleaned up.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
Thanks!<br>
Monty<br>
<br></blockquote><div>No thank you :) </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
______________________________<wbr>______________________________<wbr>______________<br>
OpenStack Development Mailing List (not for usage questions)<br>
Unsubscribe: <a href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" rel="noreferrer" target="_blank">OpenStack-dev-request@lists.<wbr>openstack.org?subject:<wbr>unsubscribe</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" rel="noreferrer" target="_blank">http://lists.openstack.org/<wbr>cgi-bin/mailman/listinfo/<wbr>openstack-dev</a><br>
</blockquote></div><br></div><div class="gmail_extra"><br></div><div class="gmail_extra">I was talking to Richard from horizon while they've been building a new Swift UI, and for displaying many objects, they've mentioned liking someway of knowing if there are any more results, so they can continue to paginate as people scroll etc, our discussions have gone further then just knowing if there's more now. And so I plan on having a play with helping them paginate better on the Swift side for Horizon.</div><div class="gmail_extra"><br></div><div class="gmail_extra">At the moment, if you get limit results back (where limit is what you define or defaults to the server default) then there is a good chance there are more objects. Just keeping track of the total can be a little problematic as It's possible for that count to grow or shrink between requests. So if you hit limit, then there is probably more and do another request is easiest. </div><div class="gmail_extra"><br></div><div class="gmail_extra">Regards,</div><div class="gmail_extra">Matt</div></div>