merge latest code
[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 from plstackapi.core.api.users import _get_users
6
7
8 def _get_keys(filter):
9     if isinstance(filter, int):
10         keys = Key.objects.filter(id=filter)
11     elif isinstance(filter, StringTypes):
12         keys = Key.objects.filter(name=filter)
13     elif isinstance(filer, dict):
14         keys = Key.objects.filter(**filter)
15     else:
16         keys = []
17     return keys 
18
19 def add_key(auth, fields):
20     driver = OpenStackDriver(client = auth_check(auth))
21     users = _get_users(fields.get('user')) 
22     if users: fields['user'] = users[0]    
23     key = Key(**fields)
24     nova_fields = {'name': key.name,
25                    'key': key.key} 
26     nova_key = driver.create_keypair(**nova_fields)
27     key.save()
28     return key
29
30 def update_key(auth, id, **fields):
31     return  
32
33 def delete_key(auth, filter={}):
34     driver = OpenStackDriver(client = auth_check(auth))   
35     keys = _get_keys(filter)
36     for key in keys:
37         driver.delete_keypair(name=key.name) 
38         key.delete()
39     return 1
40
41 def get_keys(auth, filter={}):
42     client = auth_check(auth)
43     keys = _get_keys(filter)
44     return keys             
45         
46
47