allow openstack fields to contain null/blank values. separate User.is_admin from...
[plstackapi.git] / plstackapi / openstack / manager.py
index 4cf6404..86ad014 100644 (file)
@@ -9,7 +9,7 @@ try:
     from plstackapi.core.models import * 
     has_openstack = True
 except:
-    has_openpstack = False
+    has_openstack = False
 
 manager_enabled = Config().api_nova_enabled
 
@@ -58,7 +58,7 @@ class OpenStackManager:
     @require_enabled
     def save_key(self, key):
         if not key.key_id:
-            key_fields = {'name': key.name,
+            key_fields = {'name': key.user.email[:key.user.email.find('@')],
                           'key': key.key}
             nova_key = self.driver.create_keypair(**key_fields)
             key.key_id = nova_key.id        
@@ -80,18 +80,17 @@ class OpenStackManager:
             user.user_id = keystone_user.id
         if user.site:
             if user.is_admin:
-                role = 'admin'
+                self.driver.add_user_role(user.user_id, user.site.tenant_id, 'admin')
             else:
-                role = 'user'       
-            self.driver.add_user_role(user.user_id, user.site.tenant_id, role)
+                # may have admin role so attempt to remove it
+                self.driver.remove_user_role(user.user_id, user.site.tenant_id, 'admin')
+                self.driver.add_user_role(user.user_id, user.site.tenant_id, 'user')
   
     @require_enabled
     def delete_user(self, user):
         if user.user_id:
             self.driver.delete_user(user.user_id)        
     
-
-    
     @require_enabled
     def save_site(self, site, add_role=True):
         if not site.tenant_id:
@@ -217,7 +216,7 @@ class OpenStackManager:
             sliver.instance_id = instance.id
             sliver.instance_name = getattr(instance, 'OS-EXT-SRV-ATTR:instance_name')
 
-        if sliver.instance_id:
+        if sliver.instance_id and ("numberCores" in sliver.changed_fields):
             self.driver.update_instance_metadata(sliver.instance_id, {"cpu_cores": str(sliver.numberCores)})
 
     @require_enabled