Exemple #1
0
    def get(self, id):
        """A specific SRPM build details."""
        build = SRPMBuildModel.get_by_id(int(id))
        if not build:
            return response_maker(
                {"error": "No info about build stored in DB"},
                status=HTTPStatus.NOT_FOUND.value,
            )

        build_dict = {
            "status": build.status,
            "build_submitted_time":
            optional_timestamp(build.build_submitted_time),
            "build_start_time": optional_timestamp(build.build_start_time),
            "build_finished_time":
            optional_timestamp(build.build_finished_time),
            "url": build.url,
            "logs": build.logs,
            "logs_url": build.logs_url,
            "copr_build_id": build.copr_build_id,
            "copr_web_url": build.copr_web_url,
            "run_ids": sorted(run.id for run in build.runs),
        }

        build_dict.update(get_project_info_from_build(build))
        return response_maker(build_dict)
Exemple #2
0
def process_runs(runs):
    """
    Process `RunModel`s and construct a JSON that is returned from the endpoints
    that return merged chroots.

    Args:
        runs: Iterator over merged `RunModel`s.

    Returns:
        List of JSON objects where each represents pipelines run on single SRPM.
    """
    result = []

    for pipeline in runs:
        response_dict = {
            "merged_run_id": pipeline.merged_id,
            "srpm": None,
            "copr": [],
            "koji": [],
            "test_run": [],
        }

        srpm_build = SRPMBuildModel.get_by_id(pipeline.srpm_build_id)
        if srpm_build:
            response_dict["srpm"] = {
                "packit_id": srpm_build.id,
                "status": srpm_build.status,
            }
            response_dict["time_submitted"] = optional_timestamp(
                srpm_build.build_submitted_time)
            response_dict["trigger"] = get_project_info_from_build(srpm_build)

        for model_type, Model, packit_ids in (
            ("copr", CoprBuildModel, pipeline.copr_build_id),
            ("koji", KojiBuildModel, pipeline.koji_build_id),
            ("test_run", TFTTestRunModel, pipeline.test_run_id),
        ):
            for packit_id in set(
                    filter(None, map(lambda ids: ids[0], packit_ids))):
                row = Model.get_by_id(packit_id)
                if row.status == "waiting_for_srpm":
                    continue
                response_dict[model_type].append({
                    "packit_id": packit_id,
                    "target": row.target,
                    "status": row.status,
                })
                if "trigger" not in response_dict:
                    submitted_time = (row.submitted_time if isinstance(
                        row, TFTTestRunModel) else row.build_submitted_time)
                    response_dict["time_submitted"] = optional_timestamp(
                        submitted_time)
                    response_dict["trigger"] = get_project_info_from_build(row)

        result.append(response_dict)

    return result
Exemple #3
0
def get_srpm_build_logs_by_id(id_):
    log_service_versions()
    srpm_build = SRPMBuildModel.get_by_id(id_)
    if srpm_build:
        response = ("<html><head>"
                    f"<title>SRPM Build id={id_}</title></head><body>"
                    "SRPM creation logs:<br><br>"
                    f"<pre>{srpm_build.logs}</pre>"
                    "<br></body></html>")
        return response
    return f"We can't find any info about SRPM build {id_}.\n"
Exemple #4
0
def get_srpm_build_logs_by_id(id_):
    log_service_versions()
    srpm_build = SRPMBuildModel.get_by_id(id_)
    if srpm_build:
        return render_template("srpm_logs.html", id=id_, srpm_build=srpm_build)
    return f"We can't find any info about SRPM build {id_}.\n", 404