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/05/05 00:05:03 UTC

svn commit: r941070 - in /incubator/libcloud/trunk/libcloud: base.py drivers/ecp.py drivers/slicehost.py

Author: pquerna
Date: Tue May  4 22:05:02 2010
New Revision: 941070

URL: http://svn.apache.org/viewvc?rev=941070&view=rev
Log:
Move is_private_subnet into the base, as it will be used by multiple drivers

Modified:
    incubator/libcloud/trunk/libcloud/base.py
    incubator/libcloud/trunk/libcloud/drivers/ecp.py
    incubator/libcloud/trunk/libcloud/drivers/slicehost.py

Modified: incubator/libcloud/trunk/libcloud/base.py
URL: http://svn.apache.org/viewvc/incubator/libcloud/trunk/libcloud/base.py?rev=941070&r1=941069&r2=941070&view=diff
==============================================================================
--- incubator/libcloud/trunk/libcloud/base.py (original)
+++ incubator/libcloud/trunk/libcloud/base.py Tue May  4 22:05:02 2010
@@ -33,6 +33,7 @@ import hashlib
 import StringIO
 import os
 import socket
+import struct
 from pipes import quote as pquote
 
 
@@ -652,3 +653,19 @@ class NodeDriver(object):
         n = kwargs["deploy"].run(node, client)
         client.close()
         return n
+
+def is_private_subnet(ip):
+    priv_subnets = [ {'subnet': '10.0.0.0', 'mask': '255.0.0.0'},
+                     {'subnet': '172.16.0.0', 'mask': '255.240.0.0'},
+                     {'subnet': '192.168.0.0', 'mask': '255.255.0.0'} ]
+
+    ip = struct.unpack('I',socket.inet_aton(ip))[0]
+
+    for network in priv_subnets:
+        subnet = struct.unpack('I',socket.inet_aton(network['subnet']))[0]
+        mask = struct.unpack('I',socket.inet_aton(network['mask']))[0]
+
+        if (ip & mask) == (subnet & mask):
+            return True
+
+    return False

Modified: incubator/libcloud/trunk/libcloud/drivers/ecp.py
URL: http://svn.apache.org/viewvc/incubator/libcloud/trunk/libcloud/drivers/ecp.py?rev=941070&r1=941069&r2=941070&view=diff
==============================================================================
--- incubator/libcloud/trunk/libcloud/drivers/ecp.py (original)
+++ incubator/libcloud/trunk/libcloud/drivers/ecp.py Tue May  4 22:05:02 2010
@@ -21,6 +21,7 @@ from libcloud.base import NodeDriver, No
 from libcloud.base import NodeImage, Node
 from libcloud.base import Response, ConnectionUserAndKey
 from libcloud.types import Provider, NodeState, InvalidCredsException
+from libcloud.base import is_private_subnet
 from zope.interface import implements
 
 import time
@@ -156,7 +157,7 @@ class ECPNodeDriver(NodeDriver):
             except socket.error:
                 # not a valid ip
                 continue
-            if self._is_private_subnet(ip):
+            if is_private_subnet(ip):
                 private_ips.append(ip)
             else:
                 public_ips.append(ip)
@@ -353,21 +354,4 @@ class ECPNodeDriver(NodeDriver):
         )
         
         return n
- 
 
-    #Copied from slicehost driver
-    def _is_private_subnet(self, ip):
-        priv_subnets = [ {'subnet': '10.0.0.0', 'mask': '255.0.0.0'},
-                         {'subnet': '172.16.0.0', 'mask': '172.16.0.0'},
-                         {'subnet': '192.168.0.0', 'mask': '192.168.0.0'} ]
-
-        ip = struct.unpack('I',socket.inet_aton(ip))[0]
-
-        for network in priv_subnets:
-            subnet = struct.unpack('I',socket.inet_aton(network['subnet']))[0]
-            mask = struct.unpack('I',socket.inet_aton(network['mask']))[0]
-
-            if (ip & mask) == (subnet & mask):
-                return True
- 
-        return False

Modified: incubator/libcloud/trunk/libcloud/drivers/slicehost.py
URL: http://svn.apache.org/viewvc/incubator/libcloud/trunk/libcloud/drivers/slicehost.py?rev=941070&r1=941069&r2=941070&view=diff
==============================================================================
--- incubator/libcloud/trunk/libcloud/drivers/slicehost.py (original)
+++ incubator/libcloud/trunk/libcloud/drivers/slicehost.py Tue May  4 22:05:02 2010
@@ -18,6 +18,7 @@ Slicehost Driver
 from libcloud.types import NodeState, Provider, InvalidCredsException
 from libcloud.base import ConnectionKey, Response, NodeDriver, Node
 from libcloud.base import NodeSize, NodeImage, NodeLocation
+from libcloud.base import is_private_subnet
 import base64
 import struct
 import socket
@@ -169,7 +170,7 @@ class SlicehostNodeDriver(NodeDriver):
             except socket.error:
                 # not a valid ip
                 continue
-            if self._is_private_subnet(ip):
+            if is_private_subnet(ip):
                 private_ip = ip
             else:
                 public_ip = ip
@@ -221,20 +222,3 @@ class SlicehostNodeDriver(NodeDriver):
                      name=str(element.findtext('name')),
                      driver=self.connection.driver)
         return i
-
-
-    def _is_private_subnet(self, ip):
-        priv_subnets = [ {'subnet': '10.0.0.0', 'mask': '255.0.0.0'},
-                         {'subnet': '172.16.0.0', 'mask': '255.240.0.0'},
-                         {'subnet': '192.168.0.0', 'mask': '255.255.0.0'} ]
-
-        ip = struct.unpack('I',socket.inet_aton(ip))[0]
-
-        for network in priv_subnets:
-            subnet = struct.unpack('I',socket.inet_aton(network['subnet']))[0]
-            mask = struct.unpack('I',socket.inet_aton(network['mask']))[0]
-
-            if (ip & mask) == (subnet & mask):
-                return True
-            
-        return False