From 7234e90b5c70e163b8e5eee4198f3ef72974c324 Mon Sep 17 00:00:00 2001 From: Mustafa Gezen Date: Thu, 2 Feb 2023 17:35:25 +0100 Subject: [PATCH] Final RPM nvra compat fix --- apollo/db/serialize/__init__.py | 6 +++--- apollo/server/routes/api_compat.py | 17 +++++------------ 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/apollo/db/serialize/__init__.py b/apollo/db/serialize/__init__.py index 459b29f..309a5f1 100644 --- a/apollo/db/serialize/__init__.py +++ b/apollo/db/serialize/__init__.py @@ -72,8 +72,8 @@ class Advisory_Pydantic_V2_Fix(BaseModel): description: str -class Advisory_Pydantic_V2_RPM(BaseModel): - nevra: str +class Advisory_Pydantic_V2_RPMs(BaseModel): + nvras: list[str] class Advisory_Pydantic_V2_CVE(BaseModel): @@ -99,7 +99,7 @@ class Advisory_Pydantic_V2(BaseModel): cves: list[Advisory_Pydantic_V2_CVE] references: list[str] publishedAt: str - rpms: dict[str, list[Advisory_Pydantic_V2_RPM]] + rpms: dict[str, Advisory_Pydantic_V2_RPMs] rebootSuggested: bool buildReferences: list[str] diff --git a/apollo/server/routes/api_compat.py b/apollo/server/routes/api_compat.py index 856cab8..45cdb72 100644 --- a/apollo/server/routes/api_compat.py +++ b/apollo/server/routes/api_compat.py @@ -20,7 +20,7 @@ from pydantic import BaseModel from rssgen.feed import RssGenerator from apollo.db import Advisory, RedHatIndexState -from apollo.db.serialize import Advisory_Pydantic_V2, Advisory_Pydantic_V2_CVE, Advisory_Pydantic_V2_Fix, Advisory_Pydantic_V2_RPM +from apollo.db.serialize import Advisory_Pydantic_V2, Advisory_Pydantic_V2_CVE, Advisory_Pydantic_V2_Fix, Advisory_Pydantic_V2_RPMs from apollo.server.settings import UI_URL, COMPANY_NAME, MANAGING_EDITOR, get_setting from common.fastapi import RenderErrorTemplateException @@ -128,16 +128,9 @@ def v3_advisory_to_v2( for pkg in advisory.packages: name = f"{pkg.supported_product.variant} {pkg.supported_products_rh_mirror.match_major_version}" if name not in rpms: - rpms[name] = [] - if pkg.nevra not in rpms[name]: - rpms[name].append(pkg.nevra) - - rpms_res = {} - if include_rpms: - for product, rpms in rpms.items(): - rpms_res[product] = [ - Advisory_Pydantic_V2_RPM(nevra=x) for x in rpms - ] + rpms[name] = Advisory_Pydantic_V2_RPMs(nvras=[]) + if pkg.nevra not in rpms[name].nvras: + rpms[name].nvras.append(pkg.nevra) published_at = advisory.published_at.isoformat("T" ).replace("+00:00", "") + "Z" @@ -156,7 +149,7 @@ def v3_advisory_to_v2( shortCode=advisory.name[0:2], topic=advisory.topic if advisory.topic else "", solution=None, - rpms=rpms_res, + rpms=rpms, affectedProducts=affected_products, references=[], rebootSuggested=False,