fix pk lookups
[plstackapi.git] / plstackapi / core / api / roles.py
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 Role
6  
7
8 def _get_roles(filter):
9     if isinstance(filter, StringTypes) and filter.isdigit():
10         filter = int(filter)
11     if isinstance(filter, int):
12         roles = Role.objects.filter(id=filter)
13     elif isinstance(filter, StringTypes):
14         roles = Role.objects.filter(role_type=filter)
15     elif isinstance(filter, dict):
16         roles = Role.objects.filter(**filter)
17     else:
18         roles = []
19     return roles
20
21 def add_role(auth, name):
22     driver = OpenStackDriver(client = auth_check(auth))    
23     keystone_role = driver.create_role(name=name)
24     role = Role(role_type=name, role_id=keystone_role.id)
25     role.save()
26     return role
27
28 def delete_role(auth, filter={}):
29     driver = OpenStackDriver(client = auth_check(auth))   
30     roles = _get_roles(filter) 
31     for role in roles:
32         driver.delete_role({'id': role.role_id}) 
33         role.delete()
34     return 1
35
36 def get_roles(auth, filter={}):
37     client = auth_check(auth)
38     return _get_roles(filter)             
39