You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@libcloud.apache.org by to...@apache.org on 2013/08/22 23:54:59 UTC
[1/2] git commit: LIBCLOUD-380: Add import_keypair functions and tests
Updated Branches:
refs/heads/trunk a5fc9d515 -> 12abd62e9
LIBCLOUD-380: Add import_keypair functions and tests
Signed-off-by: Tomaz Muraus <to...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/2be6b006
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/2be6b006
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/2be6b006
Branch: refs/heads/trunk
Commit: 2be6b006928639917cbda1641a98eeb5a13040a3
Parents: a5fc9d5
Author: Sebastien Goasguen <ru...@gmail.com>
Authored: Thu Aug 22 05:23:12 2013 -0400
Committer: Tomaz Muraus <to...@apache.org>
Committed: Thu Aug 22 21:59:39 2013 +0200
----------------------------------------------------------------------
libcloud/compute/drivers/cloudstack.py | 36 ++++++++++++++++++++
.../compute/fixtures/cloudstack/dummy_rsa.pub | 1 +
.../cloudstack/registerSSHKeyPair_default.json | 1 +
libcloud/test/compute/test_cloudstack.py | 35 ++++++++++++++-----
4 files changed, 64 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/libcloud/blob/2be6b006/libcloud/compute/drivers/cloudstack.py
----------------------------------------------------------------------
diff --git a/libcloud/compute/drivers/cloudstack.py b/libcloud/compute/drivers/cloudstack.py
index d7ec86f..0726501 100644
--- a/libcloud/compute/drivers/cloudstack.py
+++ b/libcloud/compute/drivers/cloudstack.py
@@ -19,6 +19,7 @@ from libcloud.compute.base import Node, NodeDriver, NodeImage, NodeLocation,\
NodeSize, StorageVolume
from libcloud.compute.types import NodeState, LibcloudError
+import os
class CloudStackNode(Node):
"Subclass of Node so we can expose our extension methods."
@@ -658,6 +659,41 @@ class CloudStackNodeDriver(CloudStackDriverMixIn, NodeDriver):
res = self._sync_request('deleteSSHKeyPair', name=name, **extra_args)
return res['success']
+ def ex_import_keypair_from_string(self, name, key_material):
+ """
+ Imports a new public key where the public key is passed in as a string
+
+ @param name: The name of the public key to import.
+ @type name: C{str}
+
+ @param key_material: The contents of a public key file.
+ @type key_material: C{str}
+
+ @rtype: C{dict}
+ """
+
+ res = self._sync_request('registerSSHKeyPair', name=name, publickey=key_material)
+ return {
+ 'keyName': res['keypair']['name'],
+ 'keyFingerprint': res['keypair']['fingerprint']
+ }
+
+ def ex_import_keypair(self, name, keyfile):
+ """
+ Imports a new public key where the public key is passed via a filename
+
+ @param name: The name of the public key to import.
+ @type name: C{str}
+
+ @param keyfile: The filename with path of the public key to import.
+ @type keyfile: C{str}
+
+ @rtype: C{dict}
+ """
+ with open(os.path.expanduser(keyfile)) as fh:
+ content = fh.read()
+ return self.ex_import_keypair_from_string(name, content)
+
def ex_list_security_groups(self, **kwargs):
"""
Lists Security Groups
http://git-wip-us.apache.org/repos/asf/libcloud/blob/2be6b006/libcloud/test/compute/fixtures/cloudstack/dummy_rsa.pub
----------------------------------------------------------------------
diff --git a/libcloud/test/compute/fixtures/cloudstack/dummy_rsa.pub b/libcloud/test/compute/fixtures/cloudstack/dummy_rsa.pub
new file mode 100644
index 0000000..1d18ad6
--- /dev/null
+++ b/libcloud/test/compute/fixtures/cloudstack/dummy_rsa.pub
@@ -0,0 +1 @@
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCw3Fw6AdX+3Ul3lRJIPE0Hd5oBaHnCVB1Wl325FVeJZeQiKF9Z0sw+/StWuo2ZA5ra6/A8X7tITiO7goUncdd7xLT3r3UCwKGNZXrTn8e2Kutqd9S7EN+SUh63kZmcEQsFCuC3hg0O8TzG5ROQxukYc+7PAvcYk7+KV8r3B5eh2lvp5tHTpCX/63pm4zHm5rnE38DnESeh4Dh2R8hkhnoxo9ixQCdETbufUTo5abCkKbcf8/1+qA5A13uXqBsx/KtmZX0SvyQW3hKFPGXSaYxAE/u+DZU8Myr/dDKLrGPYt6e5CSXlQLFcnz99akuVdqOP9ygPGcgwlAajOZgt+Vwn sebgoa@sebmini.local
http://git-wip-us.apache.org/repos/asf/libcloud/blob/2be6b006/libcloud/test/compute/fixtures/cloudstack/registerSSHKeyPair_default.json
----------------------------------------------------------------------
diff --git a/libcloud/test/compute/fixtures/cloudstack/registerSSHKeyPair_default.json b/libcloud/test/compute/fixtures/cloudstack/registerSSHKeyPair_default.json
new file mode 100644
index 0000000..f52ee31
--- /dev/null
+++ b/libcloud/test/compute/fixtures/cloudstack/registerSSHKeyPair_default.json
@@ -0,0 +1 @@
+{ "registersshkeypairresponse": { "keypair": { "name": "foobar", "fingerprint": "c4:a1:e5:d4:50:84:a9:4c:6b:22:ee:d6:57:02:b8:15" } } }
http://git-wip-us.apache.org/repos/asf/libcloud/blob/2be6b006/libcloud/test/compute/test_cloudstack.py
----------------------------------------------------------------------
diff --git a/libcloud/test/compute/test_cloudstack.py b/libcloud/test/compute/test_cloudstack.py
index 2f27539..943f7d5 100644
--- a/libcloud/test/compute/test_cloudstack.py
+++ b/libcloud/test/compute/test_cloudstack.py
@@ -14,6 +14,7 @@
# limitations under the License.
import sys
+import os
from libcloud.utils.py3 import httplib
from libcloud.utils.py3 import urlparse
@@ -196,17 +197,17 @@ class CloudStackNodeDriverTest(unittest.TestCase, TestCaseMixin):
location = self.driver.list_locations()[0]
self.assertEquals('Sydney', location.name)
- def test_start_node(self):
+ def test_ex_start_node(self):
node = self.driver.list_nodes()[0]
res = node.ex_start()
self.assertEquals('Starting', res)
- def test_stop_node(self):
+ def test_ex_stop_node(self):
node = self.driver.list_nodes()[0]
res = node.ex_stop()
self.assertEquals('Stopped', res)
- def test_list_keypairs(self):
+ def test_ex_list_keypairs(self):
keypairs = self.driver.ex_list_keypairs()
fingerprint = '00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:' + \
'00:00:00:00:00'
@@ -214,29 +215,45 @@ class CloudStackNodeDriverTest(unittest.TestCase, TestCaseMixin):
self.assertEqual(keypairs[0]['name'], 'cs-keypair')
self.assertEqual(keypairs[0]['fingerprint'], fingerprint)
- def test_create_keypair(self):
+ def test_ex_create_keypair(self):
self.assertRaises(
LibcloudError,
self.driver.ex_create_keypair,
'cs-keypair')
- def test_delete_keypair(self):
+ def test_ex_delete_keypair(self):
res = self.driver.ex_delete_keypair('cs-keypair')
self.assertTrue(res)
- def test_list_security_groups(self):
+ def test_ex_import_keypair(self):
+ fingerprint = 'c4:a1:e5:d4:50:84:a9:4c:6b:22:ee:d6:57:02:b8:15'
+ path = os.path.join(os.path.dirname(__file__), "fixtures", "cloudstack", "dummy_rsa.pub")
+
+ res = self.driver.ex_import_keypair('foobar', path)
+ self.assertEqual(res['keyName'], 'foobar')
+ self.assertEqual(res['keyFingerprint'], fingerprint)
+
+ def test_ex_import_keypair_from_string(self):
+ fingerprint = 'c4:a1:e5:d4:50:84:a9:4c:6b:22:ee:d6:57:02:b8:15'
+ path = os.path.join(os.path.dirname(__file__), "fixtures", "cloudstack", "dummy_rsa.pub")
+
+ res = self.driver.ex_import_keypair_from_string('foobar', open(path).read())
+ self.assertEqual(res['keyName'], 'foobar')
+ self.assertEqual(res['keyFingerprint'], fingerprint)
+
+ def test_ex_list_security_groups(self):
groups = self.driver.ex_list_security_groups()
self.assertEqual(groups[0]['name'], 'default')
- def test_create_security_group(self):
+ def test_ex_create_security_group(self):
group = self.driver.ex_create_security_group(name='MySG')
self.assertEqual(group['name'], 'MySG')
- def test_delete_security_group(self):
+ def test_ex_delete_security_group(self):
res = self.driver.ex_delete_security_group(name='MySG')
self.assertTrue(res)
- def test_authorize_security_group_ingress(self):
+ def test_ex_authorize_security_group_ingress(self):
res = self.driver.ex_authorize_security_group_ingress('MySG',
'TCP',
'22',
[2/2] git commit: Update changes.
Posted by to...@apache.org.
Update changes.
Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/12abd62e
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/12abd62e
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/12abd62e
Branch: refs/heads/trunk
Commit: 12abd62e9001d3d35666d39422dafb73a5fad55c
Parents: 2be6b00
Author: Tomaz Muraus <to...@apache.org>
Authored: Thu Aug 22 22:13:17 2013 +0200
Committer: Tomaz Muraus <to...@apache.org>
Committed: Thu Aug 22 22:13:17 2013 +0200
----------------------------------------------------------------------
CHANGES | 4 ++++
1 file changed, 4 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/libcloud/blob/12abd62e/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index 041dae0..cde97b3 100644
--- a/CHANGES
+++ b/CHANGES
@@ -66,6 +66,10 @@ Changes with Apache Libcloud in development
will continue to work for the unforeseeable future. (LIBCLOUD-375)
[Tomaz Muraus]
+ - Add ex_import_keypair_from_string and ex_import_keypair method to the
+ CloudStack driver. (LIBCLOUD-380)
+ [Sebastien Goasguen]
+
*) Storage
- Fix a regression with calling encode_container_name instead of