X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=planetstack%2Fopenstack%2Fmanager.py;h=b4697ce8f678eee224b0ece0d3f6fadc9b489bab;hb=c261bd26135fdcf0b3a8c14d8186a590d1fedd39;hp=788699b2536ca1be58dc2d4cccd6d33db7fa2420;hpb=47ae1b51a8639f63e2a9785126dbd7b87fe99d66;p=plstackapi.git diff --git a/planetstack/openstack/manager.py b/planetstack/openstack/manager.py index 788699b..b4697ce 100644 --- a/planetstack/openstack/manager.py +++ b/planetstack/openstack/manager.py @@ -1,3 +1,8 @@ +import os +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "planetstack.settings") +import string +import random + from netaddr import IPAddress, IPNetwork from planetstack import settings from django.core import management @@ -10,8 +15,11 @@ try: except: has_openstack = False -#manager_enabled = Config().api_nova_enabled -manager_enabled = False +manager_enabled = Config().api_nova_enabled + + +def random_string(size=6): + return ''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(size)) def require_enabled(callable): def wrapper(*args, **kwds): @@ -72,16 +80,16 @@ class OpenStackManager: @require_enabled def save_key(self, key): - if not key.key_id: - key_fields = {'name': key.user.email[:key.user.email.find('@')], + if not key.nkey_id: + key_fields = {'name': random_string(8), 'key': key.key} nova_key = self.driver.create_keypair(**key_fields) - key.key_id = nova_key.id + key.nkey_id = nova_key.id @require_enabled def delete_key(self, key): - if key.key_id: - self.driver.delete_keypair(key.key_id) + if key.nkey_id: + self.driver.delete_keypair(key.nkey_id) @require_enabled def save_user(self, user): @@ -277,6 +285,7 @@ class OpenStackManager: Node.objects.filter(name__in=old_node_names).delete() def refresh_images(self): + from core.models.image import Image # collect local images images = Image.objects.all() images_dict = {}