def get_vm(desired_caps): platform = get_platform(desired_caps) vm = None for _ in generator_wait_for(lambda: vm, timeout=config.GET_VM_TIMEOUT): vm = current_app.pool.get_vm(platform) if vm: break if not vm: raise CreationException( "Timeout while waiting for vm with platform %s" % platform) yield vm for _ in generator_wait_for(lambda: vm.ready, timeout=config.GET_VM_TIMEOUT): yield vm if not vm.ready: vm.delete(try_to_rebuild=False) raise CreationException('Timeout while building vm %s (platform: %s)' % (vm.name, platform)) log.info('Got vm for request with params: %s' % vm.info) yield vm
def ping_endpoint_before_start_session(session, ports): ip = check_to_exist_ip(session) log.info("Starting ping: {ip}:{ports}".format(ip=ip, ports=str(ports))) _ping = partial(network_utils.ping, ip) def check(): return all(map(_ping, ports)) for _ in generator_wait_for(check, config.PING_TIMEOUT): yield False result = map(_ping, ports) if not all(result): fails = [port for port, res in zip(ports, result) if res is False] raise CreationException("Failed to ping ports %s" % str(fails)) if session.closed: raise CreationException("Session was closed while ping") log.info("Ping successful: {ip}:{ports}".format(ip=ip, ports=str(ports))) yield True