2 from plstackapi.openstack.client import OpenStackClient
3 from plstackapi.openstack.driver import OpenStackDriver
4 from plstackapi.core.api.auth import auth_check
5 from plstackapi.core.models import Slice
6 from plstackapi.core.api.sites import _get_sites
9 def _get_slices(filter):
10 if isinstance(filter, int):
11 slices = Slice.objects.filter(id=filter)
12 elif isinstance(filter, StringTypes):
13 slices = Slice.objects.filter(name=filter)
14 elif isinstance(filer, dict):
15 slices = Slice.objects.filter(**filter)
21 def add_slice(auth, fields):
22 driver = OpenStackDriver(client = auth_check(auth))
23 sites = _get_sites(fields.get('site'))
24 if sites: fields['site'] = sites[0]
25 slice = Slice(**fields)
27 nova_fields = {'tenant_name': slice.name,
28 'description': slice.description,
29 'enabled': slice.enabled}
30 tenant = driver.create_tenant(**nova_fields)
31 slice.tenant_id=tenant.id
34 network = driver.create_network(slice.name)
35 slice.network_id = network['id']
38 router = driver.create_router(slice.name)
39 slice.router_id = router['id']
44 def update_slice(auth, id, **fields):
45 driver = OpenStackDriver(client = auth_check(auth))
46 slices = _get_slices(id)
54 nova_fields['tenant_name'] = fields['name']
55 if 'description' in fields:
56 nova_fields['description'] = fields['description']
57 if 'enabled' in fields:
58 nova_fields['enabled'] = fields['enabled']
59 driver.update_tenant(slice.tenant_id, **nova_fields)
62 sites = _get_sites(fields.get('site'))
63 if sites: fields['site'] = sites[0]
64 slice.update(**fields)
68 def delete_slice(auth, filter={}):
69 driver = OpenStackDriver(client = auth_check(auth))
70 slices = _get_slices(id)
72 driver.delete_slice(id=slice.tenant_id)
76 def get_slices(auth, filter={}):
77 client = auth_check(auth)
79 sites = _get_sites(filter.get('site'))
80 if sites: filter['site'] = sites[0]
81 slices = _get_slices(filter)