initial checkin of observer
[plstackapi.git] / planetstack / core / api / keys.py
1 from types import StringTypes
2 from django.contrib.auth import authenticate
3 from openstack.manager import OpenStackManager
4 from core.models import Key
5 from core.api.users import _get_users
6
7
8 def _get_keys(filter):
9     if isinstance(filter, StringTypes) and filter.isdigit():
10         filter = int(filter)
11     if isinstance(filter, int):
12         keys = Key.objects.filter(id=filter)
13     elif isinstance(filter, StringTypes):
14         keys = Key.objects.filter(name=filter)
15     elif isinstance(filter, dict):
16         keys = Key.objects.filter(**filter)
17     else:
18         keys = []
19     return keys 
20
21 def add_key(auth, fields):
22     user = authenticate(username=auth.get('username'),
23                         password=auth.get('password'))
24     auth['tenant'] = user.site.login_base
25     manager = OpenStackManager(auth=auth, caller = user)
26
27     # look up user object
28     users = _get_users(fields.get('user')) 
29     if users: fields['user'] = users[0]    
30     # save
31     key = Key(**fields)
32     key.os_manager = manager
33     key.save()
34     return key
35
36 def update_key(auth, id, **fields):
37     return  
38
39 def delete_key(auth, filter={}):
40     user = authenticate(username=auth.get('username'),
41                         password=auth.get('password'))
42     auth['tenant'] = user.site.login_base
43     manager = OpenStackManager(auth=auth, caller = user)
44
45     keys = _get_keys(filter)
46     for key in keys:
47         key.os_manager = manager
48         key.delete()
49     return 1
50
51 def get_keys(auth, filter={}):
52     user = authenticate(username=auth.get('username'),
53                         password=auth.get('password'))
54     keys = _get_keys(filter)
55     return keys             
56         
57
58