af21f4168c7bead751dcb43b8a946943c0fa2398
[plstackapi.git] / plstackapi / core / api / keys.py
1 from plstackapi.openstack.client import OpenStackClient
2 from plstackapi.openstack.driver import OpenStackDriver
3 from plstackapi.core.api.auth import auth_check
4 from plstackapi.core.models import Key, User
5  
6 def lookup_user(fields):
7     user = None
8     if 'user' in fields:
9         if isinstance(fields['user'], int):
10             users = User.objects.filter(id=fields['user'])
11         else:
12             users = User.objects.filter(email=fields['user'])
13         if users:
14             user = users[0]
15     return user 
16
17 def add_key(auth, fields):
18     driver = OpenStackDriver(client = auth_check(auth))
19     user = lookup_user(fields) 
20     if user: fields['user'] = user     
21     key = Key(**fields)
22     nova_fields = {'name': key.name,
23                    'key': key.key} 
24     nova_key = driver.create_keypair(**nova_fields)
25     key.save()
26     return key
27
28 def update_key(auth, id, **fields):
29     return  
30
31 def delete_key(auth, filter={}):
32     driver = OpenStackDriver(client = auth_check(auth))   
33     keys = Key.objects.filter(**filter)
34     for key in keys:
35         driver.delete_keypair(name=key.name) 
36         key.delete()
37     return 1
38
39 def get_keys(auth, filter={}):
40     client = auth_check(auth)
41     keys = Key.objects.filter(**filter)
42     return keys             
43         
44
45