blob: d543782f219afc0094d39b766560a87224014dbd [file] [log] [blame]
Tony Mack5cc16ba2013-04-09 10:30:45 -04001from plstackapi.openstack.client import OpenStackClient
2from plstackapi.openstack.driver import OpenStackDriver
Tony Mackf1c12242013-04-09 16:08:43 -04003from plstackapi.core.api.auth import auth_check
4from plstackapi.core.models import User, Site
Tony Mack29c287f2013-04-11 21:07:16 -04005from plstackapi.core.api.sites import _get_sites
6
7def _get_users(filter):
8 if isinstance(filter, int):
9 users = User.objects.filter(id=filter)
10 elif isinstance(filter, StringTypes):
11 users = User.objects.filter(role_type=filter)
12 elif isinstance(filer, dict):
13 users = User.objects.filter(**filter)
14 else:
15 users = []
16 return users
Tony Mack3c755da2013-04-09 11:40:59 -040017
18def add_user(auth, fields):
19 driver = OpenStackDriver(client = auth_check(auth))
Tony Mack29c287f2013-04-11 21:07:16 -040020 sites = _get_sites(fields.get('site'))
21 if sites: fields['site'] = sites[0]
Tony Mack3c755da2013-04-09 11:40:59 -040022 user = User(**fields)
Tony Mack10d2e1e2013-04-09 11:42:41 -040023 nova_fields = {'name': user.email[:user.email.find('@')],
Tony Mack5cc16ba2013-04-09 10:30:45 -040024 'email': user.email,
Tony Mackab0aeeb2013-04-09 11:43:42 -040025 'password': fields.get('password'),
Tony Mack5cc16ba2013-04-09 10:30:45 -040026 'enabled': user.enabled}
Tony Mack1724b642013-04-09 11:48:54 -040027 nova_user = driver.create_user(**nova_fields)
Tony Mack29c287f2013-04-11 21:07:16 -040028 #driver.add_user_user(user.id, user.site.tenant_id, 'user')
Tony Mack1724b642013-04-09 11:48:54 -040029 user.user_id=nova_user.id
Tony Mack5cc16ba2013-04-09 10:30:45 -040030 user.save()
31 return user
32
33def update_user(auth, id, **fields):
34 driver = OpenStackDriver(client = auth_check(auth))
35 users = User.objects.filter(id=id)
36 if not users:
37 return
38
39 user = users[0]
40 nova_fields = {}
41 if 'email' in fields:
42 nova_fields['name'] = fields['email'][:self.email.find('@')]
43 nova_fields['email'] = fields['email']
44 if 'password' in fields:
45 nova_fields['password'] = fields['password']
46 if 'enabled' in fields:
47 nova_fields['enabled'] = fields['enabled']
48 driver.update_user(user.user_id, **nova_fields)
Tony Mack29c287f2013-04-11 21:07:16 -040049 sites = _get_sites(fields.get('site'))
50 if sites: fields['site'] = sites[0]
Tony Mack5cc16ba2013-04-09 10:30:45 -040051 user.update(**fields)
52 return user
53
54def delete_user(auth, filter={}):
55 driver = OpenStackDriver(client = auth_check(auth))
Tony Mack29c287f2013-04-11 21:07:16 -040056 users = _get_users(filter)
Tony Mack5cc16ba2013-04-09 10:30:45 -040057 for user in users:
58 driver.delete_user(id=user.user_id)
59 user.delete()
60 return 1
61
62def get_users(auth, filter={}):
63 client = auth_check(auth)
Tony Mack29c287f2013-04-11 21:07:16 -040064 users = _get_users(filter)
Tony Mack5cc16ba2013-04-09 10:30:45 -040065 return users
66
67
68