X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=system%2FSubstrate.py;h=a5f06bba0ea1fba1bab6f3d4831902ace3a46243;hb=93b57f5a05dc3eafa1a5c2c4ac54e852f508d10d;hp=098ff510523717d26a79a6f70430cece151e42e1;hpb=c60ee8339624903382f0fa98e9afc552bbedc90d;p=tests.git diff --git a/system/Substrate.py b/system/Substrate.py index 098ff51..a5f06bb 100644 --- a/system/Substrate.py +++ b/system/Substrate.py @@ -145,16 +145,16 @@ class PoolItem: def char (self): if self.status == None: return '?' - elif self.status == 'busy': return '+' - elif self.status == 'free': return '-' + elif self.status == 'busy': return '*' + elif self.status == 'free': return '.' elif self.status == 'mine': return 'M' elif self.status == 'starting': return 'S' def get_ip(self): - if self.ip: return self.ip - ip=socket.gethostbyname(self.hostname) - self.ip=ip - return ip + if self.ip: + return self.ip + self.ip = socket.gethostbyname(self.hostname) + return self.ip class Pool: @@ -165,9 +165,10 @@ class Pool: self.substrate = substrate def __repr__(self): - return "".format(self.message, self.tuples) + return "".format(self.message, self.pool_items[0], self.pool_items[-1]) def list (self, verbose=False): + print(self) for i in self.pool_items: print(i.line()) def line (self): @@ -198,7 +199,7 @@ class Pool: def next_free (self): for i in self.pool_items: if i.status == 'free': - i.status='mine' + i.status = 'mine' return (i.hostname, i.userdata) return None @@ -243,13 +244,14 @@ class Pool: else: item.status = 'free' print('.', end=' ') + sys.stdout.flush() def sense (self): print('Sensing IP pool', self.message, end=' ') sys.stdout.flush() self._sense() print('Done') - for (vname,bname) in self.load_starting(): + for vname, bname in self.load_starting(): self.substrate.add_starting_dummy(bname, vname) print("After having loaded 'starting': IP pool") print(self.line()) @@ -257,6 +259,8 @@ class Pool: ping_timeout_option = None # returns True when a given hostname/ip responds to ping def check_ping (self, hostname): + if '.' not in hostname: + hostname = self.substrate.fqdn(hostname) if not Pool.ping_timeout_option: (status, osname) = subprocess.getstatusoutput("uname -s") if status != 0: @@ -266,8 +270,15 @@ class Pool: elif osname == "Darwin": Pool.ping_timeout_option = "-t" - command="ping -c 1 {} 1 {}".format(Pool.ping_timeout_option, hostname) + command = "ping -c 1 {} 1 {}".format(Pool.ping_timeout_option, hostname) (status, output) = subprocess.getstatusoutput(command) +# print (""" +#---------- +#Ping command <{command}> has returned {status} +#-- +#{output} +#---------- +# """.format(**locals())) return status == 0 ####################