import base
import getters

ALL_CLASSES= base.BaseIpGetter.__subclasses__()
ALL= [x() for x in ALL_CLASSES]

def get_ip():
    import random
    remaining= ALL[:]
    while remaining:
        getter= random.choice(remaining)
        try:
            return getter.get_ip()
        except base.GetIpFailed:
            remaining.remove( getter )
    raise base.GetIpFailed("None of the ip_getters returned a good ip")

@@ -19,16 +19,78 @@
  getters
+%0Aimport logging%0Alog= logging.getLogger('update_ip.ip_getters')
 %0A%0AALL_CL
@@ -200,25 +200,23 @@
 dom%0A    
-remaining
+getters
 = ALL%5B:%5D
@@ -224,64 +224,156 @@
     
-while remaining:%0A        getter= random.choice(remaining
+random.shuffle( getters ) #for load balancing purposes%0A    for getter in getters:%0A        log.debug(%22Getting ip with getter %7B0%7D%22.format(getter.NAME)
 )%0A  
@@ -449,16 +449,21 @@
 IpFailed
+ as e
 :%0A      
@@ -472,33 +472,76 @@
     
-remaining.remove( getter 
+log.info(%22IpGetter %7B0%7D failed to get IP: %7B1%7D%22.format(getter.NAME, e)
 )%0A  

Add basic logging to ip_getters