Author: tomaz
Date: Tue Aug 21 23:51:40 2012
New Revision: 1375857
URL: http://svn.apache.org/viewvc?rev=1375857&view=rev
Log:
Add ex_describe_all_keypairs method to the EC2 driver. Contributed by Nick
Bailey, part of LIBCLOUD-243.
Added:
libcloud/trunk/libcloud/test/compute/fixtures/ec2/describe_key_pairs.xml
Modified:
libcloud/trunk/CHANGES
libcloud/trunk/libcloud/compute/drivers/ec2.py
libcloud/trunk/libcloud/test/compute/test_ec2.py
Modified: libcloud/trunk/CHANGES
URL:
http://svn.apache.org/viewvc/libcloud/trunk/CHANGES?rev=1375857&r1=1375856&r2=1375857&view=diff
==============================================================================
--- libcloud/trunk/CHANGES (original)
+++ libcloud/trunk/CHANGES Tue Aug 21 23:51:40 2012
@@ -14,8 +14,9 @@ Changes with Apache Libcloud in developm
- Allow user to pass 'timeout' argument to the 'deploy_node' method.
[Tomaz Muraus]
- - Add ex_list_security_groups and ex_authorize_security_group methods to
- the EC2 driver.
+ - Add ex_list_security_groups, ex_authorize_security_group and
+ ex_describe_all_keypairs methods to the EC2 driver. ; LIBCLOUD-241,
+ LIBCLOUD-243
[Nick Bailey]
*) Storage
Modified: libcloud/trunk/libcloud/compute/drivers/ec2.py
URL:
http://svn.apache.org/viewvc/libcloud/trunk/libcloud/compute/drivers/ec2.py?rev=1375857&r1=1375856&r2=1375857&view=diff
==============================================================================
--- libcloud/trunk/libcloud/compute/drivers/ec2.py (original)
+++ libcloud/trunk/libcloud/compute/drivers/ec2.py Tue Aug 21 23:51:40 2012
@@ -644,6 +644,28 @@ class EC2NodeDriver(NodeDriver):
'keyFingerprint': key_fingerprint,
}
+ def ex_describe_all_keypairs(self):
+ """
+ Describes all keypairs.
+
+ @note: This is a non-standard extension API, and only works for EC2.
+
+ @rtype: C{list}
+ """
+
+ params = {
+ 'Action': 'DescribeKeyPairs'
+ }
+
+ response = self.connection.request(self.path, params=params).object
+ names = []
+ for elem in findall(element=response, xpath='keySet/item',
+ namespace=NAMESPACE):
+ name = findtext(element=elem, xpath='keyName', namespace=NAMESPACE)
+ names.append(name)
+
+ return names
+
def ex_describe_keypairs(self, name):
"""Describes a keypair by name
Added: libcloud/trunk/libcloud/test/compute/fixtures/ec2/describe_key_pairs.xml
URL:
http://svn.apache.org/viewvc/libcloud/trunk/libcloud/test/compute/fixtures/ec2/describe_key_pairs.xml?rev=1375857&view=auto
==============================================================================
--- libcloud/trunk/libcloud/test/compute/fixtures/ec2/describe_key_pairs.xml
(added)
+++ libcloud/trunk/libcloud/test/compute/fixtures/ec2/describe_key_pairs.xml
Tue Aug 21 23:51:40 2012
@@ -0,0 +1,11 @@
+<DescribeKeyPairsResponse xmlns="http://ec2.amazonaws.com/doc/2010-08-31/">
+ <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>
+ <keySet>
+ <item>
+ <keyName>gsg-keypair</keyName>
+ <keyFingerprint>
+ 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
+ </keyFingerprint>
+ </item>
+ </keySet>
+</DescribeKeyPairsResponse>
Modified: libcloud/trunk/libcloud/test/compute/test_ec2.py
URL:
http://svn.apache.org/viewvc/libcloud/trunk/libcloud/test/compute/test_ec2.py?rev=1375857&r1=1375856&r2=1375857&view=diff
==============================================================================
--- libcloud/trunk/libcloud/test/compute/test_ec2.py (original)
+++ libcloud/trunk/libcloud/test/compute/test_ec2.py Tue Aug 21 23:51:40 2012
@@ -221,6 +221,10 @@ class EC2Tests(LibcloudTestCase, TestCas
self.assertEqual(availability_zone.zone_state, 'available')
self.assertEqual(availability_zone.region_name, 'eu-west-1')
+ def test_ex_describe_all_keypairs(self):
+ keys = self.driver.ex_describe_all_keypairs()
+ self.assertEqual(keys, ['gsg-keypair'])
+
def test_ex_describe_tags(self):
node = Node('i-4382922a', None, None, None, None, self.driver)
tags = self.driver.ex_describe_tags(resource=node)
@@ -395,6 +399,10 @@ class EC2MockHttp(MockHttp):
body = self.fixtures.load('terminate_instances.xml')
return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+ def _DescribeKeyPairs(self, method, url, body, headers):
+ body = self.fixtures.load('describe_key_pairs.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
def _DescribeTags(self, method, url, body, headers):
body = self.fixtures.load('describe_tags.xml')
return (httplib.OK, body, {}, httplib.responses[httplib.OK])