Refactor to /opt/planetstack, final tweaks to make sure planetstack can run in non...
[plstackapi.git] / planetstack / core / api / keys.py
1 from types import StringTypes
2 from openstack.client import OpenStackClient
3 from openstack.driver import OpenStackDriver
4 from core.models import Key
5 from core.api.auth import auth_check
6 from core.api.users import _get_users
7
8
9 def _get_keys(filter):
10     if isinstance(filter, StringTypes) and filter.isdigit():
11         filter = int(filter)
12     if isinstance(filter, int):
13         keys = Key.objects.filter(id=filter)
14     elif isinstance(filter, StringTypes):
15         keys = Key.objects.filter(name=filter)
16     elif isinstance(filter, dict):
17         keys = Key.objects.filter(**filter)
18     else:
19         keys = []
20     return keys 
21
22 def add_key(auth, fields):
23     driver = OpenStackDriver(client = auth_check(auth))
24     users = _get_users(fields.get('user')) 
25     if users: fields['user'] = users[0]    
26     key = Key(**fields)
27     nova_fields = {'name': key.name,
28                    'key': key.key} 
29     nova_key = driver.create_keypair(**nova_fields)
30     key.nkey_id = nova_key.id
31     key.save()
32     return key
33
34 def update_key(auth, id, **fields):
35     return  
36
37 def delete_key(auth, filter={}):
38     driver = OpenStackDriver(client = auth_check(auth))   
39     keys = _get_keys(filter)
40     for key in keys:
41         driver.delete_keypair(id=key.nkey_id) 
42         key.delete()
43     return 1
44
45 def get_keys(auth, filter={}):
46     client = auth_check(auth)
47     keys = _get_keys(filter)
48     return keys             
49         
50
51