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
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
|
import urllib
|
||||||
|
|
||||||
from keystoneclient import base
|
from keystoneclient import base
|
||||||
|
|
||||||
|
|
||||||
@ -48,12 +50,23 @@ class TenantManager(base.ManagerWithFind):
|
|||||||
|
|
||||||
return self._create('/tenants', params, "tenant")
|
return self._create('/tenants', params, "tenant")
|
||||||
|
|
||||||
def list(self):
|
def list(self, limit=None, marker=None):
|
||||||
"""
|
"""
|
||||||
Get a list of tenants.
|
Get a list of tenants.
|
||||||
:rtype: list of :class:`Tenant`
|
: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,
|
def update(self, tenant_id, tenant_name=None, description=None,
|
||||||
enabled=None):
|
enabled=None):
|
||||||
|
@ -14,6 +14,8 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
|
import urllib
|
||||||
|
|
||||||
from keystoneclient import base
|
from keystoneclient import base
|
||||||
|
|
||||||
|
|
||||||
@ -90,14 +92,25 @@ class UserManager(base.ManagerWithFind):
|
|||||||
"""
|
"""
|
||||||
return self._delete("/users/%s" % base.getid(user))
|
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)
|
Get a list of users (optionally limited to a tenant)
|
||||||
|
|
||||||
:rtype: list of :class:`User`
|
: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:
|
if not tenant_id:
|
||||||
return self._list("/users", "users")
|
return self._list("/users%s" % query, "users")
|
||||||
else:
|
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()
|
tenant_list = self.client.tenants.list()
|
||||||
[self.assertTrue(isinstance(t, tenants.Tenant)) for t in tenant_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):
|
def test_update(self):
|
||||||
req_body = {"tenant": {"id": 4,
|
req_body = {"tenant": {"id": 4,
|
||||||
"name": "tenantX",
|
"name": "tenantX",
|
||||||
|
@ -114,6 +114,54 @@ class UserTests(utils.TestCase):
|
|||||||
user_list = self.client.users.list()
|
user_list = self.client.users.list()
|
||||||
[self.assertTrue(isinstance(u, users.User)) for u in user_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):
|
def test_update(self):
|
||||||
req_1 = {"user": {"password": "swordfish", "id": 2}}
|
req_1 = {"user": {"password": "swordfish", "id": 2}}
|
||||||
req_2 = {"user": {"id": 2, "email": "gabriel@example.com"}}
|
req_2 = {"user": {"id": 2, "email": "gabriel@example.com"}}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user