List enabled users

We need enabled users to perform sync job for user specific
resources such as keypairs.

Extended current OpenStack, Keystone drivers to return the users.
Added UTs for the same.
Modified UTs for listing enabled projects.

Change-Id: I0a439d4a95afc0e7960b2255ac1779eb683d041e
This commit is contained in:
Goutham Pratapa 2016-11-01 18:36:45 +05:30
parent e716a7cde6
commit 8277d173ae
4 changed files with 59 additions and 2 deletions

View File

@ -44,6 +44,14 @@ class KeystoneClient(base.DriverBase):
except exceptions.InternalError:
raise
def get_enabled_users(self):
try:
return [current_user.id for current_user in
self.keystone_client.users.list() if
current_user.enabled]
except exceptions.InternalError:
raise
def is_service_enabled(self, service):
try:
for current_service in self.services_list:

View File

@ -86,6 +86,12 @@ class OpenStackDriver(object):
except Exception as exception:
LOG.error(_LE('Error Occurred: %s'), exception.message)
def get_enabled_users(self):
try:
return self.keystone_client.get_enabled_users()
except Exception as exception:
LOG.error(_LE('Error Occured : %s'), exception.message)
def get_resource_usages(self, project_id):
try:
nova_usages = self.nova_client.get_resource_usages(project_id)

View File

@ -29,6 +29,13 @@ class Project(object):
self.enabled = enabled
class User(object):
def __init__(self, user_name, id, enabled=True):
self.user_name = user_name
self.id = id
self.enabled = enabled
class FakeEndpoint(object):
def __init__(self, endpoint_name, region):
self.endpoint_name = endpoint_name
@ -61,13 +68,24 @@ class TestKeystoneClient(base.KingbirdTestCase):
@mock.patch.object(keystone_v3, 'EndpointCache')
def test_get_enabled_projects(self, mock_endpoint_cache):
p1 = Project('proj1', '123')
p2 = Project('proj2', '456')
p2 = Project('proj2', '456', False)
key_client = keystone_v3.KeystoneClient()
mock_endpoint_cache().keystone_client.projects.list.return_value =\
[p1, p2]
project_list = key_client.get_enabled_projects()
self.assertIn(p1.id, project_list)
self.assertIn(p2.id, project_list)
self.assertNotIn(p2.id, project_list)
@mock.patch.object(keystone_v3, 'EndpointCache')
def test_get_enabled_users(self, mock_endpoint_cache):
u1 = User('user1', '123')
u2 = User('user2', '456', False)
key_client = keystone_v3.KeystoneClient()
mock_endpoint_cache().keystone_client.users.list.return_value =\
[u1, u2]
users_list = key_client.get_enabled_users()
self.assertIn(u1.id, users_list)
self.assertNotIn(u2.id, users_list)
@mock.patch.object(keystone_v3.endpoint_filter, 'EndpointFilterManager')
@mock.patch.object(keystone_v3, 'EndpointCache')

View File

@ -30,6 +30,13 @@ class FakeService(object):
self.name = name
class User(object):
def __init__(self, user_name, id, enabled=True):
self.user_name = user_name
self.id = id
self.enabled = enabled
class TestOpenStackDriver(base.KingbirdTestCase):
def setUp(self):
super(TestOpenStackDriver, self).setUp()
@ -136,6 +143,24 @@ class TestOpenStackDriver(base.KingbirdTestCase):
output_project_list = os_driver.get_enabled_projects()
self.assertEqual(output_project_list, input_project_list)
@mock.patch.object(sdk.OpenStackDriver, '_is_token_valid')
@mock.patch.object(sdk, 'KeystoneClient')
@mock.patch.object(sdk, 'NovaClient')
@mock.patch.object(sdk, 'NeutronClient')
@mock.patch.object(sdk, 'CinderClient')
def test_get_enabled_users(self, mock_cinder_client,
mock_network_client, mock_nova_client,
mock_keystone_client, mock_is_token_valid):
mock_is_token_valid.return_value = True
user_1 = User('user1', '123')
user_2 = User('user2', '456')
input_users_list = [user_1, user_2]
os_driver = sdk.OpenStackDriver('fake_region_5')
os_driver.keystone_client.get_enabled_users.return_value = \
input_users_list
output_users_list = os_driver.get_enabled_users()
self.assertEqual(output_users_list, input_users_list)
@mock.patch.object(sdk.OpenStackDriver, '_is_token_valid')
@mock.patch.object(sdk, 'KeystoneClient')
@mock.patch.object(sdk, 'NovaClient')