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