Exemplo n.º 1
0
 def test_is_running(self):
     assert LifeCycle.is_running(None) is False
     for status in V1Statuses.allowable_values:
         if status in LifeCycle.RUNNING_VALUES:
             assert LifeCycle.is_running(status) is True
         else:
             assert LifeCycle.is_running(status) is False
Exemplo n.º 2
0
 def test_is_running(self):
     assert LifeCycle.is_running(None) is False
     for status in LifeCycle.VALUES:
         if status in LifeCycle.RUNNING_VALUES:
             assert LifeCycle.is_running(status) is True
         else:
             assert LifeCycle.is_running(status) is False
Exemplo n.º 3
0
 def test_can_check_heartbeat(self):
     assert LifeCycle.can_check_heartbeat(None) is False
     for status in V1Statuses.allowable_values:
         if LifeCycle.is_running(status):
             assert LifeCycle.can_check_heartbeat(status) is True
         else:
             assert LifeCycle.can_check_heartbeat(status) is False
Exemplo n.º 4
0
 def test_can_check_heartbeat(self):
     assert LifeCycle.can_check_heartbeat(None) is False
     for status in LifeCycle.VALUES:
         if LifeCycle.is_running(status):
             assert LifeCycle.can_check_heartbeat(status) is True
         else:
             assert LifeCycle.can_check_heartbeat(status) is False
Exemplo n.º 5
0
def set_started_at(run: BaseRun) -> bool:
    # We allow to override started_at if the value is running
    if run.started_at is not None:
        return False

    if LifeCycle.is_running(run.status):
        run.started_at = now()
        return True

    return False
Exemplo n.º 6
0
 def test_is_k8s_stoppable(self):
     assert LifeCycle.is_k8s_stoppable(None) is False
     for status in LifeCycle.VALUES:
         cond = (LifeCycle.is_running(status)
                 or LifeCycle.is_unschedulable(status)
                 or LifeCycle.is_warning(status=status)
                 or LifeCycle.is_unknown(status=status))
         if cond:
             assert LifeCycle.is_k8s_stoppable(status) is True
         else:
             assert LifeCycle.is_k8s_stoppable(status) is False
Exemplo n.º 7
0
 def test_is_k8s_stoppable(self):
     assert LifeCycle.is_k8s_stoppable(None) is False
     for status in V1Statuses.allowable_values:
         cond = (LifeCycle.is_running(status)
                 or LifeCycle.is_unschedulable(status)
                 or LifeCycle.is_warning(status=status)
                 or LifeCycle.is_unknown(status=status))
         if cond:
             assert LifeCycle.is_k8s_stoppable(status) is True
         else:
             assert LifeCycle.is_k8s_stoppable(status) is False
Exemplo n.º 8
0
def set_started_at(run: BaseRun) -> bool:
    # We allow to override started_at if the value is running
    if run.started_at is not None:
        return False

    if LifeCycle.is_running(run.status):
        run.started_at = now()
        # Update wait_time
        if run.wait_time is None:
            run.wait_time = (run.started_at - run.created_at).seconds
        return True

    return False
Exemplo n.º 9
0
    def handle_logs():
        is_done = False
        last_time = None
        last_file = None
        _status = None
        last_status, _ = client.get_statuses()
        while not LifeCycle.is_done(last_status) and not LifeCycle.is_running(
            last_status
        ):
            time.sleep(1)
            last_status, _ = client.get_statuses()
            if _status != last_status:
                _status = handle_status(last_status)

        while not is_done:
            response = get_logs(last_time=last_time, last_file=last_file)

            if response:
                last_time = response.last_time
                last_file = response.last_file
            else:
                last_time = None
                last_file = None

            # Follow logic
            if not any([last_file, last_time]):
                if follow:
                    last_status, _ = client.get_statuses()
                    if _status != last_status:
                        _status = handle_status(last_status)
                    is_done = LifeCycle.is_done(last_status)
                else:
                    is_done = True
            if last_time and not follow:
                is_done = True

            if not is_done:
                if last_file:
                    time.sleep(1)
                else:
                    time.sleep(settings.CLIENT_CONFIG.watch_interval)
Exemplo n.º 10
0
    def handle_logs():
        is_done = False
        last_file = None
        _status = None
        files = []
        last_transition_time = now()
        last_status, conditions = client.get_statuses()
        if conditions:
            last_transition_time = conditions[0].last_transition_time

        while not LifeCycle.is_done(last_status) and not LifeCycle.is_running(
                last_status):
            time.sleep(settings.CLIENT_CONFIG.watch_interval)
            last_status, conditions = client.get_statuses()
            if conditions:
                last_transition_time = conditions[0].last_transition_time
            if _status != last_status:
                _status = handle_status(last_status)

        if LifeCycle.is_done(last_status):
            last_time = None
        else:
            last_time = last_transition_time

        checks = 0
        while not is_done:
            response = get_logs(last_time=last_time, last_file=last_file)

            if response:
                last_time = response.last_time
                last_file = response.last_file
                files = response.files
            else:
                last_time = None
                last_file = None

            # Follow logic
            if not any([last_file, last_time]) or checks > 3:
                if follow:
                    last_status, _ = client.get_statuses()
                    if _status != last_status:
                        _status = handle_status(last_status)
                    is_done = LifeCycle.is_done(last_status)
                    if not is_done:
                        checks = 0
                    if not last_time:
                        last_time = last_transition_time
                else:
                    is_done = True
            if last_time and not follow:
                is_done = True

            if not is_done:
                if last_file:
                    if len(files) > 1 and last_file != files[-1]:
                        time.sleep(1)
                    else:
                        is_done = True
                else:
                    time.sleep(settings.CLIENT_CONFIG.watch_interval)
            checks += 1