This is problematic as we end up with many keystone calls.
Issue is with the limits.get() call in cinderclient not taking the tenant.id.
A workaround that worked for the novaclient was to set the client.tenant_id variable after instantiating the client:
client = NovaClient('2', self.username, self.password, self.tenant, self.auth_url)
for tenant in tenant_list:
# FIX: nasty but works for now (tenant.id not being taken below :()
client.tenant_id = tenant.id
Might work here too.