Esempio n. 1
0
def safe_value_to_str(value, max_len):
    if value is None or isinstance(value, six.string_types):
        return safe_short_string(str(value), max_len)

    try:
        # local import to prevent imports recursion
        from targets.values import get_value_type_of_obj

        value_type = get_value_type_of_obj(value)

        if value_type is not None:
            return value_type.to_preview(value, max_len)
    except Exception:
        logger.warning("failed dumping metric, falling back to str", exc_info=True)
        # This object has to hold only serializable values
    return safe_short_string(str(value), max_len)
Esempio n. 2
0
def safe_string(value, max_value_len=1000):
    try:
        if not isinstance(value, six.string_types):
            value = str(value)

        return safe_short_string(value=value, max_value_len=max_value_len)
    except Exception as ex:
        return "Failed to convert value to string:%s" % ex
Esempio n. 3
0
def get_safe_short_text(text, max_size):
    if max_size == -1:  # use -1 for unlimited
        return text

    if max_size == 0:  # use 0 to disable
        return None

    is_tail_preview = (
        max_size > 0
    )  # pass negative to get log's 'head' instead of 'tail'
    return safe_short_string(text, abs(max_size), tail=is_tail_preview)
Esempio n. 4
0
def build_task_run_info(task_run):
    # type: (TaskRun) -> TaskRunInfo
    t = task_run.task
    tm = task_run.task.task_meta
    task_dag = t.ctrl.task_dag
    log_local, log_remote = task_run._get_log_files()

    task_params_values = dict(t._params.get_params_serialized())
    task_definition = t.task_definition
    task_run_params = [
        TaskRunParamInfo(
            parameter_name=tdp.name,
            value_origin=t._params.get_param_value_origin(tdp.name),
            value=safe_short_string(task_params_values[tdp.name],
                                    max_value_len=5000),
        ) for tdp in task_definition.task_params.values()
    ]

    return TaskRunInfo(
        run_uid=task_run.run.run_uid,
        task_definition_uid=task_run.task.task_definition.task_definition_uid,
        task_run_uid=task_run.task_run_uid,  # this is not the TaskRun uid
        task_run_attempt_uid=task_run.
        task_run_attempt_uid,  # this is not the TaskRun uid
        task_id=t.task_id,
        task_af_id=task_run.task_af_id,
        name=t.task_name,
        task_signature=tm.task_signature,
        task_signature_source=tm.task_signature_source,
        output_signature=tm.task_outputs_signature,
        command_line=tm.task_command_line,
        env=t.task_env.name,
        functional_call=tm.task_functional_call,
        has_downstreams=bool(task_dag.downstream),
        has_upstreams=bool(task_dag.upstream),
        state=TaskRunState.SCHEDULED
        if not task_run.is_reused else TaskRunState.SUCCESS,
        is_reused=task_run.is_reused,
        is_skipped=task_run.is_skipped,
        is_dynamic=task_run.is_dynamic,
        is_system=task_run.is_system,
        version=t.task_version,
        target_date=t.task_target_date,
        log_local=log_local,
        log_remote=log_remote,
        task_run_params=task_run_params,
        execution_date=task_run.run.execution_date,
        is_root=task_run.is_root,
    )
