Index: /tools/getrange.py
===================================================================
--- /tools/getrange.py	(revision 13320)
+++ /tools/getrange.py	(revision 13321)
@@ -27,4 +27,41 @@
 
 bezet_cache = None
+def make_cache():
+  global bezet_cache
+  bezet = {}
+  substs = {}
+  def add_ip(address):
+    if '/' not in address:
+      address += "/32"
+
+    addr, mask = address.split('/')
+    if addr in substs:
+      addr = substs[addr]
+    try:
+      addr = parseaddr(addr)
+      mask = int(mask)
+      addr = addr & ~((1 << (32 - mask)) - 1)
+      for i in range(0, (1 << (32 - mask))):
+        bezet[addr + i] = 1
+    except ValueError, e:
+      print "[FOUT] in address %s node %s" % (address, node)
+  
+  for node in gformat.get_hostlist():
+    datadump = gformat.get_yaml(node)
+
+    add_ip(datadump['masterip'])
+    for key in datadump['autogen_iface_keys']:
+      add_ip(datadump[key]['ip'])
+
+  # Fetching smallest in use IP 
+  # XXX: Currently not used for anything
+  i = parseaddr("255.255.255.255")
+  for k in bezet.keys():
+    if k < i:
+      i = k
+  bezet_cache = bezet
+  return bezet
+
+
 def get_ranges(interlink, size, aantal, use_history=False):
   global bezet_cache
@@ -32,35 +69,5 @@
   
   if not use_history or (use_history and not bezet_cache):
-    bezet = {}
-    substs = {}
-    def add_ip(address):
-      if '/' not in address:
-        address += "/32"
-
-      addr, mask = address.split('/')
-      if addr in substs:
-        addr = substs[addr]
-      try:
-        addr = parseaddr(addr)
-        mask = int(mask)
-        addr = addr & ~((1 << (32 - mask)) - 1)
-        for i in range(0, (1 << (32 - mask))):
-          bezet[addr + i] = 1
-      except ValueError, e:
-        print "[FOUT] in address %s node %s" % (address, node)
-    
-    for node in gformat.get_hostlist():
-      datadump = gformat.get_yaml(node)
-
-      add_ip(datadump['masterip'])
-      for key in datadump['autogen_iface_keys']:
-        add_ip(datadump[key]['ip'])
-
-    # Fetching smallest in use IP 
-    # XXX: Currently not used for anything
-    i = parseaddr("255.255.255.255")
-    for k in bezet.keys():
-      if k < i:
-        i = k
+    bezet = make_cache()
   else:
     bezet = bezet_cache
