Add limit and marker to user_list and tenant_list
* This will ultimately enable seeing more than 10 users/tenants at a time in horizon :) Change-Id: I54ab6305746a16fda8e57c9c67c48ea2d6b906c6
This commit is contained in:
parent
8db366c448
commit
d29168fa3f
@ -14,6 +14,8 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import urllib
|
||||
|
||||
from keystoneclient import base
|
||||
|
||||
|
||||
@ -48,12 +50,23 @@ class TenantManager(base.ManagerWithFind):
|
||||
|
||||
return self._create('/tenants', params, "tenant")
|
||||
|
||||
def list(self):
|
||||
def list(self, limit=None, marker=None):
|
||||
"""
|
||||
Get a list of tenants.
|
||||
:rtype: list of :class:`Tenant`
|
||||
"""
|
||||
return self._list("/tenants", "tenants")
|
||||
|
||||
params = {}
|
||||
if limit:
|
||||
params['limit'] = limit
|
||||
if marker:
|
||||
params['marker'] = marker
|
||||
|
||||
query = ""
|
||||
if params:
|
||||
query = "?" + urllib.urlencode(params)
|
||||
|
||||
return self._list("/tenants%s" % query, "tenants")
|
||||
|
||||
def update(self, tenant_id, tenant_name=None, description=None,
|
||||
enabled=None):
|
||||
|
@ -14,6 +14,8 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import urllib
|
||||
|
||||
from keystoneclient import base
|
||||
|
||||
|
||||
@ -90,14 +92,25 @@ class UserManager(base.ManagerWithFind):
|
||||
"""
|
||||
return self._delete("/users/%s" % base.getid(user))
|
||||
|
||||
def list(self, tenant_id=None):
|
||||
def list(self, tenant_id=None, limit=None, marker=None):
|
||||
"""
|
||||
Get a list of users (optionally limited to a tenant)
|
||||
|
||||
:rtype: list of :class:`User`
|
||||
"""
|
||||
|
||||
params = {}
|
||||
if limit:
|
||||
params['limit'] = int(limit)
|
||||
if marker:
|
||||
params['marker'] = int(marker)
|
||||
|
||||
query = ""
|
||||
if params:
|
||||
query = "?" + urllib.urlencode(params)
|
||||
|
||||
if not tenant_id:
|
||||
return self._list("/users", "users")
|
||||
return self._list("/users%s" % query, "users")
|
||||
else:
|
||||
return self._list("/tenants/%s/users" % tenant_id, "users")
|
||||
return self._list("/tenants/%s/users%s" % (tenant_id, query),
|
||||
"users")
|
||||
|
@ -116,6 +116,54 @@ class TenantTests(utils.TestCase):
|
||||
tenant_list = self.client.tenants.list()
|
||||
[self.assertTrue(isinstance(t, tenants.Tenant)) for t in tenant_list]
|
||||
|
||||
def test_list_limit(self):
|
||||
resp = httplib2.Response({
|
||||
"status": 200,
|
||||
"body": json.dumps(self.TEST_TENANTS),
|
||||
})
|
||||
|
||||
httplib2.Http.request(urlparse.urljoin(self.TEST_URL,
|
||||
'v2.0/tenants?limit=1&fresh=1234'),
|
||||
'GET',
|
||||
headers=self.TEST_REQUEST_HEADERS) \
|
||||
.AndReturn((resp, resp['body']))
|
||||
self.mox.ReplayAll()
|
||||
|
||||
tenant_list = self.client.tenants.list(limit=1)
|
||||
[self.assertTrue(isinstance(t, tenants.Tenant)) for t in tenant_list]
|
||||
|
||||
def test_list_marker(self):
|
||||
resp = httplib2.Response({
|
||||
"status": 200,
|
||||
"body": json.dumps(self.TEST_TENANTS),
|
||||
})
|
||||
|
||||
httplib2.Http.request(urlparse.urljoin(self.TEST_URL,
|
||||
'v2.0/tenants?marker=1&fresh=1234'),
|
||||
'GET',
|
||||
headers=self.TEST_REQUEST_HEADERS) \
|
||||
.AndReturn((resp, resp['body']))
|
||||
self.mox.ReplayAll()
|
||||
|
||||
tenant_list = self.client.tenants.list(marker=1)
|
||||
[self.assertTrue(isinstance(t, tenants.Tenant)) for t in tenant_list]
|
||||
|
||||
def test_list_limit_marker(self):
|
||||
resp = httplib2.Response({
|
||||
"status": 200,
|
||||
"body": json.dumps(self.TEST_TENANTS),
|
||||
})
|
||||
|
||||
httplib2.Http.request(urlparse.urljoin(self.TEST_URL,
|
||||
'v2.0/tenants?marker=1&limit=1&fresh=1234'),
|
||||
'GET',
|
||||
headers=self.TEST_REQUEST_HEADERS) \
|
||||
.AndReturn((resp, resp['body']))
|
||||
self.mox.ReplayAll()
|
||||
|
||||
tenant_list = self.client.tenants.list(limit=1, marker=1)
|
||||
[self.assertTrue(isinstance(t, tenants.Tenant)) for t in tenant_list]
|
||||
|
||||
def test_update(self):
|
||||
req_body = {"tenant": {"id": 4,
|
||||
"name": "tenantX",
|
||||
|
@ -114,6 +114,54 @@ class UserTests(utils.TestCase):
|
||||
user_list = self.client.users.list()
|
||||
[self.assertTrue(isinstance(u, users.User)) for u in user_list]
|
||||
|
||||
def test_list_limit(self):
|
||||
resp = httplib2.Response({
|
||||
"status": 200,
|
||||
"body": json.dumps(self.TEST_USERS),
|
||||
})
|
||||
|
||||
httplib2.Http.request(urlparse.urljoin(self.TEST_URL,
|
||||
'v2.0/users?limit=1&fresh=1234'),
|
||||
'GET',
|
||||
headers=self.TEST_REQUEST_HEADERS) \
|
||||
.AndReturn((resp, resp['body']))
|
||||
self.mox.ReplayAll()
|
||||
|
||||
user_list = self.client.users.list(limit=1)
|
||||
[self.assertTrue(isinstance(u, users.User)) for u in user_list]
|
||||
|
||||
def test_list_marker(self):
|
||||
resp = httplib2.Response({
|
||||
"status": 200,
|
||||
"body": json.dumps(self.TEST_USERS),
|
||||
})
|
||||
|
||||
httplib2.Http.request(urlparse.urljoin(self.TEST_URL,
|
||||
'v2.0/users?marker=1&fresh=1234'),
|
||||
'GET',
|
||||
headers=self.TEST_REQUEST_HEADERS) \
|
||||
.AndReturn((resp, resp['body']))
|
||||
self.mox.ReplayAll()
|
||||
|
||||
user_list = self.client.users.list(marker=1)
|
||||
[self.assertTrue(isinstance(u, users.User)) for u in user_list]
|
||||
|
||||
def test_list_limit_marker(self):
|
||||
resp = httplib2.Response({
|
||||
"status": 200,
|
||||
"body": json.dumps(self.TEST_USERS),
|
||||
})
|
||||
|
||||
httplib2.Http.request(urlparse.urljoin(self.TEST_URL,
|
||||
'v2.0/users?marker=1&limit=1&fresh=1234'),
|
||||
'GET',
|
||||
headers=self.TEST_REQUEST_HEADERS) \
|
||||
.AndReturn((resp, resp['body']))
|
||||
self.mox.ReplayAll()
|
||||
|
||||
user_list = self.client.users.list(limit=1, marker=1)
|
||||
[self.assertTrue(isinstance(u, users.User)) for u in user_list]
|
||||
|
||||
def test_update(self):
|
||||
req_1 = {"user": {"password": "swordfish", "id": 2}}
|
||||
req_2 = {"user": {"id": 2, "email": "gabriel@example.com"}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user