merge latest code
diff --git a/plstackapi/core/api/roles.py b/plstackapi/core/api/roles.py
index 844fb4f..6c61e25 100644
--- a/plstackapi/core/api/roles.py
+++ b/plstackapi/core/api/roles.py
@@ -1,9 +1,21 @@
+from types import StringTypes
from plstackapi.openstack.client import OpenStackClient
from plstackapi.openstack.driver import OpenStackDriver
from plstackapi.core.api.auth import auth_check
from plstackapi.core.models import Role
+def _get_roles(filter):
+ if isinstance(filter, int):
+ roles = Role.objects.filter(id=filter)
+ elif isinstance(filter, StringTypes):
+ roles = Role.objects.filter(role_type=filter)
+ elif isinstance(filter, dict):
+ roles = Role.objects.filter(**filter)
+ else:
+ roles = []
+ return roles
+
def add_role(auth, name):
driver = OpenStackDriver(client = auth_check(auth))
keystone_role = driver.create_role(name=name)
@@ -13,7 +25,7 @@
def delete_role(auth, filter={}):
driver = OpenStackDriver(client = auth_check(auth))
- roles = Role.objects.filter(**filter)
+ roles = _get_roles(filter)
for role in roles:
driver.delete_role({'id': role.role_id})
role.delete()
@@ -21,8 +33,5 @@
def get_roles(auth, filter={}):
client = auth_check(auth)
- roles = Role.objects.filter(**filter)
- return roles
+ return _get_roles(filter)
-
-