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
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)
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]
23 nova_fields = {'name': user.email[:user.email.find('@')],
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
33 def update_user(auth, id, **fields):
34 driver = OpenStackDriver(client = auth_check(auth))
35 users = User.objects.filter(id=id)
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]
54 def delete_user(auth, filter={}):
55 driver = OpenStackDriver(client = auth_check(auth))
56 users = _get_users(filter)
58 driver.delete_user(id=user.user_id)
62 def get_users(auth, filter={}):
63 client = auth_check(auth)
64 users = _get_users(filter)