1 from types import StringTypes
2 from plstackapi.openstack.client import OpenStackClient
3 from plstackapi.openstack.driver import OpenStackDriver
4 from plstackapi.core.api.auth import auth_check
5 from plstackapi.core.models import User, Site
6 from plstackapi.core.api.sites import _get_sites
8 def _get_users(filter):
9 if isinstance(filter, StringTypes) and filter.isdigit():
11 if isinstance(filter, int):
12 users = User.objects.filter(id=filter)
13 elif isinstance(filter, StringTypes):
14 users = User.objects.filter(role_type=filter)
15 elif isinstance(filter, dict):
16 users = User.objects.filter(**filter)
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]
26 nova_fields = {'name': user.email[:user.email.find('@')],
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.user_id=nova_user.id
36 def update_user(auth, id, **fields):
37 driver = OpenStackDriver(client = auth_check(auth))
38 users = User.objects.filter(id=id)
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.user_id, **nova_fields)
52 sites = _get_sites(fields.get('site'))
53 if sites: fields['site'] = sites[0]
57 def delete_user(auth, filter={}):
58 driver = OpenStackDriver(client = auth_check(auth))
59 users = _get_users(filter)
61 driver.delete_user(id=user.user_id)
65 def get_users(auth, filter={}):
66 client = auth_check(auth)
67 users = _get_users(filter)