Просмотр исходного кода

For KeyPair service - when creating a key pair, raise (native) exception if the key with the supplied name already exists

Enis Afgan 10 лет назад
Родитель
Сommit
792104f79d

+ 2 - 2
cloudbridge/cloud/interfaces/services.py

@@ -818,13 +818,13 @@ class KeyPairService(PageableObjectMixin, CloudService):
     @abstractmethod
     def create(self, name):
         """
-        Create a new keypair or return an existing one by the same name.
+        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 keypair instance
+        :return:  A keypair instance or ``None``.
         """
         pass
 

+ 4 - 5
cloudbridge/cloud/providers/aws/services.py

@@ -122,7 +122,7 @@ class AWSKeyPairService(BaseKeyPairService):
 
     def create(self, name):
         """
-        Create a new key pair or return an existing one by the same name.
+        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.
@@ -130,11 +130,10 @@ class AWSKeyPairService(BaseKeyPairService):
         :rtype: ``object`` of :class:`.KeyPair`
         :return:  A key pair instance or ``None`` if one was not be created.
         """
-        kp = self.get(name)
-        if kp:
-            return kp
         kp = self.provider.ec2_conn.create_key_pair(name)
-        return AWSKeyPair(self.provider, kp)
+        if kp:
+            return AWSKeyPair(self.provider, kp)
+        return None
 
 
 class AWSSecurityGroupService(BaseSecurityGroupService):

+ 4 - 5
cloudbridge/cloud/providers/openstack/services.py

@@ -116,7 +116,7 @@ class OpenStackKeyPairService(BaseKeyPairService):
 
     def create(self, name):
         """
-        Create a new key pair or return an existing one by the same name.
+        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.
@@ -124,11 +124,10 @@ class OpenStackKeyPairService(BaseKeyPairService):
         :rtype: ``object`` of :class:`.KeyPair`
         :return:  A key pair instance or ``None`` if one was not be created.
         """
-        kp = self.get(name)
-        if kp:
-            return kp
         kp = self.provider.nova.keypairs.create(name)
-        return OpenStackKeyPair(self.provider, kp)
+        if kp:
+            return OpenStackKeyPair(self.provider, kp)
+        return None
 
 
 class OpenStackSecurityGroupService(BaseSecurityGroupService):