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