blob: af21f4168c7bead751dcb43b8a946943c0fa2398 [file] [log] [blame]
Tony Macke4cee7a2013-04-09 12:45:32 -04001from plstackapi.openstack.client import OpenStackClient
2from plstackapi.openstack.driver import OpenStackDriver
Tony Mackf1c12242013-04-09 16:08:43 -04003from plstackapi.core.api.auth import auth_check
4from plstackapi.core.models import Key, User
Tony Macke4cee7a2013-04-09 12:45:32 -04005
6def 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:
Tony Mack509b3182013-04-09 12:54:55 -040012 users = User.objects.filter(email=fields['user'])
Tony Macke4cee7a2013-04-09 12:45:32 -040013 if users:
14 user = users[0]
15 return user
16
17def 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
28def update_key(auth, id, **fields):
29 return
30
Tony Mackcc8a18d2013-04-09 12:48:19 -040031def delete_key(auth, filter={}):
Tony Macke4cee7a2013-04-09 12:45:32 -040032 driver = OpenStackDriver(client = auth_check(auth))
33 keys = Key.objects.filter(**filter)
34 for key in keys:
Tony Mackdec8f4a2013-04-09 13:08:12 -040035 driver.delete_keypair(name=key.name)
Tony Macke4cee7a2013-04-09 12:45:32 -040036 key.delete()
37 return 1
38
39def get_keys(auth, filter={}):
40 client = auth_check(auth)
41 keys = Key.objects.filter(**filter)
42 return keys
43
44
45