blob: 2c90140afd8d1d94e843df84aba8400930b03b76 [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 Mack29c287f2013-04-11 21:07:16 -04005from plstackapi.core.api.users import _get_users
6
7
8def _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
Tony Macke4cee7a2013-04-09 12:45:32 -040018
19def add_key(auth, fields):
20 driver = OpenStackDriver(client = auth_check(auth))
Tony Mack29c287f2013-04-11 21:07:16 -040021 users = _get_users(fields.get('user'))
22 if users: fields['user'] = users[0]
Tony Macke4cee7a2013-04-09 12:45:32 -040023 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
30def update_key(auth, id, **fields):
31 return
32
Tony Mackcc8a18d2013-04-09 12:48:19 -040033def delete_key(auth, filter={}):
Tony Macke4cee7a2013-04-09 12:45:32 -040034 driver = OpenStackDriver(client = auth_check(auth))
Tony Mack29c287f2013-04-11 21:07:16 -040035 keys = _get_keys(filter)
Tony Macke4cee7a2013-04-09 12:45:32 -040036 for key in keys:
Tony Mackdec8f4a2013-04-09 13:08:12 -040037 driver.delete_keypair(name=key.name)
Tony Macke4cee7a2013-04-09 12:45:32 -040038 key.delete()
39 return 1
40
41def get_keys(auth, filter={}):
42 client = auth_check(auth)
Tony Mack29c287f2013-04-11 21:07:16 -040043 keys = _get_keys(filter)
Tony Macke4cee7a2013-04-09 12:45:32 -040044 return keys
45
46
47