12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- import subprocess
- def wait_net_service(server, port, timeout=None):
- """ Wait for network service to appear
- @param timeout: in seconds, if None or 0 wait forever
- @return: True of False, if timeout is None may return only True or
- throw unhandled network exception
- """
- import socket
- import errno
- s = socket.socket()
- if timeout:
- from time import time as now
- # time module is needed to calc timeout shared between two exceptions
- end = now() + timeout
- while True:
- try:
- if timeout:
- next_timeout = end - now()
- if next_timeout < 0:
- return False
- else:
- s.settimeout(next_timeout)
- s.connect((server, port))
- except socket.timeout as err:
- # this exception occurs only if timeout is set
- if timeout:
- return False
- except socket.error as err:
- # catch timeout exception from underlying network library
- # this one is different from socket.timeout
- if type(err.args) != tuple or err[0] != errno.ETIMEDOUT:
- raise
- else:
- s.close()
- return True
- def up2date_anyimages():
- cmd = "docker images -q feedati/*".split()
- output = subprocess.check_output(cmd).strip()
- if output:
- return True
- return False
|