1 from types import StringTypes
2 from django.contrib.auth import authenticate
3 from openstack.manager import OpenStackManager
4 from core.models import SliceMembership
5 from core.api.users import _get_users
6 from core.api.slices import _get_slices
7 from core.api.roles import _get_roles
9 def _get_slice_memberships(filter):
10 if isinstance(filter, StringTypes) and filter.isdigit():
12 if isinstance(filter, int):
13 slice_memberships = SitePrivilege.objects.filter(id=filter)
14 elif isinstance(filter, StringTypes):
15 slice_memberships = SitePrivilege.objects.filter(name=filter)
16 elif isinstance(filter, dict):
17 slice_memberships = SitePrivilege.objects.filter(**filter)
19 slice_memberships = []
20 return slice_memberships
23 def add_slice_membership(auth, fields):
24 user = authenticate(username=auth.get('username'),
25 password=auth.get('password'))
27 users = _get_users(fields.get('user'))
28 slices = _get_slices(fields.get('slice'))
29 roles = _get_roles(fields.get('role'))
31 if users: fields['user'] = users[0]
32 if slices: fields['slice'] = slices[0]
33 if roles: fields['role'] = roles[0]
35 slice_membership = SliceMembership(**fields)
36 auth['tenant'] = sites[0].login_base
37 slice_membership.os_manager = OpenStackManager(auth=auth, caller = user)
38 slice_membership.save()
39 return slice_membership
41 def update_slice_membership(auth, id, **fields):
44 def delete_slice_membership(auth, filter={}):
45 user = authenticate(username=auth.get('username'),
46 password=auth.get('password'))
47 auth['tenant'] = user.site.login_base
49 slice_memberships = _get_slice_memberships(filter)
50 for slice_membership in slice_memberships:
51 slice_membership.os_manager = OpenStackManager(auth=auth, caller = user)
52 slice_membership.delete()
55 def get_slice_memberships(auth, filter={}):
56 user = authenticate(username=auth.get('username'),
57 password=auth.get('password'))
58 users = _get_users(fields.get('user'))
59 slices = _get_slices(fields.get('slice'))
60 roles = _get_roles(fields.get('role'))
62 if users: fields['user'] = users[0]
63 if slices: fields['slice'] = slices[0]
64 if roles: fields['role'] = roles[0]
66 slice_memberships = _get_slice_memberships(filter)
67 return slice_memberships