You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@libcloud.apache.org by "Carlos Reategui (JIRA)" <ji...@apache.org> on 2013/11/14 05:21:27 UTC

[jira] [Created] (LIBCLOUD-438) Cloudstack driver ex_list_keypairs does not work if no keypairs exist

Carlos Reategui created LIBCLOUD-438:
----------------------------------------

             Summary: Cloudstack driver ex_list_keypairs does not work if no keypairs exist
                 Key: LIBCLOUD-438
                 URL: https://issues.apache.org/jira/browse/LIBCLOUD-438
             Project: Libcloud
          Issue Type: Bug
          Components: Compute
    Affects Versions: 0.13.2
         Environment: python 2.6
            Reporter: Carlos Reategui


If there are no sshkeypairs in cloudstack one gets the following when trying ex_list_keypairs or ex_create_keypair which calls the first:

Traceback (most recent call last):
  File "./csListKeyPairs.py", line 26, in <module>
    keys = driver.ex_list_keypairs()
  File "/usr/lib/python2.6/site-packages/libcloud/compute/drivers/cloudstack.py", line 601, in ex_list_keypairs
    return res['sshkeypair']
KeyError: 'sshkeypair'

I fixed it with the following change.  Please note I am a python noob so not sure if this is the best way to do fix or not:

--- apache-libcloud-0.13.2/libcloud/compute/drivers/cloudstack.py       2013-09-15 15:40:43.000000000 +0000
+++ cloudstack.py       2013-11-14 04:05:26.000000000 +0000
@@ -597,7 +598,9 @@
 
         extra_args = kwargs.copy()
         res = self._sync_request('listSSHKeyPairs', **extra_args)
-        return res['sshkeypair']
+        if res.has_key('sshkeypair'):
+            return res['sshkeypair']
+        return {}
 
     def ex_create_keypair(self, name, **kwargs):
         """





--
This message was sent by Atlassian JIRA
(v6.1#6144)