فهرست منبع

Fixed bug in OpenStack's handling of kp material

Nuwan Goonasekera 8 سال پیش
والد
کامیت
e6b8f14354
1فایلهای تغییر یافته به همراه7 افزوده شده و 13 حذف شده
  1. 7 13
      cloudbridge/cloud/providers/openstack/services.py

+ 7 - 13
cloudbridge/cloud/providers/openstack/services.py

@@ -166,15 +166,6 @@ class OpenStackKeyPairService(BaseKeyPairService):
         return ClientPagedResultList(self.provider, results)
 
     def create(self, name, public_key_material=None):
-        """
-        Create a new key pair or raise an exception if one already exists.
-
-        :type name: str
-        :param name: The name of the key pair to be created.
-
-        :rtype: ``object`` of :class:`.KeyPair`
-        :return:  A key pair instance or ``None`` if one was not be created.
-        """
         log.debug("Creating a new key pair with the name: %s", name)
         OpenStackKeyPair.assert_valid_resource_name(name)
 
@@ -185,10 +176,13 @@ class OpenStackKeyPairService(BaseKeyPairService):
                                                 public_key=public_key_material)
 
         if kp:
-            return OpenStackKeyPair(self.provider, kp)
-            kp.material = private_key
-        log.debug("Key Pair with the name %s already exists", name)
-        return None
+            cb_kp = OpenStackKeyPair(self.provider, kp)
+            cb_kp.material = private_key
+            return cb_kp
+        else:
+            log.debug("Key Pair with the name %s already exists", name)
+            found_kps = self.find(name=name)
+            return found_kps[0] if found_kps else None
 
 
 class OpenStackVMFirewallService(BaseVMFirewallService):