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.slices import _get_slices
7 from core.api.deployment_networks import _get_deployment_networks
8 from core.api.nodes import _get_nodes
10 def _get_slivers(filter):
11 if isinstance(filter, StringTypes) and filter.isdigit():
13 if isinstance(filter, int):
14 slivers = Sliver.objects.filter(id=filter)
15 elif isinstance(filter, StringTypes):
16 slivers = Sliver.objects.filter(name=filter)
17 elif isinstance(filter, dict):
18 slivers = Sliver.objects.filter(**filter)
23 def add_sliver(auth, fields):
24 user = authenticate(username=auth.get('username'),
25 password=auth.get('password'))
27 images = _get_images(fields.get('image'))
28 slices = _get_slices(fields.get('slice'))
29 deployment_networks = _get_deployment_networks(fields.get('deploymentNetwork'))
30 nodes = _get_nodes(fields.get('node'))
31 if images: fields['image'] = images[0]
32 if slices: fields['slice'] = slices[0]
33 if deployment_networks: fields['deploymentNetwork'] = deployment_networks[0]
34 if nodes: fields['node'] = nodes[0]
36 sliver = Sliver(**fields)
37 auth['tenant'] = sliver.slice.name
38 sliver.os_manager = OpenStackManager(auth=auth, caller = user)
42 def update_sliver(auth, sliver, **fields):
45 def delete_sliver(auth, filter={}):
46 user = authenticate(username=auth.get('username'),
47 password=auth.get('password'))
48 slivers = _get_slivers(filter)
49 for sliver in slivers:
50 auth['tenant'] = sliver.slice.name
51 slice.os_manager = OpenStackManager(auth=auth, caller = user)
55 def get_slivers(auth, filter={}):
56 user = authenticate(username=auth.get('username'),
57 password=auth.get('password'))
59 slices = _get_slices(filter.get('slice'))
60 if slices: filter['slice'] = slices[0]
61 slivers = _get_slivers(filter)