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 2012/04/18 21:01:06 UTC

svn commit: r1327631 - in /libcloud/trunk: CHANGES libcloud/compute/drivers/openstack.py test/compute/test_openstack.py

Author: tomaz
Date: Wed Apr 18 19:01:05 2012
New Revision: 1327631

URL: http://svn.apache.org/viewvc?rev=1327631&view=rev
Log:
Add ex_userdata argument to the OpenStack 1.1 driver. This patch has been
contributed by Jay Doane and is part of LIBCLOUD-185.

Modified:
    libcloud/trunk/CHANGES
    libcloud/trunk/libcloud/compute/drivers/openstack.py
    libcloud/trunk/test/compute/test_openstack.py

Modified: libcloud/trunk/CHANGES
URL: http://svn.apache.org/viewvc/libcloud/trunk/CHANGES?rev=1327631&r1=1327630&r2=1327631&view=diff
==============================================================================
--- libcloud/trunk/CHANGES (original)
+++ libcloud/trunk/CHANGES Wed Apr 18 19:01:05 2012
@@ -44,6 +44,9 @@ Changes with Apache Libcloud in developm
         - Allow reverse dns updates for cloud ip extensions
       [Neil Wilson, Tomaz Muraus]
 
+    - Add ex_userdata argument to the OpenStack 1.1 driver.
+      [Jay Doane]
+
   *) Storage
 
     - Large object upload support for CloudFiles driver

Modified: libcloud/trunk/libcloud/compute/drivers/openstack.py
URL: http://svn.apache.org/viewvc/libcloud/trunk/libcloud/compute/drivers/openstack.py?rev=1327631&r1=1327630&r2=1327631&view=diff
==============================================================================
--- libcloud/trunk/libcloud/compute/drivers/openstack.py (original)
+++ libcloud/trunk/libcloud/compute/drivers/openstack.py Wed Apr 18 19:01:05 2012
@@ -38,7 +38,8 @@ import base64
 
 from xml.etree import ElementTree as ET
 
-from libcloud.common.openstack import OpenStackBaseConnection, OpenStackDriverMixin
+from libcloud.common.openstack import OpenStackBaseConnection
+from libcloud.common.openstack import OpenStackDriverMixin
 from libcloud.common.types import MalformedResponseError, LibcloudError
 from libcloud.compute.types import NodeState, Provider
 from libcloud.compute.base import NodeSize, NodeImage
@@ -807,9 +808,15 @@ class OpenStack_1_1_NodeDriver(OpenStack
                                 the node
         @type       ex_files:   C{dict}
 
-        @keyword    ex_keyname:  Name of existing public key to inject into instance
+        @keyword    ex_keyname:  Name of existing public key to inject into
+                                 instance
         @type       ex_keyname:  C{string}
 
+        @keyword    ex_userdata: String containing user data
+                                 see
+                                 https://help.ubuntu.com/community/CloudInit
+        @type       ex_userdata: C{string}
+
         """
 
         server_params = self._create_args_to_params(None, **kwargs)
@@ -871,6 +878,10 @@ class OpenStack_1_1_NodeDriver(OpenStack
         if 'ex_keyname' in kwargs:
             server_params['key_name'] = kwargs['ex_keyname']
 
+        if 'ex_userdata' in kwargs:
+            server_params['user_data'] = base64.b64encode(
+                b(kwargs['ex_userdata'])).decode('ascii')
+
         if 'name' in kwargs:
             server_params['name'] = kwargs.get('name')
         else:

Modified: libcloud/trunk/test/compute/test_openstack.py
URL: http://svn.apache.org/viewvc/libcloud/trunk/test/compute/test_openstack.py?rev=1327631&r1=1327630&r2=1327631&view=diff
==============================================================================
--- libcloud/trunk/test/compute/test_openstack.py (original)
+++ libcloud/trunk/test/compute/test_openstack.py Wed Apr 18 19:01:05 2012
@@ -699,11 +699,12 @@ class OpenStack_1_1_Tests(unittest.TestC
         self.assertEqual(node.extra['password'], 'racktestvJq7d3')
         self.assertEqual(node.extra['metadata']['My Server Name'], 'Apache1')
 
-    def test_create_node_with_ex_keyname(self):
+    def test_create_node_with_ex_keyname_and_ex_userdata(self):
         image = NodeImage(id=11, name='Ubuntu 8.10 (intrepid)', driver=self.driver)
         size = NodeSize(1, '256 slice', None, None, None, None, driver=self.driver)
         node = self.driver.create_node(name='racktest', image=image, size=size,
-                                       ex_keyname='devstack')
+                                       ex_keyname='devstack',
+                                       ex_userdata='sample data')
         self.assertEqual(node.id, '26f7fbee-8ce1-4c28-887a-bfe8e4bb10fe')
         self.assertEqual(node.name, 'racktest')
         self.assertEqual(node.extra['password'], 'racktestvJq7d3')