1 from types import StringTypes
2 from plstackapi.openstack.client import OpenStackClient
3 from plstackapi.openstack.driver import OpenStackDriver
4 from plstackapi.core.api.auth import auth_check
5 from plstackapi.core.models import Key, User
6 from plstackapi.core.api.users import _get_users
10 if isinstance(filter, StringTypes) and filter.isdigit():
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)
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]
27 nova_fields = {'name': key.name,
29 nova_key = driver.create_keypair(**nova_fields)
30 key.key_id = nova_key.id
34 def update_key(auth, id, **fields):
37 def delete_key(auth, filter={}):
38 driver = OpenStackDriver(client = auth_check(auth))
39 keys = _get_keys(filter)
41 driver.delete_keypair(id=key.key_id)
45 def get_keys(auth, filter={}):
46 client = auth_check(auth)
47 keys = _get_keys(filter)