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
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
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
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
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
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
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
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
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)
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