blob: e3244a45777e99d97060371ef6fa577d8f34b416 [file] [log] [blame]
Tony Mack5df6c552013-04-11 21:24:17 -04001from types import StringTypes
Tony Mack79748612013-05-01 14:52:03 -04002from django.contrib.auth import authenticate
Siobhan Tully30fd4292013-05-10 08:59:56 -04003from openstack.client import OpenStackClient
4from openstack.driver import OpenStackDriver
5from core.api.auth import auth_check
6from core.models import Sliver, Slice
7from core.api.images import _get_images
8from core.api.keys import _get_keys
9from core.api.slices import _get_slices
10from core.api.deployment_networks import _get_deployment_networks
11from core.api.nodes import _get_nodes
Tony Mack29c287f2013-04-11 21:07:16 -040012
13
14def _get_slivers(filter):
Tony Mack5df6c552013-04-11 21:24:17 -040015 if isinstance(filter, StringTypes) and filter.isdigit():
16 filter = int(filter)
Tony Mack29c287f2013-04-11 21:07:16 -040017 if isinstance(filter, int):
18 slivers = Sliver.objects.filter(id=filter)
19 elif isinstance(filter, StringTypes):
20 slivers = Sliver.objects.filter(name=filter)
Tony Mack5df6c552013-04-11 21:24:17 -040021 elif isinstance(filter, dict):
Tony Mack29c287f2013-04-11 21:07:16 -040022 slivers = Sliver.objects.filter(**filter)
23 else:
24 slivers = []
25 return slivers
26
27def add_sliver(auth, fields):
28 driver = OpenStackDriver(client = auth_check(auth))
Tony Mack79748612013-05-01 14:52:03 -040029
Tony Mack29c287f2013-04-11 21:07:16 -040030 images = _get_images(fields.get('image'))
31 if images: fields['image'] = images[0]
Tony Mack5d6598c2013-04-12 12:45:02 -040032 keys = _get_keys(fields.get('key'))
Tony Mack29c287f2013-04-11 21:07:16 -040033 if keys: fields['key'] = keys[0]
34 slices = _get_slices(fields.get('slice'))
Tony Mack5d6598c2013-04-12 12:45:02 -040035 if slices:
36 fields['slice'] = slices[0]
Tony Mack771f4b92013-04-12 01:49:57 -040037 deployment_networks = _get_deployment_networks(fields.get('deploymentNetwork'))
38 if deployment_networks: fields['deploymentNetwork'] = deployment_networks[0]
Tony Mack29c287f2013-04-11 21:07:16 -040039 nodes = _get_nodes(fields.get('node'))
Tony Mack5d6598c2013-04-12 12:45:02 -040040 if nodes: fields['node'] = nodes[0]
Tony Mack29c287f2013-04-11 21:07:16 -040041 sliver = Sliver(**fields)
Tony Mack79748612013-05-01 14:52:03 -040042 sliver.driver = driver
Tony Mack29c287f2013-04-11 21:07:16 -040043 sliver.save()
44 return sliver
45
46def update_sliver(auth, sliver, **fields):
47 return
48
49def delete_sliver(auth, filter={}):
50 driver = OpenStackDriver(client = auth_check(auth))
51 slivers = _get_slivers(filter)
52 for sliver in slivers:
Tony Mack79748612013-05-01 14:52:03 -040053 sliver.driver = driver
Tony Mack29c287f2013-04-11 21:07:16 -040054 sliver.delete()
55 return 1
56
57def get_slivers(auth, filter={}):
Tony Mack79748612013-05-01 14:52:03 -040058 user = authenticate(username=auth.get('username'),
59 password=auth.get('password'))
Tony Mack29c287f2013-04-11 21:07:16 -040060 if 'slice' in filter:
61 slices = _get_slices(filter.get('slice'))
62 if slices: filter['slice'] = slices[0]
63 slivers = _get_slivers(filter)
64 return slivers
65
66
67