more consistently rename plc_spec['hostname'] into plc_spec['host_box']
[tests.git] / system / Substrate.py
index f57172d..cffc5fa 100644 (file)
@@ -136,14 +136,14 @@ class Pool:
 
     def next_free (self):
         for i in self.pool:
-            if i.status in ['busy','mine','starting' ]: continue
-            i.status='mine'
-            return (i.hostname,i.userdata)
+            if i.status == 'free':
+                i.status='mine'
+                return (i.hostname,i.userdata)
         raise Exception,"No IP address available in pool %s"%self.message
 
-# OS-dependent ping option (support for macos, for convenience)
+    # OS-dependent ping option (support for macos, for convenience)
     ping_timeout_option = None
-# checks whether a given hostname/ip responds to ping
+    # checks whether a given hostname/ip responds to ping
     def check_ping (self,hostname):
         if not Pool.ping_timeout_option:
             (status,osname) = commands.getstatusoutput("uname -s")
@@ -176,9 +176,9 @@ class Pool:
         except: items=[]
         for item in items:
             for i in self.pool:
-                if i.hostname==item: i.status='starting'
+                if i.hostname==item and i.status==None: i.status='starting'
 
-    def release_my_fakes (self):
+    def release_my_starting (self):
         for i in self.pool:
             if i.status=='mine': 
                 self.del_starting(i.hostname)
@@ -660,8 +660,8 @@ class Substrate:
         if options.ips_vplc:
             vplc_hostname=options.ips_vplc.pop()
         else:
-            self.vplc_pool.load_starting()
             self.vplc_pool.sense()
+            self.vplc_pool.load_starting()
             (vplc_hostname,unused)=self.vplc_pool.next_free()
         vplc_ip = self.vplc_pool.get_ip(vplc_hostname)
         self.vplc_pool.add_starting(vplc_hostname)
@@ -675,7 +675,7 @@ class Substrate:
         #### apply in the plc_spec
         # # informative
         # label=options.personality.replace("linux","")
-        mapper = {'plc': [ ('*' , {'hostname':plc_box.hostname,
+        mapper = {'plc': [ ('*' , {'host_box':plc_box.hostname,
                                    # 'name':'%s-'+label,
                                    'name': plc_name,
                                    'vservername':vservername,
@@ -729,8 +729,8 @@ class Substrate:
                 vnode_hostname=options.ips_vnode.pop()
                 mac=self.vnode_pool.retrieve_userdata(vnode_hostname)
             else:
-                self.vnode_pool.load_starting()
                 self.vnode_pool.sense()
+                self.vnode_pool.load_starting()
                 (vnode_hostname,mac)=self.vnode_pool.next_free()
             ip=self.vnode_pool.get_ip (vnode_hostname)
             self.vnode_pool.add_starting(vnode_hostname)
@@ -763,8 +763,8 @@ class Substrate:
 
     #################### release:
     def release (self,options):
-        self.vplc_pool.release_my_fakes()
-        self.vnode_pool.release_my_fakes()
+        self.vplc_pool.release_my_starting()
+        self.vnode_pool.release_my_starting()
         pass
 
     #################### show results for interactive mode