2 from types import StringTypes
3 from django.contrib.auth import authenticate
4 from plstackapi.openstack.manager import OpenStackManager
5 from plstackapi.core.models import Subnet
6 from plstackapi.core.api.slices import _get_slices
9 def _get_subnets(filter):
10 if isinstance(filter, StringTypes) and filter.isdigit():
12 if isinstance(filter, int):
13 subnets = Subnet.objects.filter(id=filter)
14 elif isinstance(filter, StringTypes):
15 # the name is the subnet's slice's name
16 slices = _get_slices(filter)
18 if slices: slice=slices[0]
19 subnets = Subnet.objects.filter(slice=slice)
20 elif isinstance(filter, dict):
21 subnets = Subnet.objects.filter(**filter)
26 def add_subnet(auth, fields):
27 user = authenticate(username=auth.get('username'),
28 password=auth.get('password'))
30 slices = _get_slices(fields.get('slice'))
31 if slices: fields['slice'] = slices[0]
32 subnet = Subnet(**fields)
33 auth['tenant'] = subnet.slice.name
34 subnet.os_manager = OpenStackManager(auth=auth, caller = user)
38 def update_subnet(auth, subnet, **fields):
41 def delete_subnet(auth, filter={}):
42 user = authenticate(username=auth.get('username'),
43 password=auth.get('password'))
44 subnets = Subnet.objects.filter(**filter)
45 for subnet in subnets:
46 auth['tenant'] = subnet.slice.name
47 subnet.os_manager = OpenStackManager(auth=auth, caller = user)
51 def get_subnets(auth, filter={}):
52 user = authenticate(username=auth.get('username'),
53 password=auth.get('password'))
55 slice = _get_slice(filter.get('slice'))
56 if slice: filter['slice'] = slice
57 subnets = Subnet.objects.filter(**filter)