-from plstackapi.openstack.client import OpenStackClient
-from plstackapi.openstack.driver import OpenStackDriver
-from plstackapi.core.api.auth import auth_check
-from plstackapi.core.models import Key, User
-
-def lookup_user(fields):
- user = None
- if 'user' in fields:
- if isinstance(fields['user'], int):
- users = User.objects.filter(id=fields['user'])
- else:
- users = User.objects.filter(email=fields['user'])
- if users:
- user = users[0]
- return user
+from types import StringTypes
+from django.contrib.auth import authenticate
+from plstackapi.openstack.manager import OpenStackManager
+from plstackapi.core.models import Key
+from plstackapi.core.api.users import _get_users
+
+
+def _get_keys(filter):
+ if isinstance(filter, StringTypes) and filter.isdigit():
+ filter = int(filter)
+ if isinstance(filter, int):
+ keys = Key.objects.filter(id=filter)
+ elif isinstance(filter, StringTypes):
+ keys = Key.objects.filter(name=filter)
+ elif isinstance(filter, dict):
+ keys = Key.objects.filter(**filter)
+ else:
+ keys = []
+ return keys
def add_key(auth, fields):
- driver = OpenStackDriver(client = auth_check(auth))
- user = lookup_user(fields)
- if user: fields['user'] = user
+ user = authenticate(username=auth.get('username'),
+ password=auth.get('password'))
+ auth['tenant'] = user.site.login_base
+ manager = OpenStackManager(auth=auth, caller = user)
+
+ # look up user object
+ users = _get_users(fields.get('user'))
+ if users: fields['user'] = users[0]
+ # save
key = Key(**fields)
- nova_fields = {'name': key.name,
- 'key': key.key}
- nova_key = driver.create_keypair(**nova_fields)
+ key.os_manager = manager
key.save()
return key
return
def delete_key(auth, filter={}):
- driver = OpenStackDriver(client = auth_check(auth))
- keys = Key.objects.filter(**filter)
+ user = authenticate(username=auth.get('username'),
+ password=auth.get('password'))
+ auth['tenant'] = user.site.login_base
+ manager = OpenStackManager(auth=auth, caller = user)
+
+ keys = _get_keys(filter)
for key in keys:
- driver.delete_keypair(name=key.name)
+ key.os_manager = manager
key.delete()
return 1
def get_keys(auth, filter={}):
- client = auth_check(auth)
- keys = Key.objects.filter(**filter)
+ user = authenticate(username=auth.get('username'),
+ password=auth.get('password'))
+ keys = _get_keys(filter)
return keys