blob: 91936320af7c6063833e29ed7653bf2aaa2d254f [file] [log] [blame]
Tony Mack29c287f2013-04-11 21:07:16 -04001import re
2from plstackapi.openstack.client import OpenStackClient
3from plstackapi.openstack.driver import OpenStackDriver
4from plstackapi.core.api.auth import auth_check
5from plstackapi.core.models import SliceMembership, Slice, Role, User
6from plstackapi.core.api.users import _get_users
7from plstackapi.core.api.slices import _get_slices
8from plstackapi.core.api.roles import _get_roles
9
10def _get_slice_memberships(filter):
11 if isinstance(filter, int):
12 slice_memberships = SitePrivilege.objects.filter(id=filter)
13 elif isinstance(filter, StringTypes):
14 slice_memberships = SitePrivilege.objects.filter(name=filter)
15 elif isinstance(filer, dict):
16 slice_memberships = SitePrivilege.objects.filter(**filter)
17 else:
18 slice_memberships = []
19 return slice_memberships
20
21
22def add_slice_membership(auth, fields):
23 driver = OpenStackDriver(client = auth_check(auth))
24 users = _get_users(fields.get('user'))
25 slices = _get_slices(fields.get('slice'))
26 roles = _get_roles(fields.get('role'))
27
28 if users: fields['user'] = users[0]
29 if slices: fields['slice'] = slices[0]
30 if roles: fields['role'] = roles[0]
31
32 slice_membership = SliceMembership(**fields)
33
34 # update nova role
35 driver.add_user_role(slice_membership.user.user_id,
36 slice_membership.slice.tenant_id,
37 slice_membership.role.name)
38
39 slice_membership.save()
40 return slice_membership
41
42def update_slice_membership(auth, id, **fields):
43 return
44
45def delete_slice_membership(auth, filter={}):
46 driver = OpenStackDriver(client = auth_check(auth))
47 slice_memberships = _get_slice_memberships(filter)
48 for slice_membership in slice_memberships:
49 driver.delete_user_role(user_id=slice_membership.user.id,
50 tenant_id = slice_membership.slice.tenant_id,
51 role_name = slice_membership.role.name)
52 slice_membership.delete()
53 return 1
54
55def get_slice_memberships(auth, filter={}):
56 client = auth_check(auth)
57 users = _get_users(fields.get('user'))
58 slices = _get_slices(fields.get('slice'))
59 roles = _get_roles(fields.get('role'))
60
61 if users: fields['user'] = users[0]
62 if slices: fields['slice'] = slices[0]
63 if roles: fields['role'] = roles[0]
64
65 slice_memberships = _get_slice_memberships(filter)
66 return slice_memberships
67
68
69