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 2011/11/07 15:19:44 UTC

svn commit: r1198742 - /libcloud/trunk/libcloud/compute/drivers/cloudstack.py

Author: tomaz
Date: Mon Nov  7 14:19:44 2011
New Revision: 1198742

URL: http://svn.apache.org/viewvc?rev=1198742&view=rev
Log:
"network_id" field in the CloudStack driver create_node is optional. Also fix
network retrieval.

Modified:
    libcloud/trunk/libcloud/compute/drivers/cloudstack.py

Modified: libcloud/trunk/libcloud/compute/drivers/cloudstack.py
URL: http://svn.apache.org/viewvc/libcloud/trunk/libcloud/compute/drivers/cloudstack.py?rev=1198742&r1=1198741&r2=1198742&view=diff
==============================================================================
--- libcloud/trunk/libcloud/compute/drivers/cloudstack.py (original)
+++ libcloud/trunk/libcloud/compute/drivers/cloudstack.py Mon Nov  7 14:19:44 2011
@@ -171,11 +171,19 @@ class CloudStackNodeDriver(CloudStackDri
         return sizes
 
     def create_node(self, name, size, image, location=None, **kwargs):
+        extra_args = {}
         if location is None:
             location = self.list_locations()[0]
 
-        networks = self._sync_request('listNetworks')
-        network_id = networks['network'][0]['id']
+
+        network_id = kwargs.pop('network_id', None)
+        if network_id is None:
+            networks = self._sync_request('listNetworks')
+
+            if networks:
+                extra_args['networkids'] = networks['network'][0]['id']
+        else:
+            extra_args['networkids'] = network_id
 
         result = self._async_request('deployVirtualMachine',
             name=name,
@@ -183,7 +191,7 @@ class CloudStackNodeDriver(CloudStackDri
             serviceofferingid=size.id,
             templateid=image.id,
             zoneid=location.id,
-            networkids=network_id,
+            **extra_args
         )
 
         node = result['virtualmachine']