merge latest code
[plstackapi.git] / plstackapi / core / api / users.py
1 from plstackapi.openstack.client import OpenStackClient
2 from plstackapi.openstack.driver import OpenStackDriver
3 from plstackapi.core.api.auth import auth_check
4 from plstackapi.core.models import User, Site
5 from plstackapi.core.api.sites import _get_sites
6
7 def _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 
17
18 def add_user(auth, fields):
19     driver = OpenStackDriver(client = auth_check(auth))
20     sites = _get_sites(fields.get('site')) 
21     if sites: fields['site'] = sites[0]     
22     user = User(**fields)
23     nova_fields = {'name': user.email[:user.email.find('@')],
24                    'email': user.email, 
25                    'password': fields.get('password'),
26                    'enabled': user.enabled}    
27     nova_user = driver.create_user(**nova_fields)
28     #driver.add_user_user(user.id, user.site.tenant_id, 'user')
29     user.user_id=nova_user.id
30     user.save()
31     return user
32
33 def 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)
49     sites = _get_sites(fields.get('site'))
50     if sites: fields['site'] = sites[0]
51     user.update(**fields)
52     return user 
53
54 def delete_user(auth, filter={}):
55     driver = OpenStackDriver(client = auth_check(auth))   
56     users = _get_users(filter)
57     for user in users:
58         driver.delete_user(id=user.user_id) 
59         user.delete()
60     return 1
61
62 def get_users(auth, filter={}):
63     client = auth_check(auth)
64     users = _get_users(filter)
65     return users             
66         
67
68