| 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, StringTypes) and filter.isdigit(): |
| filter = int(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) |
| role = Role(role_type=name, role_id=keystone_role.id) |
| role.save() |
| return role |
| |
| def delete_role(auth, filter={}): |
| driver = OpenStackDriver(client = auth_check(auth)) |
| roles = _get_roles(filter) |
| for role in roles: |
| driver.delete_role({'id': role.role_id}) |
| role.delete() |
| return 1 |
| |
| def get_roles(auth, filter={}): |
| client = auth_check(auth) |
| return _get_roles(filter) |
| |