several bug fixes
[plstackapi.git] / planetstack / core / api / roles.py
1 from types import StringTypes
2 from django.contrib.auth import authenticate
3 from openstack.manager import OpenStackManager
4 from core.models import Role
5  
6
7 def _get_roles(filter):
8     if isinstance(filter, StringTypes) and filter.isdigit():
9         filter = int(filter)
10     if isinstance(filter, int):
11         roles = Role.objects.filter(id=filter)
12     elif isinstance(filter, StringTypes):
13         roles = Role.objects.filter(role_type=filter)
14     elif isinstance(filter, dict):
15         roles = Role.objects.filter(**filter)
16     else:
17         roles = []
18     return roles
19
20 def add_role(auth, name):
21     user = authenticate(username=auth.get('username'),
22                         password=auth.get('password'))
23     auth['tenant'] = user.site.login_base
24
25     role = Role(role_type=name)
26     role.os_manager = OpenStackManager(auth=auth, caller = user) 
27     role.save()
28     return role
29
30 def delete_role(auth, filter={}):
31     user = authenticate(username=auth.get('username'),
32                         password=auth.get('password'))
33     roles = _get_roles(filter) 
34     for role in roles:
35         auth['tenant'] = user.site.login_base
36         role.os_manager = OpenStackManager(auth=auth, caller = user)
37         role.delete()
38     return 1
39
40 def get_roles(auth, filter={}):
41     user = authenticate(username=auth.get('username'),
42                         password=auth.get('password'))
43     return _get_roles(filter)             
44