X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=planetstack%2Fopenstack%2Fmanager.py;h=b4697ce8f678eee224b0ece0d3f6fadc9b489bab;hb=c261bd26135fdcf0b3a8c14d8186a590d1fedd39;hp=166ad193c78c7af03c93d9fc78b84ef3f52dd237;hpb=732913407cc255ab864e39522585e1b98e654af1;p=plstackapi.git diff --git a/planetstack/openstack/manager.py b/planetstack/openstack/manager.py index 166ad19..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): @@ -61,27 +69,27 @@ class OpenStackManager: @require_enabled def save_role(self, role): - if not role.role_id: + if not role.role: keystone_role = self.driver.create_role(role.role_type) - role.role_id = keystone_role.id + role.role = keystone_role.id @require_enabled def delete_role(self, role): - if role.role_id: - self.driver.delete_role({'id': role.role_id}) + if role.role: + self.driver.delete_role({'id': role.role}) @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 = {}