Пример #1
0
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
Пример #2
0
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