remove references to OpenStackDriver and OpenStackClient outside of OpenStackManager
[plstackapi.git] / planetstack / core / api / users.py
1 from types import StringTypes
2 from openstack.client import OpenStackClient
3 from openstack.driver import OpenStackDriver
4 from core.api.auth import auth_check
5 from core.models import User, Site
6 from core.api.sites import _get_sites
7
8 def _get_users(filter):
9     if isinstance(filter, StringTypes) and filter.isdigit():
10         filter = int(filter)
11     if isinstance(filter, int):
12         users = User.objects.filter(id=filter)
13     elif isinstance(filter, StringTypes):
14         users = User.objects.filter(email=filter)
15     elif isinstance(filter, dict):
16         users = User.objects.filter(**filter)
17     else:
18         users = []
19     return users 
20
21 def add_user(auth, fields):
22     driver = OpenStackDriver(client = auth_check(auth))
23     sites = _get_sites(fields.get('site')) 
24     if sites: fields['site'] = sites[0]     
25     user = User(**fields)
26     nova_fields = {'name': user.email[:user.email.find('@')],
27                    'email': user.email, 
28                    'password': fields.get('password'),
29                    'enabled': user.enabled}    
30     nova_user = driver.create_user(**nova_fields)
31     #driver.add_user_user(user.id, user.site.tenant_id, 'user')
32     user.kuser_id=nova_user.id
33     user.save()
34     return user
35
36 def update_user(auth, id, **fields):
37     driver = OpenStackDriver(client = auth_check(auth))
38     users = User.objects.filter(id=id)
39     if not users:
40         return
41
42     user = users[0]
43     nova_fields = {}
44     if 'email' in fields:
45         nova_fields['name'] = fields['email'][:self.email.find('@')]
46         nova_fields['email'] = fields['email']
47     if 'password' in fields:
48         nova_fields['password'] = fields['password']
49     if 'enabled' in fields:
50         nova_fields['enabled'] = fields['enabled']
51     driver.update_user(user.kuser_id, **nova_fields)
52     sites = _get_sites(fields.get('site'))
53     if sites: fields['site'] = sites[0]
54     user.update(**fields)
55     return user 
56
57 def delete_user(auth, filter={}):
58     driver = OpenStackDriver(client = auth_check(auth))   
59     users = _get_users(filter)
60     for user in users:
61         driver.delete_user(id=user.kuser_id) 
62         user.delete()
63     return 1
64
65 def get_users(auth, filter={}):
66     client = auth_check(auth)
67     users = _get_users(filter)
68     return users             
69         
70
71