You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@libcloud.apache.org by pq...@apache.org on 2010/08/13 01:03:10 UTC

svn commit: r985030 - /incubator/libcloud/trunk/libcloud/drivers/dummy.py

Author: pquerna
Date: Thu Aug 12 23:03:10 2010
New Revision: 985030

URL: http://svn.apache.org/viewvc?rev=985030&view=rev
Log:
If the API key passed into the Dummy driver looks like a number, create N nodes, making it easier to debug tests with thousands of nodes.

Submitted By: Alex Polvi

Modified:
    incubator/libcloud/trunk/libcloud/drivers/dummy.py

Modified: incubator/libcloud/trunk/libcloud/drivers/dummy.py
URL: http://svn.apache.org/viewvc/incubator/libcloud/trunk/libcloud/drivers/dummy.py?rev=985030&r1=985029&r2=985030&view=diff
==============================================================================
--- incubator/libcloud/trunk/libcloud/drivers/dummy.py (original)
+++ incubator/libcloud/trunk/libcloud/drivers/dummy.py Thu Aug 12 23:03:10 2010
@@ -22,6 +22,8 @@ from libcloud.base import NodeImage, Nod
 from libcloud.types import Provider,NodeState
 
 import uuid
+import socket
+import struct
 
 class DummyConnection(ConnectionKey):
     """
@@ -39,24 +41,48 @@ class DummyNodeDriver(NodeDriver):
     name = "Dummy Node Provider"
     type = Provider.DUMMY
 
+    def _ip_to_int(ip):
+      return socket.htonl(struct.unpack('I', socket.inet_aton(ip))[0])
+    def _int_to_ip(ip):
+      return socket.inet_ntoa(struct.pack('I', socket.ntohl(ip)))
+
     def __init__(self, creds):
         self.creds = creds
-        self.nl = [
-            Node(id=1,
-                 name='dummy-1',
-                 state=NodeState.RUNNING,
-                 public_ip=['127.0.0.1'],
-                 private_ip=[],
-                 driver=self,
-                 extra={'foo': 'bar'}),
-            Node(id=2,
-                 name='dummy-2',
-                 state=NodeState.RUNNING,
-                 public_ip=['127.0.0.1'],
-                 private_ip=[],
-                 driver=self,
-                 extra={'foo': 'bar'}),
-        ]
+        try:
+          num = int(creds)
+        except ValueError:
+          num = None
+        if num:
+          self.nl = []
+          startip = self._ip_to_int('127.0.0.1')
+          for i in xrange(num):
+            ip = self._int_to_ip(startip + i)
+            self.nl.append(
+              Node(id=i,
+                   name='dummy-%d' % (i),
+                   state=NodeState.RUNNING,
+                   public_ip=[ip],
+                   private_ip=[],
+                   driver=self,
+                   extra={'foo': 'bar'})
+            )
+        else:
+          self.nl = [
+              Node(id=1,
+                   name='dummy-1',
+                   state=NodeState.RUNNING,
+                   public_ip=['127.0.0.1'],
+                   private_ip=[],
+                   driver=self,
+                   extra={'foo': 'bar'}),
+              Node(id=2,
+                   name='dummy-2',
+                   state=NodeState.RUNNING,
+                   public_ip=['127.0.0.1'],
+                   private_ip=[],
+                   driver=self,
+                   extra={'foo': 'bar'}),
+          ]
         self.connection = DummyConnection(self.creds)
 
     def get_uuid(self, unique_field=None):