1 from types import StringTypes
2 from django.contrib.auth import authenticate
3 from openstack.manager import OpenStackManager
4 from core.models import Sliver, Slice
5 from core.api.images import _get_images
6 from core.api.keys import _get_keys
7 from core.api.slices import _get_slices
8 from core.api.deployment_networks import _get_deployment_networks
9 from core.api.nodes import _get_nodes
11 def _get_slivers(filter):
12 if isinstance(filter, StringTypes) and filter.isdigit():
14 if isinstance(filter, int):
15 slivers = Sliver.objects.filter(id=filter)
16 elif isinstance(filter, StringTypes):
17 slivers = Sliver.objects.filter(name=filter)
18 elif isinstance(filter, dict):
19 slivers = Sliver.objects.filter(**filter)
24 def add_sliver(auth, fields):
25 user = authenticate(username=auth.get('username'),
26 password=auth.get('password'))
28 images = _get_images(fields.get('image'))
29 keys = _get_keys(fields.get('key'))
30 slices = _get_slices(fields.get('slice'))
31 deployment_networks = _get_deployment_networks(fields.get('deploymentNetwork'))
32 nodes = _get_nodes(fields.get('node'))
33 if images: fields['image'] = images[0]
34 if keys: fields['key'] = keys[0]
35 if slices: fields['slice'] = slices[0]
36 if deployment_networks: fields['deploymentNetwork'] = deployment_networks[0]
37 if nodes: fields['node'] = nodes[0]
39 sliver = Sliver(**fields)
40 auth['tenant'] = sliver.slice.name
41 sliver.os_manager = OpenStackManager(auth=auth, caller = user)
45 def update_sliver(auth, sliver, **fields):
48 def delete_sliver(auth, filter={}):
49 user = authenticate(username=auth.get('username'),
50 password=auth.get('password'))
51 slivers = _get_slivers(filter)
52 for sliver in slivers:
53 auth['tenant'] = sliver.slice.name
54 slice.os_manager = OpenStackManager(auth=auth, caller = user)
58 def get_slivers(auth, filter={}):
59 user = authenticate(username=auth.get('username'),
60 password=auth.get('password'))
62 slices = _get_slices(filter.get('slice'))
63 if slices: filter['slice'] = slices[0]
64 slivers = _get_slivers(filter)