blob: 66af59e5540ed5c02047fda9d71cae960c68642b [file] [log] [blame]
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):
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)
key.os_manager = manager
key.save()
return key
def update_key(auth, id, **fields):
return
def delete_key(auth, 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:
key.os_manager = manager
key.delete()
return 1
def get_keys(auth, filter={}):
user = authenticate(username=auth.get('username'),
password=auth.get('password'))
keys = _get_keys(filter)
return keys