blob: ad53da03d951cc81ae43683b3c57bb1ed7badb60 [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 Subnet
6from plstackapi.core.api.slices import _get_slices
7
8def _get_subnets(filter):
9 if isinstance(filter, int):
10 subnets = Subnet.objects.filter(id=filter)
11 elif isinstance(filter, StringTypes):
12 subnets = Subnet.objects.filter(name=filter)
13 elif isinstance(filer, dict):
14 subnets = Subnet.objects.filter(**filter)
15 else:
16 subnets = []
17 return subnets
18
19def add_subnet(auth, fields):
20 driver = OpenStackDriver(client = auth_check(auth))
21 slices = _get_slice(fields.get('slice'))
22 if slices: fields['slice'] = slices[0]
23 subnet = Subnet(**fields)
24 # create quantum subnet
25 subnet = driver.create_subnet(network_name=subnet.name,
26 cidr_ip = subnet.cidr,
27 ip_version=subnet.ip_version,
28 start = subnet.start,
29 end = subnet.end,
30 dns_nameservers = ['8.8.8.8', '8.8.4.4'])
31
32 subnet.subnet_id=subnet.id
33
34 # add subnet as interface to slice's router
35 driver.add_router_interface(subnet.slice.router_id, subnet.subnet_id)
36
37 subnet.save()
38 return subnet
39
40def update_subnet(auth, subnet, **fields):
41 return
42
43def delete_subnet(auth, filter={}):
44 driver = OpenStackDriver(client = auth_check(auth))
45 subnets = Subnet.objects.filter(**filter)
46 for subnet in subnets:
47 driver.delete_router_interface(subnet.slice.router_id, subnet.subnet_id)
48 driver.delete_subnet(subnet.subnet_id)
49 subnet.delete()
50 return 1
51
52def get_subnets(auth, filter={}):
53 client = auth_check(auth)
54 if 'slice' in filter:
55 slice = _get_slice(filter.get('slice'))
56 if slice: filter['slice'] = slice
57 subnets = Subnet.objects.filter(**filter)
58 return subnets
59
60
61