Created domain classes for security groups.
[snaps.git] / snaps / openstack / utils / nova_utils.py
index d6f9a19..ccbf3c4 100644 (file)
@@ -23,6 +23,7 @@ from novaclient.client import Client
 from novaclient.exceptions import NotFound
 
 from snaps.domain.flavor import Flavor
+from snaps.domain.keypair import Keypair
 from snaps.domain.vm_inst import VmInst
 from snaps.openstack.utils import keystone_utils, glance_utils, neutron_utils
 
@@ -224,7 +225,8 @@ def upload_keypair(nova, name, key):
     :return: the keypair object
     """
     logger.info('Creating keypair with name - ' + name)
-    return nova.keypairs.create(name=name, public_key=key.decode('utf-8'))
+    os_kp = nova.keypairs.create(name=name, public_key=key.decode('utf-8'))
+    return Keypair(name=os_kp.name, id=os_kp.id, public_key=os_kp.public_key)
 
 
 def keypair_exists(nova, keypair_obj):
@@ -235,7 +237,9 @@ def keypair_exists(nova, keypair_obj):
     :return: the keypair object or None if not found
     """
     try:
-        return nova.keypairs.get(keypair_obj)
+        os_kp = nova.keypairs.get(keypair_obj)
+        return Keypair(name=os_kp.name, id=os_kp.id,
+                       public_key=os_kp.public_key)
     except:
         return None
 
@@ -251,7 +255,8 @@ def get_keypair_by_name(nova, name):
 
     for keypair in keypairs:
         if keypair.name == name:
-            return keypair
+            return Keypair(name=keypair.name, id=keypair.id,
+                           public_key=keypair.public_key)
 
     return None
 
@@ -260,10 +265,10 @@ def delete_keypair(nova, key):
     """
     Deletes a keypair object from OpenStack
     :param nova: the Nova client
-    :param key: the keypair object to delete
+    :param key: the SNAPS-OO keypair domain object to delete
     """
     logger.debug('Deleting keypair - ' + key.name)
-    nova.keypairs.delete(key)
+    nova.keypairs.delete(key.id)
 
 
 def get_nova_availability_zones(nova):
@@ -410,10 +415,9 @@ def remove_security_group(nova, vm, security_group):
     Removes a security group from an existing VM
     :param nova: the nova client
     :param vm: the OpenStack server object (VM) to alter
-    :param security_group: the OpenStack security group object to add
+    :param security_group: the SNAPS SecurityGroup domain object to add
     """
-    nova.servers.remove_security_group(
-        str(vm.id), security_group['security_group']['name'])
+    nova.servers.remove_security_group(str(vm.id), security_group.name)
 
 
 def add_floating_ip_to_server(nova, vm, floating_ip, ip_addr):