def build_task_run_info(task_run):
    # type: (TaskRun) -> TaskRunInfo
    t = task_run.task
    task_dag = t.ctrl.task_dag
    log_local, log_remote = task_run._get_log_files()

    task_run_params = []
    for param_meta in t.task_params.get_param_values():
        if isinstance(param_meta.parameter, FuncResultParameter):
            continue

        if param_meta:
            value_source, value = param_meta.source, param_meta.value
            param_meta.parameter = (
                param_meta.parameter.update_value_meta_conf_from_runtime_value(
                    value, t.settings.tracking
                )
            )
        else:
            value_source, value = "", ""

        if (
            param_meta.parameter.hidden
            or not param_meta.parameter.value_meta_conf.log_preview
        ):
            value = ParameterValue.MASKED_VALUE_PREVIEW
        else:
            value = safe_short_string(
                param_meta.parameter.signature(value), max_value_len=5000
            )
        task_run_params.append(
            TaskRunParamInfo(
                parameter_name=param_meta.name,
                value_origin=safe_short_string(str(value_source), max_value_len=5000),
                value=value,
            )
        )

    return TaskRunInfo(
        run_uid=task_run.run.run_uid,
        task_definition_uid=task_run.task.task_definition.task_definition_uid,
        task_run_uid=task_run.task_run_uid,  # this is not the TaskRun uid
        task_run_attempt_uid=task_run.task_run_attempt_uid,  # this is not the TaskRun uid
        task_id=t.task_id,
        task_af_id=task_run.task_af_id,
        name=t.task_name,
        task_signature=t.task_signature_obj.signature,
        task_signature_source=t.task_signature_obj.signature_source,
        output_signature=t.task_outputs_signature_obj.signature,
        command_line=t.ctrl.task_repr.task_command_line,
        env=t.task_env.name,
        functional_call=t.ctrl.task_repr.task_functional_call,
        has_downstreams=bool(task_dag.downstream),
        has_upstreams=bool(task_dag.upstream),
        state=TaskRunState.SCHEDULED
        if not task_run.is_reused
        else TaskRunState.SUCCESS,
        is_reused=task_run.is_reused,
        is_skipped=task_run.is_skipped,
        is_dynamic=task_run.is_dynamic,
        is_system=task_run.is_system,
        version=t.task_version,
        target_date=t.task_target_date,
        log_local=log_local,
        log_remote=log_remote,
        task_run_params=task_run_params,
        execution_date=task_run.run.execution_date,
        is_root=task_run.is_root,
    )
Esempio n. 6
0
 def _extract_log_preivew(self, log_body=None, max_size=1000):
     is_tail_preview = (
         max_size > 0
     )  # pass negative to get log's 'head' instead of 'tail'
     return safe_short_string(log_body, abs(max_size), tail=is_tail_preview)
Esempio n. 7
0
def build_task_run_info(task_run):
    # type: (TaskRun) -> TaskRunInfo
    t = task_run.task
    tm = task_run.task.task_meta
    task_dag = t.ctrl.task_dag
    log_local, log_remote = task_run._get_log_files()

    task_params_values = dict(t._params.get_params_serialized())
    td = t.task_definition
    task_run_params = []
    for key, tdp in sorted(td.task_params.items()):
        if isinstance(tdp, FuncResultParameter):
            continue

        param_meta = t._params.get_param_meta(tdp.name)
        if param_meta:
            value_source, value = param_meta.source, param_meta.value
        else:
            value_source, value = "", ""
        task_run_params.append(
            TaskRunParamInfo(
                parameter_name=tdp.name,
                value_origin=safe_short_string(str(value_source),
                                               max_value_len=5000),
                value=safe_short_string(
                    str(task_params_values.get(tdp.name, value))
                    if not tdp.hidden else "***",
                    max_value_len=5000,
                ),
            ))

    return TaskRunInfo(
        run_uid=task_run.run.run_uid,
        task_definition_uid=task_run.task.task_definition.task_definition_uid,
        task_run_uid=task_run.task_run_uid,  # this is not the TaskRun uid
        task_run_attempt_uid=task_run.
        task_run_attempt_uid,  # this is not the TaskRun uid
        task_id=t.task_id,
        task_af_id=task_run.task_af_id,
        name=t.task_name,
        task_signature=tm.task_signature,
        task_signature_source=tm.task_signature_source,
        output_signature=tm.task_outputs_signature,
        command_line=t.ctrl.task_repr.task_command_line,
        env=t.task_env.name,
        functional_call=t.ctrl.task_repr.task_functional_call,
        has_downstreams=bool(task_dag.downstream),
        has_upstreams=bool(task_dag.upstream),
        state=TaskRunState.SCHEDULED
        if not task_run.is_reused else TaskRunState.SUCCESS,
        is_reused=task_run.is_reused,
        is_skipped=task_run.is_skipped,
        is_dynamic=task_run.is_dynamic,
        is_system=task_run.is_system,
        version=t.task_version,
        target_date=t.task_target_date,
        log_local=log_local,
        log_remote=log_remote,
        task_run_params=task_run_params,
        execution_date=task_run.run.execution_date,
        is_root=task_run.is_root,
    )