blob: 6862e30c84d8b570a3ff7416246534f255a47028 [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 Mack5cc16ba2013-04-09 10:30:45 -04005
Tony Mack3c755da2013-04-09 11:40:59 -04006def lookup_site(fields):
7 site = None
Tony Mack29bffb22013-04-09 11:28:40 -04008 if 'site' in fields:
9 if isinstance(fields['site'], int):
10 sites = Site.objects.filter(id=fields['site'])
11 else:
12 sites = Site.objects.filter(login_base=fields['site'])
13 if sites:
Tony Mack3c755da2013-04-09 11:40:59 -040014 site = sites[0]
15 return site
16
17def add_user(auth, fields):
18 driver = OpenStackDriver(client = auth_check(auth))
19 site = lookup_site(fields)
20 if site: fields['site'] = site
21 user = User(**fields)
Tony Mack10d2e1e2013-04-09 11:42:41 -040022 nova_fields = {'name': user.email[:user.email.find('@')],
Tony Mack5cc16ba2013-04-09 10:30:45 -040023 'email': user.email,
Tony Mackab0aeeb2013-04-09 11:43:42 -040024 'password': fields.get('password'),
Tony Mack5cc16ba2013-04-09 10:30:45 -040025 'enabled': user.enabled}
Tony Mack1724b642013-04-09 11:48:54 -040026 nova_user = driver.create_user(**nova_fields)
Tony Mack3c755da2013-04-09 11:40:59 -040027 #driver.add_user_role(user.id, user.site.tenant_id, 'user')
Tony Mack1724b642013-04-09 11:48:54 -040028 user.user_id=nova_user.id
Tony Mack5cc16ba2013-04-09 10:30:45 -040029 user.save()
30 return user
31
32def update_user(auth, id, **fields):
33 driver = OpenStackDriver(client = auth_check(auth))
34 users = User.objects.filter(id=id)
35 if not users:
36 return
37
38 user = users[0]
39 nova_fields = {}
40 if 'email' in fields:
41 nova_fields['name'] = fields['email'][:self.email.find('@')]
42 nova_fields['email'] = fields['email']
43 if 'password' in fields:
44 nova_fields['password'] = fields['password']
45 if 'enabled' in fields:
46 nova_fields['enabled'] = fields['enabled']
47 driver.update_user(user.user_id, **nova_fields)
Tony Mack3c755da2013-04-09 11:40:59 -040048 site = lookup_site(fields)
49 if site: fields['site'] = site
Tony Mack5cc16ba2013-04-09 10:30:45 -040050 user.update(**fields)
51 return user
52
53def delete_user(auth, filter={}):
54 driver = OpenStackDriver(client = auth_check(auth))
Tony Mack2b1c12f2013-04-09 11:51:09 -040055 users = User.objects.filter(**filter)
Tony Mack5cc16ba2013-04-09 10:30:45 -040056 for user in users:
57 driver.delete_user(id=user.user_id)
58 user.delete()
59 return 1
60
61def get_users(auth, filter={}):
62 client = auth_check(auth)
63 users = User.objects.filter(**filter)
64 return users
65
66
67