X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=planetstack%2Fopenstack%2Fmanager.py;h=4ddd7f6de3c7cc0476eddebe05b46c3bc0b5ccf0;hb=bf1153a32d6f27291dd7a3238bc1a9451e9d6154;hp=166ad193c78c7af03c93d9fc78b84ef3f52dd237;hpb=732913407cc255ab864e39522585e1b98e654af1;p=plstackapi.git diff --git a/planetstack/openstack/manager.py b/planetstack/openstack/manager.py index 166ad19..4ddd7f6 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): @@ -248,7 +256,7 @@ class OpenStackManager: if 'viccidev10' not in node.name: nodes_dict[node.name] = node - deployment = DeploymentNetwork.objects.filter(name='VICCI')[0] + deployment = Deployment.objects.filter(name='VICCI')[0] login_bases = ['princeton', 'stanford', 'gt', 'uw', 'mpisws'] sites = Site.objects.filter(login_base__in=login_bases) # collect nova nodes: @@ -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 = {}