From ac218bda6da0975a1c47c8f2482973267a4f0408 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Sep 2024 15:46:26 +0000 Subject: [PATCH 01/39] Bump pytest from 8.3.2 to 8.3.3 Bumps [pytest](https://github.com/pytest-dev/pytest) from 8.3.2 to 8.3.3. - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest/compare/8.3.2...8.3.3) --- updated-dependencies: - dependency-name: pytest dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements-tests.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-tests.txt b/requirements-tests.txt index 18391e49..7f0dc9e3 100644 --- a/requirements-tests.txt +++ b/requirements-tests.txt @@ -1,4 +1,4 @@ -pytest==8.3.2 +pytest==8.3.3 pytest-cov==5.0.0 pyfakefs==5.6.0 From b37373f6a81fcbad1791b6f68bfaf4acef9666c1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Sep 2024 15:46:35 +0000 Subject: [PATCH 02/39] Bump websockets from 13.0.1 to 13.1 Bumps [websockets](https://github.com/python-websockets/websockets) from 13.0.1 to 13.1. - [Release notes](https://github.com/python-websockets/websockets/releases) - [Commits](https://github.com/python-websockets/websockets/compare/13.0.1...13.1) --- updated-dependencies: - dependency-name: websockets dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 4070d27e..90734576 100644 --- a/requirements.txt +++ b/requirements.txt @@ -33,7 +33,7 @@ sentry-sdk[fastapi]==2.14.0 # requires FastAPI>=0.79.0 syncer==2.0.3 tap.py==3.1 uvicorn==0.30.6 -websockets==13.0.1 +websockets==13.1 git+https://github.com/AlmaLinux/immudb-wrapper.git@0.1.2#egg=immudb_wrapper git+https://github.com/AlmaLinux/errata2osv.git@0.0.4#egg=errata2osv git+https://github.com/AlmaLinux/albs-github-integration.git@0.4.1#egg=albs_github From 46c599917c8066a2bab18831239982d251eaebbd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Sep 2024 15:46:37 +0000 Subject: [PATCH 03/39] Bump pydantic-settings from 2.4.0 to 2.5.2 Bumps [pydantic-settings](https://github.com/pydantic/pydantic-settings) from 2.4.0 to 2.5.2. - [Release notes](https://github.com/pydantic/pydantic-settings/releases) - [Commits](https://github.com/pydantic/pydantic-settings/compare/v2.4.0...v2.5.2) --- updated-dependencies: - dependency-name: pydantic-settings dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 4070d27e..a2e98151 100644 --- a/requirements.txt +++ b/requirements.txt @@ -26,7 +26,7 @@ markdown==3.7 pgpy==0.6.0 plumbum==1.8.3 psycopg2-binary==2.9.9 -pydantic-settings==2.4.0 +pydantic-settings==2.5.2 pydantic==2.9.2 python-multipart>=0.0.7 sentry-sdk[fastapi]==2.14.0 # requires FastAPI>=0.79.0 From d09ba242e1dd6ca736e541a9354394514fedf975 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Sep 2024 15:46:48 +0000 Subject: [PATCH 04/39] Bump sqlalchemy from 2.0.34 to 2.0.35 Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 2.0.34 to 2.0.35. - [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases) - [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/main/CHANGES.rst) - [Commits](https://github.com/sqlalchemy/sqlalchemy/commits) --- updated-dependencies: - dependency-name: sqlalchemy dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 4070d27e..ef4a5ed0 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ PyYAML==6.0.2 -SQLAlchemy==2.0.34 +SQLAlchemy==2.0.35 aiofiles==24.1.0 aiohttp-retry==2.8.3 aiohttp==3.10.5 From f2b8b46db33cfd3164368d0cbb8d4f78f84befee Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 24 Sep 2024 15:13:53 +0000 Subject: [PATCH 05/39] Bump pylint from 3.2.7 to 3.3.1 Bumps [pylint](https://github.com/pylint-dev/pylint) from 3.2.7 to 3.3.1. - [Release notes](https://github.com/pylint-dev/pylint/releases) - [Commits](https://github.com/pylint-dev/pylint/compare/v3.2.7...v3.3.1) --- updated-dependencies: - dependency-name: pylint dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- requirements-tests.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-tests.txt b/requirements-tests.txt index 18391e49..711ebfd8 100644 --- a/requirements-tests.txt +++ b/requirements-tests.txt @@ -5,5 +5,5 @@ pyfakefs==5.6.0 # Linters isort[colors]==5.13.2 black==24.8.0 -pylint==3.2.7 +pylint==3.3.1 bandit[toml]==1.7.9 From fcc461df354da408664178ebd94dcfe0845597cf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 25 Sep 2024 15:07:49 +0000 Subject: [PATCH 06/39] Bump aiohttp from 3.10.5 to 3.10.6 Bumps [aiohttp](https://github.com/aio-libs/aiohttp) from 3.10.5 to 3.10.6. - [Release notes](https://github.com/aio-libs/aiohttp/releases) - [Changelog](https://github.com/aio-libs/aiohttp/blob/master/CHANGES.rst) - [Commits](https://github.com/aio-libs/aiohttp/compare/v3.10.5...v3.10.6) --- updated-dependencies: - dependency-name: aiohttp dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index b4b2edc7..8764953e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,7 +2,7 @@ PyYAML==6.0.2 SQLAlchemy==2.0.35 aiofiles==24.1.0 aiohttp-retry==2.8.3 -aiohttp==3.10.5 +aiohttp==3.10.6 aioredis==2.0.1 alembic-postgresql-enum==1.3.0 alembic==1.13.2 From 6739d5c07b2edd7bbb2b4f1d6aae17b5794d6f22 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 25 Sep 2024 15:07:58 +0000 Subject: [PATCH 07/39] Bump bandit[toml] from 1.7.9 to 1.7.10 Bumps [bandit[toml]](https://github.com/PyCQA/bandit) from 1.7.9 to 1.7.10. - [Release notes](https://github.com/PyCQA/bandit/releases) - [Commits](https://github.com/PyCQA/bandit/compare/1.7.9...1.7.10) --- updated-dependencies: - dependency-name: bandit[toml] dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements-tests.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-tests.txt b/requirements-tests.txt index 17b89f24..dbbad14c 100644 --- a/requirements-tests.txt +++ b/requirements-tests.txt @@ -6,4 +6,4 @@ pyfakefs==5.6.0 isort[colors]==5.13.2 black==24.8.0 pylint==3.3.1 -bandit[toml]==1.7.9 +bandit[toml]==1.7.10 From 055b58fd4d7de45b3c10f9bb0b5b5f57d4277fec Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 25 Sep 2024 15:08:01 +0000 Subject: [PATCH 08/39] Bump alembic from 1.13.2 to 1.13.3 Bumps [alembic](https://github.com/sqlalchemy/alembic) from 1.13.2 to 1.13.3. - [Release notes](https://github.com/sqlalchemy/alembic/releases) - [Changelog](https://github.com/sqlalchemy/alembic/blob/main/CHANGES) - [Commits](https://github.com/sqlalchemy/alembic/commits) --- updated-dependencies: - dependency-name: alembic dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index b4b2edc7..d0ba870f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,7 +5,7 @@ aiohttp-retry==2.8.3 aiohttp==3.10.5 aioredis==2.0.1 alembic-postgresql-enum==1.3.0 -alembic==1.13.2 +alembic==1.13.3 asyncpg==0.29.0 dramatiq[rabbitmq, watch]==1.17.0 email-validator>=2.0 From ed83ae2152d5392f7697251b4eb7808faf130d08 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 Sep 2024 15:05:06 +0000 Subject: [PATCH 09/39] Bump uvicorn from 0.30.6 to 0.31.0 Bumps [uvicorn](https://github.com/encode/uvicorn) from 0.30.6 to 0.31.0. - [Release notes](https://github.com/encode/uvicorn/releases) - [Changelog](https://github.com/encode/uvicorn/blob/master/CHANGELOG.md) - [Commits](https://github.com/encode/uvicorn/compare/0.30.6...0.31.0) --- updated-dependencies: - dependency-name: uvicorn dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 8740068c..db9cb87b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -32,7 +32,7 @@ python-multipart>=0.0.7 sentry-sdk[fastapi]==2.14.0 # requires FastAPI>=0.79.0 syncer==2.0.3 tap.py==3.1 -uvicorn==0.30.6 +uvicorn==0.31.0 websockets==13.1 git+https://github.com/AlmaLinux/immudb-wrapper.git@0.1.2#egg=immudb_wrapper git+https://github.com/AlmaLinux/errata2osv.git@0.0.4#egg=errata2osv From f896368e5981153f6d9f5b7d51efc7f3a5ef7c99 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 Sep 2024 15:05:21 +0000 Subject: [PATCH 10/39] Bump aiohttp from 3.10.6 to 3.10.8 Bumps [aiohttp](https://github.com/aio-libs/aiohttp) from 3.10.6 to 3.10.8. - [Release notes](https://github.com/aio-libs/aiohttp/releases) - [Changelog](https://github.com/aio-libs/aiohttp/blob/master/CHANGES.rst) - [Commits](https://github.com/aio-libs/aiohttp/compare/v3.10.6...v3.10.8) --- updated-dependencies: - dependency-name: aiohttp dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 8740068c..5f7360eb 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,7 +2,7 @@ PyYAML==6.0.2 SQLAlchemy==2.0.35 aiofiles==24.1.0 aiohttp-retry==2.8.3 -aiohttp==3.10.6 +aiohttp==3.10.8 aioredis==2.0.1 alembic-postgresql-enum==1.3.0 alembic==1.13.3 From f9eecc5c2e614f3acf96897ab2b38a26c9d92e90 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Oct 2024 15:58:57 +0000 Subject: [PATCH 11/39] Bump sentry-sdk[fastapi] from 2.14.0 to 2.15.0 Bumps [sentry-sdk[fastapi]](https://github.com/getsentry/sentry-python) from 2.14.0 to 2.15.0. - [Release notes](https://github.com/getsentry/sentry-python/releases) - [Changelog](https://github.com/getsentry/sentry-python/blob/master/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-python/compare/2.14.0...2.15.0) --- updated-dependencies: - dependency-name: sentry-sdk[fastapi] dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 8740068c..07be82b1 100644 --- a/requirements.txt +++ b/requirements.txt @@ -29,7 +29,7 @@ psycopg2-binary==2.9.9 pydantic-settings==2.5.2 pydantic==2.9.2 python-multipart>=0.0.7 -sentry-sdk[fastapi]==2.14.0 # requires FastAPI>=0.79.0 +sentry-sdk[fastapi]==2.15.0 # requires FastAPI>=0.79.0 syncer==2.0.3 tap.py==3.1 uvicorn==0.30.6 From 89daa12d7fc2b83f22f350f9389333d24cb89e85 Mon Sep 17 00:00:00 2001 From: Daniil Anfimov Date: Tue, 1 Oct 2024 01:08:36 +0200 Subject: [PATCH 12/39] Add products exporter Resolves: AlmaLinux/build-system#354 --- alws/crud/products.py | 3 +- alws/dependencies.py | 13 +- alws/utils/copr.py | 5 +- alws/utils/exporter.py | 22 +- alws/utils/pulp_client.py | 16 +- scripts/add_export_paths_to_product_repos.py | 48 ++ scripts/exporters/__init__.py | 0 scripts/exporters/base_exporter.py | 182 ++++++ scripts/{ => exporters}/packages_exporter.py | 572 ++++++------------- scripts/exporters/products_exporter.py | 151 +++++ tests/test_scripts/test_packages_exporter.py | 12 +- 11 files changed, 609 insertions(+), 415 deletions(-) create mode 100644 scripts/add_export_paths_to_product_repos.py create mode 100644 scripts/exporters/__init__.py create mode 100644 scripts/exporters/base_exporter.py rename scripts/{ => exporters}/packages_exporter.py (58%) create mode 100644 scripts/exporters/products_exporter.py diff --git a/alws/crud/products.py b/alws/crud/products.py index 2248c2f7..c96b4e8a 100644 --- a/alws/crud/products.py +++ b/alws/crud/products.py @@ -105,7 +105,7 @@ async def create_product( ) task_results = await asyncio.gather(*repo_tasks) - for repo_name, repo_url, arch, pulp_href, is_debug in task_results: + for repo_name, repo_url, arch, pulp_href, export_path, is_debug in task_results: repo = models.Repository( name=repo_name, url=repo_url, @@ -114,6 +114,7 @@ async def create_product( type=arch, debug=is_debug, production=True, + export_path=export_path, ) product.repositories.append(repo) items_to_insert.append(repo) diff --git a/alws/dependencies.py b/alws/dependencies.py index 5c9858de..799739e1 100644 --- a/alws/dependencies.py +++ b/alws/dependencies.py @@ -1,11 +1,16 @@ +from contextlib import asynccontextmanager +from typing import AsyncGenerator + +from fastapi_sqla import open_async_session from redis import asyncio as aioredis +from sqlalchemy.ext.asyncio import AsyncSession from alws.config import settings __all__ = ['get_redis', 'get_async_db_key'] -async def get_redis() -> aioredis.Redis: +async def get_redis() -> AsyncGenerator[aioredis.Redis, None]: client = aioredis.from_url(settings.redis_url) try: yield client @@ -15,3 +20,9 @@ async def get_redis() -> aioredis.Redis: def get_async_db_key() -> str: return "async" + + +@asynccontextmanager +async def get_async_db_session() -> AsyncGenerator[AsyncSession, None]: + async with open_async_session(key=get_async_db_key()) as session: + yield session diff --git a/alws/utils/copr.py b/alws/utils/copr.py index be4a7f21..0db11118 100644 --- a/alws/utils/copr.py +++ b/alws/utils/copr.py @@ -92,7 +92,7 @@ async def create_product_repo( platform_name: str, arch: str, is_debug: bool, -) -> typing.Tuple[str, str, str, str, bool]: +) -> typing.Tuple[str, str, str, str, str, bool]: debug_suffix = '-debug' if is_debug else '' repo_name = ( @@ -104,7 +104,8 @@ async def create_product_repo( create_publication=True, base_path_start='copr', ) - return repo_name, repo_url, arch, repo_href, is_debug + export_path = f"{product_name}/{platform_name}/{'debug/' if is_debug else ''}{arch}/" + return repo_name, repo_url, arch, repo_href, export_path, is_debug async def create_product_sign_key_repo( diff --git a/alws/utils/exporter.py b/alws/utils/exporter.py index 301872e8..311ecd06 100644 --- a/alws/utils/exporter.py +++ b/alws/utils/exporter.py @@ -1,7 +1,7 @@ import os -import typing -import urllib +import urllib.parse from pathlib import Path +from typing import List, Union import aiofiles import aiohttp @@ -12,14 +12,11 @@ async def fs_export_repository( - repository_ids: typing.List[int], db: AsyncSession + repository_ids: List[int], + session: AsyncSession, ): - export_task = await repo_exporter.create_pulp_exporters_to_fs( - db, repository_ids - ) - export_data = await repo_exporter.execute_pulp_exporters_to_fs( - db, export_task - ) + export_task = await repo_exporter.create_pulp_exporters_to_fs(session, repository_ids) + export_data = await repo_exporter.execute_pulp_exporters_to_fs(session, export_task) export_paths = list(export_data.keys()) for repo_elem, repo_data in export_data.items(): repo_url = urllib.parse.urljoin(repo_data, 'repodata/') @@ -32,17 +29,16 @@ async def fs_export_repository( async def get_repodata_file_links(base_url: str): - async with aiohttp.ClientSession() as session: + async with aiohttp.ClientSession(raise_for_status=True) as session: async with session.get(base_url) as response: - response.raise_for_status() content = await response.text() doc = document_fromstring(content) children_urls = [base_url + a.get('href') for a in doc.xpath('//a')] return children_urls -async def download_file(url: str, dest: str): - async with aiohttp.ClientSession() as session: +async def download_file(url: str, dest: Union[str, Path]): + async with aiohttp.ClientSession(raise_for_status=True) as session: async with session.get(url) as response: content = await response.content.read() async with aiofiles.open(dest, 'wb') as f: diff --git a/alws/utils/pulp_client.py b/alws/utils/pulp_client.py index 09e41b84..c6d33313 100644 --- a/alws/utils/pulp_client.py +++ b/alws/utils/pulp_client.py @@ -11,6 +11,7 @@ Any, Dict, List, + Optional, ) import aiohttp @@ -18,6 +19,7 @@ from aiohttp_retry import ExponentialRetry, RetryClient from fastapi import status +from alws.config import settings from alws.constants import UPLOAD_FILE_CHUNK_SIZE from alws.utils.file_utils import hash_content, hash_file from alws.utils.ids import get_random_unique_version @@ -31,7 +33,7 @@ def __init__( host: str, username: str, password: str, - semaphore: asyncio.Semaphore = None, + semaphore: Optional[asyncio.Semaphore] = None, ): self.semaphore = semaphore self._host = host @@ -875,8 +877,7 @@ async def list_filesystem_exporters(self): result = await self.request("GET", endpoint) if result["count"] > 0: return result["results"] - else: - return [] + return [] async def get_filesystem_exporter(self, fse_pulp_href: str): return await self.request("GET", fse_pulp_href) @@ -1050,3 +1051,12 @@ async def request( exc.message += f": {str(response_json)}" raise exc return response_json + + +def get_pulp_client(semaphore: Optional[asyncio.Semaphore] = None) -> PulpClient: + return PulpClient( + host=settings.pulp_host, + username=settings.pulp_user, + password=settings.pulp_password, + semaphore=semaphore, + ) diff --git a/scripts/add_export_paths_to_product_repos.py b/scripts/add_export_paths_to_product_repos.py new file mode 100644 index 00000000..bd03cd6e --- /dev/null +++ b/scripts/add_export_paths_to_product_repos.py @@ -0,0 +1,48 @@ +import os +import re +import sys + +sys.path.append(os.path.dirname(os.path.dirname(__file__))) + +from fastapi_sqla import open_session +from sqlalchemy import select +from sqlalchemy.orm import joinedload + +from alws.models import Product +from alws.utils.fastapi_sqla_setup import sync_setup + + +def main(): + sync_setup() + with open_session() as session: + for product in ( + session.execute( + select(Product) + .where(Product.is_community.is_(True)) + .options(joinedload(Product.repositories), joinedload(Product.platforms)) + ) + .scalars() + .unique() + .all() + ): + if not product.repositories: + continue + platform_names = '|'.join((platform.name for platform in product.platforms)) + platform_pattern = re.compile( + rf'-({platform_names})-(\w+)(-debug|)-dr$', + flags=re.IGNORECASE, + ) + for repo in product.repositories: + if repo.arch == 'sign_key': + continue + regex_result = platform_pattern.search(repo.name) + if not regex_result: + continue + platform, *_ = regex_result.groups() + repo.export_path = ( + f"{product.name}/{platform}/{'debug/' if repo.debug else ''}{repo.arch}/" + ) + + +if __name__ == '__main__': + main() diff --git a/scripts/exporters/__init__.py b/scripts/exporters/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/scripts/exporters/base_exporter.py b/scripts/exporters/base_exporter.py new file mode 100644 index 00000000..de2c18c3 --- /dev/null +++ b/scripts/exporters/base_exporter.py @@ -0,0 +1,182 @@ +import asyncio +import logging +import re +import shutil +import sys +import urllib.parse +from pathlib import Path +from typing import List, Literal, Optional, Tuple + +from plumbum import local +from sqlalchemy import select + +from alws.config import settings +from alws.dependencies import get_async_db_session +from alws.models import Repository +from alws.utils.exporter import download_file, get_repodata_file_links +from alws.utils.pulp_client import get_pulp_client + + +class BasePulpExporter: + def __init__( + self, + repodata_cache_dir: str, + logger_name: str = '', + log_file_path: Path = Path('/tmp/exporter.log'), + verbose: bool = False, + export_method: Literal['write', 'hardlink', 'symlink'] = 'hardlink', + export_path: str = settings.pulp_export_path, + ): + self.pulp_client = get_pulp_client() + self.export_method = export_method + self.export_path = export_path + self.createrepo_c = local["createrepo_c"] + + self.repodata_cache_dir = Path(repodata_cache_dir).expanduser().absolute() + self.checksums_cache_dir = self.repodata_cache_dir.joinpath('checksums') + for dir_path in (self.repodata_cache_dir, self.checksums_cache_dir): + if dir_path.exists(): + continue + dir_path.mkdir() + + self.logger = logging.getLogger(logger_name) + Path(log_file_path).parent.mkdir(exist_ok=True) + logging.basicConfig( + format="%(asctime)s %(levelname)-8s %(message)s", + level=logging.DEBUG if verbose else logging.INFO, + datefmt="%Y-%m-%d %H:%M:%S", + handlers=[ + logging.FileHandler(filename=log_file_path, mode="a"), + logging.StreamHandler(stream=sys.stdout), + ], + ) + + def regenerate_repo_metadata(self, repo_path: str): + partial_path = re.sub(str(settings.pulp_export_path), "", str(repo_path)).strip("/") + repodata_path = Path(repo_path, "repodata") + repo_repodata_cache = self.repodata_cache_dir.joinpath(partial_path) + cache_repodata_dir = repo_repodata_cache.joinpath("repodata") + self.logger.info('Repodata cache dir: %s', cache_repodata_dir) + args = [ + "--update", + "--keep-all-metadata", + "--cachedir", + self.checksums_cache_dir, + ] + if repo_repodata_cache.exists(): + args.extend(["--update-md-path", cache_repodata_dir]) + args.append(repo_path) + self.logger.info('Starting createrepo_c') + _, stdout, _ = self.createrepo_c.run(args=args) + self.logger.info(stdout) + self.logger.info('createrepo_c is finished') + # Cache newly generated repodata into folder for future re-use + if not repo_repodata_cache.exists(): + repo_repodata_cache.mkdir(parents=True) + else: + # Remove previous repodata before copying new ones + if cache_repodata_dir.exists(): + shutil.rmtree(cache_repodata_dir) + + shutil.copytree(repodata_path, cache_repodata_dir) + + async def create_filesystem_exporters( + self, + repository_ids: List[int], + get_publications: bool = False, + ): + async def get_exporter_data(repository: Repository) -> Tuple[str, dict]: + export_path = str(Path(self.export_path, repository.export_path, "Packages")) + exporter_name = ( + f"{repository.name}-{repository.arch}-debug" + if repository.debug + else f"{repository.name}-{repository.arch}" + ) + fs_exporter_href = await self.pulp_client.create_filesystem_exporter( + exporter_name, + export_path, + export_method=self.export_method, + ) + + repo_latest_version = await self.pulp_client.get_repo_latest_version( + repository.pulp_href + ) + if not repo_latest_version: + raise ValueError('cannot find latest repo version') + repo_exporter_dict = { + "repo_id": repository.id, + "repo_url": repository.url, + "repo_latest_version": repo_latest_version, + "exporter_name": exporter_name, + "export_path": export_path, + "exporter_href": fs_exporter_href, + } + if get_publications: + publications = await self.pulp_client.get_rpm_publications( + repository_version_href=repo_latest_version, + include_fields=["pulp_href"], + ) + if publications: + publication_href = publications[0].get("pulp_href") + repo_exporter_dict["publication_href"] = publication_href + return fs_exporter_href, repo_exporter_dict + + async with get_async_db_session() as session: + query = select(Repository).where(Repository.id.in_(repository_ids)) + result = await session.execute(query) + repositories = list(result.scalars().all()) + + results = await asyncio.gather(*(get_exporter_data(repo) for repo in repositories)) + + return list(dict(results).values()) + + async def download_repodata(self, repodata_path, repodata_url): + file_links = await get_repodata_file_links(repodata_url) + for link in file_links: + file_name = Path(link).name + if file_name.endswith('..'): + continue + self.logger.info("Downloading repodata from %s", link) + await download_file(link, Path(repodata_path, file_name)) + + async def _export_repository(self, exporter: dict) -> Optional[str]: + self.logger.info( + "Exporting repository using following data: %s", + str(exporter), + ) + export_path = exporter["export_path"] + href = exporter["exporter_href"] + repository_version = exporter["repo_latest_version"] + try: + await self.pulp_client.export_to_filesystem(href, repository_version) + except Exception: + self.logger.exception( + "Cannot export repository via %s", + str(exporter), + ) + return + parent_dir = Path(export_path).parent + if not parent_dir.exists(): + self.logger.info( + "Repository %s directory is absent", + exporter["exporter_name"], + ) + return + + repodata_path = parent_dir.joinpath("repodata").absolute() + repodata_url = urllib.parse.urljoin(exporter["repo_url"], "repodata/") + if repodata_path.exists(): + shutil.rmtree(repodata_path) + repodata_path.mkdir() + self.logger.info('Downloading repodata from %s', repodata_url) + try: + await self.download_repodata(repodata_path, repodata_url) + except Exception as e: + self.logger.exception("Cannot download repodata file: %s", str(e)) + + return export_path + + async def export_repositories(self, repo_ids: List[int]) -> List[str]: + exporters = await self.create_filesystem_exporters(repo_ids) + results = await asyncio.gather(*(self._export_repository(e) for e in exporters)) + return [path for path in results if path] diff --git a/scripts/packages_exporter.py b/scripts/exporters/packages_exporter.py similarity index 58% rename from scripts/packages_exporter.py rename to scripts/exporters/packages_exporter.py index 4c98843e..a0dd54a9 100644 --- a/scripts/packages_exporter.py +++ b/scripts/exporters/packages_exporter.py @@ -5,15 +5,13 @@ import os import pwd import re -import shutil import sys -import tempfile -import typing import urllib.parse from concurrent.futures import ThreadPoolExecutor, as_completed from datetime import datetime, timezone from pathlib import Path from time import time +from typing import Any, Dict, List, Literal, Optional, Tuple, Union import aiohttp import jmespath @@ -25,11 +23,12 @@ # Required for generating RSS from feedgen.feed import FeedGenerator -from plumbum import local from sqlalchemy.future import select from sqlalchemy.orm import selectinload from syncer import sync +from scripts.exporters.base_exporter import BasePulpExporter + sys.path.append(os.path.dirname(os.path.dirname(__file__))) @@ -46,14 +45,10 @@ merge_errata_records, merge_errata_records_modern, ) -from alws.utils.exporter import download_file, get_repodata_file_links from alws.utils.fastapi_sqla_setup import setup_all from alws.utils.osv import export_errata_to_osv -from alws.utils.pulp_client import PulpClient -KNOWN_SUBKEYS_CONFIG = os.path.abspath( - os.path.expanduser("~/config/known_subkeys.json") -) +KNOWN_SUBKEYS_CONFIG = os.path.abspath(os.path.expanduser("~/config/known_subkeys.json")) LOG_DIR = Path.home() / "exporter_logs" LOGGER_NAME = "packages-exporter" LOG_FILE = LOG_DIR / f"{LOGGER_NAME}_{int(time())}.log" @@ -142,51 +137,34 @@ def init_sentry(): ) -class Exporter: +class PackagesExporter(BasePulpExporter): def __init__( self, - pulp_client: PulpClient, repodata_cache_dir: str, + logger_name: str = '', + log_file_path: Path = Path('/tmp/exporter.log'), verbose: bool = False, - export_method: str = "hardlink", + export_method: Literal['write', 'hardlink', 'symlink'] = "hardlink", + export_path: str = settings.pulp_export_path, osv_dir: str = settings.pulp_export_path, ): - os.makedirs(LOG_DIR, exist_ok=True) - logging.basicConfig( - format="%(asctime)s %(levelname)-8s %(message)s", - level=logging.DEBUG if verbose else logging.INFO, - datefmt="%Y-%m-%d %H:%M:%S", - handlers=[ - logging.FileHandler(filename=LOG_FILE, mode="a"), - logging.StreamHandler(stream=sys.stdout), - ], + super().__init__( + repodata_cache_dir=repodata_cache_dir, + logger_name=logger_name, + log_file_path=log_file_path, + verbose=verbose, + export_method=export_method, + export_path=export_path, ) - self._temp_dir = tempfile.gettempdir() - self.logger = logging.getLogger(LOGGER_NAME) - self.pulp_client = pulp_client - self.createrepo_c = local["createrepo_c"] self.web_server_headers = { "Authorization": f"Bearer {settings.albs_jwt_token}", } - self.export_method = export_method self.osv_dir = osv_dir self.current_user = self.get_current_username() - self.export_error_file = os.path.abspath( - os.path.expanduser("~/export.err") - ) + self.export_error_file = os.path.abspath(os.path.expanduser("~/export.err")) if os.path.exists(self.export_error_file): os.remove(self.export_error_file) - self.repodata_cache_dir = os.path.abspath( - os.path.expanduser(repodata_cache_dir) - ) - self.checksums_cache_dir = os.path.join( - self.repodata_cache_dir, "checksums" - ) - if not os.path.exists(self.repodata_cache_dir): - os.makedirs(self.repodata_cache_dir) - if not os.path.exists(self.checksums_cache_dir): - os.makedirs(self.checksums_cache_dir) self.known_subkeys = {} if os.path.exists(KNOWN_SUBKEYS_CONFIG): with open(KNOWN_SUBKEYS_CONFIG, "rt") as f: @@ -198,7 +176,7 @@ def get_current_username(): def process_osv_data( self, - errata_cache: typing.List[typing.Dict[str, typing.Any]], + errata_cache: List[Dict[str, Any]], platform: str, ): osv_distr_mapping = { @@ -224,102 +202,36 @@ async def make_request( self, method: str, endpoint: str, - params: dict = None, - body: dict = None, - user_headers: dict = None, - data: typing.Optional[list] = None, - send_to: typing.Literal['web_server', 'sign_server'] = 'web_server', - ): + params: Optional[dict] = None, + body: Optional[dict] = None, + user_headers: Optional[dict] = None, + data: Optional[list] = None, + send_to: Literal['web_server', 'sign_server'] = 'web_server', + ) -> Union[dict, str]: if send_to == 'web_server': headers = {**self.web_server_headers} full_url = urllib.parse.urljoin(settings.albs_api_url, endpoint) elif send_to == 'sign_server': headers = {} - full_url = urllib.parse.urljoin( - settings.sign_server_api_url, endpoint - ) + full_url = urllib.parse.urljoin(settings.sign_server_api_url, endpoint) else: - raise ValueError( - "send_to parameter must be either web_server or sign_server" - ) + raise ValueError("send_to parameter must be either web_server or sign_server") if user_headers: headers.update(user_headers) - async with aiohttp.ClientSession( - headers=headers, raise_for_status=True - ) as session: + async with aiohttp.ClientSession(headers=headers, raise_for_status=True) as session: async with session.request( - method, full_url, json=body, params=params, data=data + method, + full_url, + json=body, + params=params, + data=data, ) as response: if response.headers['Content-Type'] == 'application/json': return await response.json() return await response.text() - async def create_filesystem_exporters( - self, - repository_ids: typing.List[int], - get_publications: bool = False, - ): - async def get_exporter_data( - repository: models.Repository, - ) -> typing.Tuple[str, dict]: - export_path = str( - Path( - settings.pulp_export_path, - repository.export_path, - "Packages", - ) - ) - exporter_name = ( - f"{repository.name}-{repository.arch}-debug" - if repository.debug - else f"{repository.name}-{repository.arch}" - ) - fs_exporter_href = ( - await self.pulp_client.create_filesystem_exporter( - exporter_name, - export_path, - export_method=self.export_method, - ) - ) - - repo_latest_version = ( - await self.pulp_client.get_repo_latest_version( - repository.pulp_href - ) - ) - repo_exporter_dict = { - "repo_id": repository.id, - "repo_url": repository.url, - "repo_latest_version": repo_latest_version, - "exporter_name": exporter_name, - "export_path": export_path, - "exporter_href": fs_exporter_href, - } - if get_publications: - publications = await self.pulp_client.get_rpm_publications( - repository_version_href=repo_latest_version, - include_fields=["pulp_href"], - ) - if publications: - publication_href = publications[0].get("pulp_href") - repo_exporter_dict["publication_href"] = publication_href - return fs_exporter_href, repo_exporter_dict - - async with open_async_session(key=get_async_db_key()) as db: - query = select(models.Repository).where( - models.Repository.id.in_(repository_ids) - ) - result = await db.execute(query) - repositories = list(result.scalars().all()) - - results = await asyncio.gather( - *(get_exporter_data(repo) for repo in repositories) - ) - - return list(dict(results).values()) - async def sign_repomd_xml(self, path_to_file: str, key_id: str, token: str): endpoint = "sign" result = {"asc_content": None, "error": None} @@ -342,9 +254,7 @@ async def get_sign_keys(self): return await self.make_request("GET", endpoint) # TODO: Use direct function call to alws.crud.errata_get_oval_xml - async def get_oval_xml( - self, platform_name: str, only_released: bool = False - ): + async def get_oval_xml(self, platform_name: str, only_released: bool = False): endpoint = "errata/get_oval_xml/" return await self.make_request( "GET", @@ -361,9 +271,7 @@ async def generate_rss(self, platform, modern_cache): dist_version = platform.split('-')[-1] errata_data = modern_cache['data'] - sorted_errata_data = sorted( - errata_data, key=lambda k: k['updated_date'], reverse=True - ) + sorted_errata_data = sorted(errata_data, key=lambda k: k['updated_date'], reverse=True) feed = FeedGenerator() feed.title(f'Errata Feed for {dist_name}') @@ -375,75 +283,17 @@ async def generate_rss(self, platform, modern_cache): html_erratum_id = erratum['id'].replace(':', '-') title = f"[{erratum['id']}] {erratum['title']}" link = f"https://errata.almalinux.org/{dist_version}/{html_erratum_id}.html" - pubDate = datetime.fromtimestamp( - erratum['updated_date'], timezone.utc - ) + pub_date = datetime.fromtimestamp(erratum['updated_date'], timezone.utc) content = f"
{erratum['description']}
" entry = feed.add_entry() entry.title(title) entry.link(href=link) entry.content(content, type='CDATA') - entry.pubDate(pubDate) + entry.pubDate(pub_date) return feed.rss_str(pretty=True).decode('utf-8') - async def download_repodata(self, repodata_path, repodata_url): - file_links = await get_repodata_file_links(repodata_url) - for link in file_links: - file_name = os.path.basename(link) - self.logger.info("Downloading repodata from %s", link) - await download_file(link, os.path.join(repodata_path, file_name)) - - async def _export_repository(self, exporter: dict) -> typing.Optional[str]: - self.logger.info( - "Exporting repository using following data: %s", - str(exporter), - ) - export_path = exporter["export_path"] - href = exporter["exporter_href"] - repository_version = exporter["repo_latest_version"] - try: - await self.pulp_client.export_to_filesystem( - href, repository_version - ) - except Exception: - self.logger.exception( - "Cannot export repository via %s", - str(exporter), - ) - return - parent_dir = str(Path(export_path).parent) - if not os.path.exists(parent_dir): - self.logger.info( - "Repository %s directory is absent", - exporter["exporter_name"], - ) - return - - repodata_path = os.path.abspath(os.path.join(parent_dir, "repodata")) - repodata_url = urllib.parse.urljoin(exporter["repo_url"], "repodata/") - if not os.path.exists(repodata_path): - os.makedirs(repodata_path) - else: - shutil.rmtree(repodata_path) - os.makedirs(repodata_path) - self.logger.info('Downloading repodata from %s', repodata_url) - try: - await self.download_repodata(repodata_path, repodata_url) - except Exception as e: - self.logger.exception("Cannot download repodata file: %s", str(e)) - - return export_path - - async def export_repositories(self, repo_ids: list) -> typing.List[str]: - exporters = await self.create_filesystem_exporters(repo_ids) - results = await asyncio.gather( - *(self._export_repository(e) for e in exporters) - ) - exported_paths = [i for i in results if i] - return exported_paths - async def repomd_signer(self, repodata_path, key_id, token): string_repodata_path = str(repodata_path) if key_id is None: @@ -476,13 +326,14 @@ def check_rpms_signature(self, repository_path: str, sign_keys: list): ts = rpm.TransactionSet() ts.setVSFlags(rpm._RPMVSF_NOSIGNATURES) - def check(pkg_path: str) -> typing.Tuple[SignStatusEnum, str]: + def check(pkg_path: str) -> Tuple[SignStatusEnum, str]: if not os.path.exists(pkg_path): return SignStatusEnum.READ_ERROR, "" with open(pkg_path, "rb") as fd: header = ts.hdrFromFdno(fd) signature = header[rpm.RPMTAG_SIGGPG] + sig = "" if not signature: signature = header[rpm.RPMTAG_SIGPGP] if not signature: @@ -527,11 +378,7 @@ def check(pkg_path: str) -> typing.Tuple[SignStatusEnum, str]: elif result == SignStatusEnum.WRONG_SIGNATURE: wrong_signature_packages.add(f"{package_path} {pkg_sig}") - if ( - errored_packages - or no_signature_packages - or wrong_signature_packages - ): + if errored_packages or no_signature_packages or wrong_signature_packages: if not os.path.exists(self.export_error_file): mode = "wt" else: @@ -554,10 +401,10 @@ def check(pkg_path: str) -> typing.Tuple[SignStatusEnum, str]: async def export_repos_from_pulp( self, - platform_names: typing.List[str] = None, - repo_ids: typing.List[int] = None, - arches: typing.List[str] = None, - ) -> typing.Tuple[typing.List[str], typing.Dict[int, str]]: + platform_names: Optional[List[str]] = None, + repo_ids: Optional[List[int]] = None, + arches: Optional[List[str]] = None, + ) -> Tuple[List[str], Dict[int, str]]: platforms_dict = {} msg, msg_values = ( "Start exporting packages for following platforms:\n%s", @@ -603,9 +450,7 @@ async def export_repos_from_pulp( else: platforms_dict[db_platform.id].append(repo.export_path) repo_ids_to_export.append(repo.id) - exported_paths = await self.export_repositories( - list(set(repo_ids_to_export)) - ) + exported_paths = await self.export_repositories(list(set(repo_ids_to_export))) final_export_paths.extend(exported_paths) with ThreadPoolExecutor(max_workers=10) as executor: futures = {} @@ -622,9 +467,7 @@ async def export_repos_from_pulp( ] = repo_path for future in as_completed(futures): repo_path = futures[future] - self.logger.info( - '%s packages signatures are checked', repo_path - ) + self.logger.info('%s packages signatures are checked', repo_path) self.logger.debug( "All repositories exported in following paths:\n%s", "\n".join((str(path) for path in exported_paths)), @@ -634,56 +477,19 @@ async def export_repos_from_pulp( async def export_repos_from_release( self, release_id: int, - ) -> typing.Tuple[typing.List[str], int]: - self.logger.info( - "Start exporting packages from release id=%s", release_id - ) + ) -> Tuple[List[str], int]: + self.logger.info("Start exporting packages from release id=%s", release_id) async with open_async_session(key=get_async_db_key()) as db: db_release = await db.execute( select(models.Release).where(models.Release.id == release_id) ) db_release = db_release.scalars().first() - repo_ids = jmespath.search( - "packages[].repositories[].id", db_release.plan - ) + repo_ids = jmespath.search("packages[].repositories[].id", db_release.plan) repo_ids = list(set(repo_ids)) exported_paths = await self.export_repositories(repo_ids) return exported_paths, db_release.platform_id - def regenerate_repo_metadata(self, repo_path): - partial_path = re.sub( - str(settings.pulp_export_path), "", str(repo_path) - ).strip("/") - repodata_path = os.path.join(repo_path, "repodata") - repo_repodata_cache = os.path.join( - self.repodata_cache_dir, partial_path - ) - cache_repodata_dir = os.path.join(repo_repodata_cache, "repodata") - self.logger.info('Repodata cache dir: %s', cache_repodata_dir) - args = [ - "--update", - "--keep-all-metadata", - "--cachedir", - self.checksums_cache_dir, - ] - if os.path.exists(repo_repodata_cache): - args.extend(["--update-md-path", cache_repodata_dir]) - args.append(repo_path) - self.logger.info('Starting createrepo_c') - _, stdout, _ = self.createrepo_c.run(args=args) - self.logger.info(stdout) - self.logger.info('createrepo_c is finished') - # Cache newly generated repodata into folder for future re-use - if not os.path.exists(repo_repodata_cache): - os.makedirs(repo_repodata_cache) - else: - # Remove previous repodata before copying new ones - if os.path.exists(cache_repodata_dir): - shutil.rmtree(cache_repodata_dir) - - shutil.copytree(repodata_path, cache_repodata_dir) - async def get_sign_server_token(self) -> str: body = { 'email': settings.sign_server_username, @@ -692,17 +498,20 @@ async def get_sign_server_token(self) -> str: endpoint = 'token' method = 'POST' response = await self.make_request( - method=method, endpoint=endpoint, body=body, send_to='sign_server' + method=method, + endpoint=endpoint, + body=body, + send_to='sign_server', ) return response['token'] async def sign_repodata( - exporter: Exporter, - exported_paths: typing.List[str], + exporter: PackagesExporter, + exported_paths: List[str], platforms_dict: dict, db_sign_keys: list, - key_id_by_platform: str = None, + key_id_by_platform: Optional[str] = None, ): repodata_paths = [] @@ -737,9 +546,9 @@ async def sign_repodata( await asyncio.gather(*tasks) -def extract_errata(repo_path: str): - errata_records = [] - modern_errata_records = [] +def extract_errata(repo_path: str) -> Tuple[List[dict], List[dict]]: + errata_records: List[dict] = [] + modern_errata_records: List[dict] = [] if not os.path.exists(repo_path): logging.debug("%s is missing, skipping", repo_path) return errata_records, modern_errata_records @@ -754,26 +563,123 @@ def extract_errata(repo_path: str): for record in iter_updateinfo(errata_file): errata_records.append(extract_errata_metadata(record)) - modern_errata_records.extend( - extract_errata_metadata_modern(record)["data"] - ) + modern_errata_records.extend(extract_errata_metadata_modern(record)["data"]) return errata_records, modern_errata_records -def repo_post_processing(exporter: Exporter, repo_path: str): - path = Path(repo_path) - parent_dir = path.parent - +def repo_post_processing(exporter: PackagesExporter, repo_path: str) -> bool: result = True try: - exporter.regenerate_repo_metadata(parent_dir) + exporter.regenerate_repo_metadata(str(Path(repo_path).parent)) except Exception as e: exporter.logger.exception("Post-processing failed: %s", str(e)) result = False - return result +def export_errata_and_oval( + exporter: PackagesExporter, + platform_errata_cache: dict, + platform_names: Optional[List[str]] = None, +): + if not platform_names: + return + exporter.logger.info("Starting export errata.json and oval.xml") + errata_export_base_path = None + try: + errata_export_base_path = os.path.join(settings.pulp_export_path, "errata") + if not os.path.exists(errata_export_base_path): + os.mkdir(errata_export_base_path) + for platform in platform_names: + platform_path = os.path.join(errata_export_base_path, platform) + if not os.path.exists(platform_path): + os.mkdir(platform_path) + html_path = os.path.join(platform_path, "html") + if not os.path.exists(html_path): + os.mkdir(html_path) + errata_cache = platform_errata_cache[platform]["cache"] + exporter.process_osv_data(errata_cache, platform) + exporter.logger.debug("Generating HTML errata pages") + for record in errata_cache: + generate_errata_page(record, html_path) + exporter.logger.debug("HTML pages are generated") + for item in errata_cache: + item["issued_date"] = {"$date": int(item["issued_date"].timestamp() * 1000)} + item["updated_date"] = {"$date": int(item["updated_date"].timestamp() * 1000)} + exporter.logger.debug("Dumping errata data into JSON") + with open(os.path.join(platform_path, "errata.json"), "w") as fd: + json.dump(errata_cache, fd) + with open(os.path.join(platform_path, "errata.full.json"), "w") as fd: + json.dump(platform_errata_cache[platform]["modern_cache"], fd) + exporter.logger.debug("JSON dump is done") + exporter.logger.debug("Generating OVAL data") + oval = sync( + # aiohttp is not able to send booleans in params. + # For this reason, we're passing only_released as a string, + # which in turn will be converted into boolean on backend + # side by fastapi/pydantic. + exporter.get_oval_xml(platform, only_released=True) + ) + with open(os.path.join(platform_path, "oval.xml"), "w") as fd: + fd.write(oval) + exporter.logger.debug("OVAL is generated") + + exporter.logger.debug("Generating RSS feed for %s", platform) + rss = sync( + exporter.generate_rss( + platform, + platform_errata_cache[platform]["modern_cache"], + ) + ) + with open(os.path.join(platform_path, "errata.rss"), "w") as fd: + fd.write(rss) + exporter.logger.debug("RSS generation for %s is done", platform) + except Exception: + exporter.logger.exception("Error happened:\n") + + +def extract_errata_from_exported_paths( + exporter: PackagesExporter, + exported_paths: List[str], + platform_regex: re.Pattern, +) -> dict: + platform_errata_cache = {} + with ThreadPoolExecutor(max_workers=4) as executor: + errata_futures = { + executor.submit(extract_errata, exp_path): exp_path for exp_path in exported_paths + } + + exporter.logger.debug("Starting errata extraction") + for future in as_completed(errata_futures): + repo_path = errata_futures[future] + errata_records, modern_errata_records = future.result() + if errata_records or modern_errata_records: + exporter.logger.info( + "Extracted errata records from %s", + repo_path, + ) + platform = "AlmaLinux-8" + if platform_regex.search(repo_path): + platform = "AlmaLinux-9" + if platform not in platform_errata_cache: + platform_errata_cache[platform] = { + "cache": [], + "modern_cache": { + "data": [], + }, + } + platform_cache = platform_errata_cache[platform] + platform_cache["cache"] = merge_errata_records( + platform_cache["cache"], errata_records + ) + platform_cache["modern_cache"] = merge_errata_records_modern( + platform_cache["modern_cache"], + {"data": modern_errata_records}, + ) + exporter.logger.debug("Errata extraction completed") + return platform_errata_cache + + def main(): args = parse_args() init_sentry() @@ -782,27 +688,18 @@ def main(): platforms_dict = {} key_id_by_platform = None exported_paths = [] - pulp_client = PulpClient( - settings.pulp_host, - settings.pulp_user, - settings.pulp_password, - ) - exporter = Exporter( - pulp_client, - args.cache_dir, + exporter = PackagesExporter( + repodata_cache_dir=args.cache_dir, + logger_name=LOGGER_NAME, + log_file_path=LOG_FILE, verbose=args.verbose, export_method=args.export_method, - pulp_user=args.pulp_user, - pulp_group=args.pulp_group, osv_dir=args.osv_dir, ) db_sign_keys = sync(exporter.get_sign_keys()) if args.release_id: - release_id = args.release_id - exported_paths, platform_id = sync( - exporter.export_repos_from_release(release_id) - ) + exported_paths, platform_id = sync(exporter.export_repos_from_release(args.release_id)) key_id_by_platform = next( ( sign_key["keyid"] @@ -813,72 +710,33 @@ def main(): ) if args.platform_names or args.repo_ids: - platform_names = args.platform_names - repo_ids = args.repo_ids exported_paths, platforms_dict = sync( exporter.export_repos_from_pulp( - platform_names=platform_names, + platform_names=args.platform_names, arches=args.arches, - repo_ids=repo_ids, + repo_ids=args.repo_ids, ) ) - platform_errata_cache = {} - platform_regex = re.compile(r"\/(almalinux|vault)\/9\/") - with ThreadPoolExecutor(max_workers=4) as executor: post_processing_futures = { - executor.submit( - repo_post_processing, exporter, repo_path - ): repo_path + executor.submit(repo_post_processing, exporter, repo_path): repo_path for repo_path in exported_paths } for future in as_completed(post_processing_futures): repo_path = post_processing_futures[future] result = future.result() if result: - exporter.logger.info( - "%s post-processing is successful", repo_path - ) + exporter.logger.info("%s post-processing is successful", repo_path) else: - exporter.logger.error( - "%s post-processing has failed", repo_path - ) + exporter.logger.error("%s post-processing has failed", repo_path) - with ThreadPoolExecutor(max_workers=4) as executor: - errata_futures = { - executor.submit(extract_errata, exp_path): exp_path - for exp_path in exported_paths - } - - exporter.logger.debug("Starting errata extraction") - for future in as_completed(errata_futures): - repo_path = errata_futures[future] - errata_records, modern_errata_records = future.result() - if errata_records or modern_errata_records: - exporter.logger.info( - "Extracted errata records from %s", - repo_path, - ) - platform = "AlmaLinux-8" - if platform_regex.search(repo_path): - platform = "AlmaLinux-9" - if platform not in platform_errata_cache: - platform_errata_cache[platform] = { - "cache": [], - "modern_cache": { - "data": [], - }, - } - platform_cache = platform_errata_cache[platform] - platform_cache["cache"] = merge_errata_records( - platform_cache["cache"], errata_records - ) - platform_cache["modern_cache"] = merge_errata_records_modern( - platform_cache["modern_cache"], - {"data": modern_errata_records}, - ) - exporter.logger.debug("Errata extraction completed") + platform_regex = re.compile(r"\/(almalinux|vault)\/9\/") + platform_errata_cache = extract_errata_from_exported_paths( + exporter=exporter, + exported_paths=exported_paths, + platform_regex=platform_regex, + ) sync( sign_repodata( @@ -890,71 +748,11 @@ def main(): ) ) - if args.platform_names: - exporter.logger.info("Starting export errata.json and oval.xml") - errata_export_base_path = None - try: - errata_export_base_path = os.path.join( - settings.pulp_export_path, "errata" - ) - if not os.path.exists(errata_export_base_path): - os.mkdir(errata_export_base_path) - for platform in args.platform_names: - platform_path = os.path.join(errata_export_base_path, platform) - if not os.path.exists(platform_path): - os.mkdir(platform_path) - html_path = os.path.join(platform_path, "html") - if not os.path.exists(html_path): - os.mkdir(html_path) - errata_cache = platform_errata_cache[platform]["cache"] - exporter.process_osv_data(errata_cache, platform) - exporter.logger.debug("Generating HTML errata pages") - for record in errata_cache: - generate_errata_page(record, html_path) - exporter.logger.debug("HTML pages are generated") - for item in errata_cache: - item["issued_date"] = { - "$date": int(item["issued_date"].timestamp() * 1000) - } - item["updated_date"] = { - "$date": int(item["updated_date"].timestamp() * 1000) - } - exporter.logger.debug("Dumping errata data into JSON") - with open( - os.path.join(platform_path, "errata.json"), "w" - ) as fd: - json.dump(errata_cache, fd) - with open( - os.path.join(platform_path, "errata.full.json"), "w" - ) as fd: - json.dump( - platform_errata_cache[platform]["modern_cache"], fd - ) - exporter.logger.debug("JSON dump is done") - exporter.logger.debug("Generating OVAL data") - oval = sync( - # aiohttp is not able to send booleans in params. - # For this reason, we're passing only_released as a string, - # which in turn will be converted into boolean on backend - # side by fastapi/pydantic. - exporter.get_oval_xml(platform, only_released=True) - ) - with open(os.path.join(platform_path, "oval.xml"), "w") as fd: - fd.write(oval) - exporter.logger.debug("OVAL is generated") - - exporter.logger.debug(f"Generating RSS feed for {platform}") - rss = sync( - exporter.generate_rss( - platform, - platform_errata_cache[platform]["modern_cache"], - ) - ) - with open(os.path.join(platform_path, "errata.rss"), "w") as fd: - fd.write(rss) - exporter.logger.debug(f"RSS generation for {platform} is done") - except Exception: - exporter.logger.exception("Error happened:\n") + export_errata_and_oval( + exporter=exporter, + platform_errata_cache=platform_errata_cache, + platform_names=args.platform_names, + ) if __name__ == "__main__": diff --git a/scripts/exporters/products_exporter.py b/scripts/exporters/products_exporter.py new file mode 100644 index 00000000..ae2f0cb9 --- /dev/null +++ b/scripts/exporters/products_exporter.py @@ -0,0 +1,151 @@ +import argparse +import asyncio +import sys +from pathlib import Path +from typing import List, Literal + +from sqlalchemy import select +from sqlalchemy.orm import joinedload + +sys.path.append(str(Path(__file__).parent.parent)) + +from alws.config import settings +from alws.dependencies import get_async_db_session +from alws.models import Platform, Product, Repository +from alws.utils.fastapi_sqla_setup import setup_all +from scripts.exporters.base_exporter import BasePulpExporter + +SEMAPHORE = asyncio.Semaphore(4) + + +def parse_args(): + parser = argparse.ArgumentParser( + "products-exporter", + description=( + "Products exporter script. Export product repositories " + "from Pulp and transfer them to the filesystem" + ), + ) + parser.add_argument( + "-p", + "--product", + type=str, + required=True, + help="Product name to export", + ) + parser.add_argument( + "-d", + "--distribution", + type=str, + required=True, + help="Distribution name to export", + ) + parser.add_argument( + "-a", + "--arches", + type=str, + nargs="+", + required=True, + help="List of arches to export", + ) + parser.add_argument( + "-c", + "--cache-dir", + type=str, + default="~/.cache/pulp_product_exporter", + required=False, + help="Repodata cache directory", + ) + parser.add_argument( + "-v", + "--verbose", + action="store_true", + default=False, + required=False, + help="Verbose output", + ) + parser.add_argument( + "-method", + "--export-method", + type=str, + default="hardlink", + required=False, + help="Method of exporting (choices: write, hardlink, symlink)", + ) + return parser.parse_args() + + +class ProductExporter(BasePulpExporter): + def __init__( + self, + repodata_cache_dir: str, + logger_name: str = 'product-exporter', + log_file_path: Path = Path('/tmp/product-exporter.log'), + verbose: bool = False, + export_method: Literal['write', 'hardlink', 'symlink'] = 'hardlink', + export_path: str = settings.pulp_export_path, + ): + super().__init__( + repodata_cache_dir=repodata_cache_dir, + logger_name=logger_name, + log_file_path=log_file_path, + verbose=verbose, + export_method=export_method, + export_path=export_path, + ) + + async def export_product_repos( + self, + product_name: str, + distr_name, + arches: List[str], + ): + self.logger.info('Start exporting packages from product: %s', product_name) + query = ( + select(Product) + .where( + Product.name == product_name, + Product.platforms.any(Platform.name == distr_name), + ) + .options( + joinedload( + Product.repositories.and_( + Repository.name.ilike(f'%{distr_name}%'), Repository.arch.in_(arches) + ) + ) + ) + ) + async with get_async_db_session() as session: + product = (await session.execute(query)).scalars().first() + return await self.export_repositories(list({repo.id for repo in product.repositories})) + + +async def repo_post_processing(exporter: ProductExporter, repo_path: str) -> bool: + async with SEMAPHORE: + result = False + try: + exporter.regenerate_repo_metadata(repo_path) + except Exception as exc: + result = False + exporter.logger.exception("Post-processing failed: %s", str(exc)) + return result + + +async def main(): + args = parse_args() + await setup_all() + exporter = ProductExporter( + repodata_cache_dir=args.cache_dir, + verbose=args.verbose, + export_method=args.export_method, + ) + exported_paths = await exporter.export_product_repos( + product_name=args.product, + distr_name=args.distribution, + arches=args.arches, + ) + await asyncio.gather(*(repo_post_processing(exporter, path) for path in exported_paths)) + + +if __name__ == '__main__': + asyncio.run(main()) diff --git a/tests/test_scripts/test_packages_exporter.py b/tests/test_scripts/test_packages_exporter.py index 9896fe62..093d5cb3 100644 --- a/tests/test_scripts/test_packages_exporter.py +++ b/tests/test_scripts/test_packages_exporter.py @@ -1,23 +1,19 @@ import os -import tempfile + import pytest from alws.config import settings from alws.models import SignKey -from scripts.packages_exporter import Exporter +from scripts.exporters.packages_exporter import PackagesExporter from tests.mock_classes import BaseAsyncTestCase IN_GITHUB_ACTIONS = os.getenv("GITHUB_ACTIONS") is not None class TestPackagesExporter(BaseAsyncTestCase): - @pytest.mark.skipif( - not settings.test_sign_key_id, reason="Testing sign key is not provided" - ) + @pytest.mark.skipif(not settings.test_sign_key_id, reason="Testing sign key is not provided") async def test_repomd_signer(self, sign_key: SignKey, tmp_path): - exporter = Exporter( - pulp_client=None, repodata_cache_dir='~/.cache/pulp_exporter' - ) + exporter = PackagesExporter(repodata_cache_dir='~/.cache/pulp_exporter') key_id = sign_key.keyid token = await exporter.get_sign_server_token() temp_file = tmp_path / "tempfile.txt" From cc6dd8634ca6ac1bf6e23ce0c2de91a55875bd37 Mon Sep 17 00:00:00 2001 From: Daniil Anfimov Date: Tue, 1 Oct 2024 22:16:20 +0200 Subject: [PATCH 13/39] Black/isort syntax --- alws/crud/products.py | 72 ++++++++---- alws/utils/copr.py | 4 +- alws/utils/exporter.py | 10 +- alws/utils/pulp_client.py | 12 +- scripts/add_export_paths_to_product_repos.py | 13 ++- scripts/exporters/base_exporter.py | 42 ++++--- scripts/exporters/packages_exporter.py | 109 +++++++++++++++---- scripts/exporters/products_exporter.py | 23 +++- tests/test_scripts/test_packages_exporter.py | 5 +- 9 files changed, 212 insertions(+), 78 deletions(-) diff --git a/alws/crud/products.py b/alws/crud/products.py index c96b4e8a..41e845bb 100644 --- a/alws/crud/products.py +++ b/alws/crud/products.py @@ -71,7 +71,9 @@ async def create_product( ( await db.execute( select(models.Platform).where( - models.Platform.name.in_([platform.name for platform in payload.platforms]), + models.Platform.name.in_( + [platform.name for platform in payload.platforms] + ), ), ) ) @@ -105,7 +107,14 @@ async def create_product( ) task_results = await asyncio.gather(*repo_tasks) - for repo_name, repo_url, arch, pulp_href, export_path, is_debug in task_results: + for ( + repo_name, + repo_url, + arch, + pulp_href, + export_path, + is_debug, + ) in task_results: repo = models.Repository( name=repo_name, url=repo_url, @@ -180,13 +189,21 @@ def generate_query(count=False): selectinload(models.Product.owner), selectinload(models.Product.platforms), selectinload(models.Product.repositories), - selectinload(models.Product.roles).selectinload(models.UserRole.actions), - selectinload(models.Product.team).selectinload(models.Team.owner), + selectinload(models.Product.roles).selectinload( + models.UserRole.actions + ), + selectinload(models.Product.team).selectinload( + models.Team.owner + ), selectinload(models.Product.team) .selectinload(models.Team.roles) .selectinload(models.UserRole.actions), - selectinload(models.Product.team).selectinload(models.Team.members), - selectinload(models.Product.team).selectinload(models.Team.products), + selectinload(models.Product.team).selectinload( + models.Team.members + ), + selectinload(models.Product.team).selectinload( + models.Team.products + ), ) ) if count: @@ -205,7 +222,9 @@ def generate_query(count=False): if page_number: return { 'products': (await db.execute(generate_query())).scalars().all(), - 'total_products': (await db.execute(generate_query(count=True))).scalar(), + 'total_products': ( + await db.execute(generate_query(count=True)) + ).scalar(), 'current_page': page_number, } if product_id or product_name: @@ -227,7 +246,9 @@ async def remove_product( db_product = await get_products(db, product_id=product_id) db_user = await get_user(db, user_id=user_id) if not can_perform(db_product, db_user, actions.DeleteProduct.name): - raise PermissionDenied(f"User has no permissions to delete the product {db_product.name}") + raise PermissionDenied( + f"User has no permissions to delete the product {db_product.name}" + ) if not db_product: raise DataNotFoundError(f"Product={product_id} doesn't exist") active_builds_by_team_id = ( @@ -266,7 +287,8 @@ async def remove_product( # some repos from db can be absent in pulp # in case if you reset pulp db, but didn't reset non-pulp db if all( - product_repo.name != product_distro['name'] for product_distro in all_product_distros + product_repo.name != product_distro['name'] + for product_distro in all_product_distros ): continue delete_tasks.append(pulp_client.delete_by_href(product_repo.pulp_href)) @@ -302,8 +324,12 @@ async def modify_product( ) .options( selectinload(models.Build.repos), - selectinload(models.Build.tasks).selectinload(models.BuildTask.rpm_modules), - selectinload(models.Build.tasks).selectinload(models.BuildTask.platform), + selectinload(models.Build.tasks).selectinload( + models.BuildTask.rpm_modules + ), + selectinload(models.Build.tasks).selectinload( + models.BuildTask.platform + ), ), ) @@ -314,17 +340,19 @@ async def modify_product( ) .options( selectinload(models.Build.repos), - selectinload(models.Build.tasks).selectinload(models.BuildTask.rpm_modules), - selectinload(models.Build.tasks).selectinload(models.BuildTask.platform), + selectinload(models.Build.tasks).selectinload( + models.BuildTask.rpm_modules + ), + selectinload(models.Build.tasks).selectinload( + models.BuildTask.platform + ), ), ) db_build = db_build.scalars().first() if modification == 'add': if db_build in db_product.builds: - error_msg = ( - f"Can't add build {build_id} to {product} as it's already part of the product" - ) + error_msg = f"Can't add build {build_id} to {product} as it's already part of the product" raise ProductError(error_msg) if modification == 'remove': if db_build not in db_product.builds: @@ -339,18 +367,24 @@ async def modify_product( perform_product_modification.send(db_build.id, db_product.id, modification) -async def get_repo_product(session: AsyncSession, repository: str) -> Optional[Product]: +async def get_repo_product( + session: AsyncSession, repository: str +) -> Optional[Product]: product_relationships = ( selectinload(Product.owner), selectinload(Product.roles).selectinload(UserRole.actions), - selectinload(Product.team).selectinload(Team.roles).selectinload(UserRole.actions), + selectinload(Product.team) + .selectinload(Team.roles) + .selectinload(UserRole.actions), ) if repository.endswith("br"): result = ( ( await session.execute( select(Build) - .filter(Build.repos.any(Repository.name.ilike(f'%{repository}'))) + .filter( + Build.repos.any(Repository.name.ilike(f'%{repository}')) + ) .options( joinedload(Build.team) .joinedload(Team.products) diff --git a/alws/utils/copr.py b/alws/utils/copr.py index 0db11118..2b4a5a55 100644 --- a/alws/utils/copr.py +++ b/alws/utils/copr.py @@ -104,7 +104,9 @@ async def create_product_repo( create_publication=True, base_path_start='copr', ) - export_path = f"{product_name}/{platform_name}/{'debug/' if is_debug else ''}{arch}/" + export_path = ( + f"{product_name}/{platform_name}/{'debug/' if is_debug else ''}{arch}/" + ) return repo_name, repo_url, arch, repo_href, export_path, is_debug diff --git a/alws/utils/exporter.py b/alws/utils/exporter.py index 311ecd06..2b47d67e 100644 --- a/alws/utils/exporter.py +++ b/alws/utils/exporter.py @@ -15,8 +15,14 @@ async def fs_export_repository( repository_ids: List[int], session: AsyncSession, ): - export_task = await repo_exporter.create_pulp_exporters_to_fs(session, repository_ids) - export_data = await repo_exporter.execute_pulp_exporters_to_fs(session, export_task) + export_task = await repo_exporter.create_pulp_exporters_to_fs( + session, + repository_ids, + ) + export_data = await repo_exporter.execute_pulp_exporters_to_fs( + session, + export_task, + ) export_paths = list(export_data.keys()) for repo_elem, repo_data in export_data.items(): repo_url = urllib.parse.urljoin(repo_data, 'repodata/') diff --git a/alws/utils/pulp_client.py b/alws/utils/pulp_client.py index c6d33313..27b4c4a7 100644 --- a/alws/utils/pulp_client.py +++ b/alws/utils/pulp_client.py @@ -368,9 +368,7 @@ async def _upload_local_file( with open(file_path, "rb") as f: for i in range(chunks): chunk = io.BytesIO(f.read(chunk_size)) - chunk.name = ( - f'{file_path.strip("/").replace("/", "_")}_{i}' - ) + chunk.name = f'{file_path.strip("/").replace("/", "_")}_{i}' payload = {"file": chunk} if chunk_size >= file_size: stop = file_size - 1 @@ -386,9 +384,7 @@ async def _upload_local_file( ) start += chunk_size except Exception: - logging.exception( - "Exception during the file upload", exc_info=True - ) + logging.exception("Exception during the file upload", exc_info=True) await self.request("DELETE", upload_href, raw=True) else: task = await self.request( @@ -1053,7 +1049,9 @@ async def request( return response_json -def get_pulp_client(semaphore: Optional[asyncio.Semaphore] = None) -> PulpClient: +def get_pulp_client( + semaphore: Optional[asyncio.Semaphore] = None, +) -> PulpClient: return PulpClient( host=settings.pulp_host, username=settings.pulp_user, diff --git a/scripts/add_export_paths_to_product_repos.py b/scripts/add_export_paths_to_product_repos.py index bd03cd6e..72eb154c 100644 --- a/scripts/add_export_paths_to_product_repos.py +++ b/scripts/add_export_paths_to_product_repos.py @@ -19,7 +19,10 @@ def main(): session.execute( select(Product) .where(Product.is_community.is_(True)) - .options(joinedload(Product.repositories), joinedload(Product.platforms)) + .options( + joinedload(Product.repositories), + joinedload(Product.platforms), + ) ) .scalars() .unique() @@ -27,7 +30,9 @@ def main(): ): if not product.repositories: continue - platform_names = '|'.join((platform.name for platform in product.platforms)) + platform_names = '|'.join( + (platform.name for platform in product.platforms) + ) platform_pattern = re.compile( rf'-({platform_names})-(\w+)(-debug|)-dr$', flags=re.IGNORECASE, @@ -39,9 +44,7 @@ def main(): if not regex_result: continue platform, *_ = regex_result.groups() - repo.export_path = ( - f"{product.name}/{platform}/{'debug/' if repo.debug else ''}{repo.arch}/" - ) + repo.export_path = f"{product.name}/{platform}/{'debug/' if repo.debug else ''}{repo.arch}/" if __name__ == '__main__': diff --git a/scripts/exporters/base_exporter.py b/scripts/exporters/base_exporter.py index de2c18c3..e422505c 100644 --- a/scripts/exporters/base_exporter.py +++ b/scripts/exporters/base_exporter.py @@ -22,7 +22,7 @@ def __init__( self, repodata_cache_dir: str, logger_name: str = '', - log_file_path: Path = Path('/tmp/exporter.log'), + log_file_path: Path = Path('/srv/exporter.log'), verbose: bool = False, export_method: Literal['write', 'hardlink', 'symlink'] = 'hardlink', export_path: str = settings.pulp_export_path, @@ -32,7 +32,9 @@ def __init__( self.export_path = export_path self.createrepo_c = local["createrepo_c"] - self.repodata_cache_dir = Path(repodata_cache_dir).expanduser().absolute() + self.repodata_cache_dir = ( + Path(repodata_cache_dir).expanduser().absolute() + ) self.checksums_cache_dir = self.repodata_cache_dir.joinpath('checksums') for dir_path in (self.repodata_cache_dir, self.checksums_cache_dir): if dir_path.exists(): @@ -52,7 +54,9 @@ def __init__( ) def regenerate_repo_metadata(self, repo_path: str): - partial_path = re.sub(str(settings.pulp_export_path), "", str(repo_path)).strip("/") + partial_path = re.sub( + str(settings.pulp_export_path), "", str(repo_path) + ).strip("/") repodata_path = Path(repo_path, "repodata") repo_repodata_cache = self.repodata_cache_dir.joinpath(partial_path) cache_repodata_dir = repo_repodata_cache.joinpath("repodata") @@ -86,20 +90,26 @@ async def create_filesystem_exporters( get_publications: bool = False, ): async def get_exporter_data(repository: Repository) -> Tuple[str, dict]: - export_path = str(Path(self.export_path, repository.export_path, "Packages")) + export_path = str( + Path(self.export_path, repository.export_path, "Packages") + ) exporter_name = ( f"{repository.name}-{repository.arch}-debug" if repository.debug else f"{repository.name}-{repository.arch}" ) - fs_exporter_href = await self.pulp_client.create_filesystem_exporter( - exporter_name, - export_path, - export_method=self.export_method, + fs_exporter_href = ( + await self.pulp_client.create_filesystem_exporter( + exporter_name, + export_path, + export_method=self.export_method, + ) ) - repo_latest_version = await self.pulp_client.get_repo_latest_version( - repository.pulp_href + repo_latest_version = ( + await self.pulp_client.get_repo_latest_version( + repository.pulp_href + ) ) if not repo_latest_version: raise ValueError('cannot find latest repo version') @@ -126,7 +136,9 @@ async def get_exporter_data(repository: Repository) -> Tuple[str, dict]: result = await session.execute(query) repositories = list(result.scalars().all()) - results = await asyncio.gather(*(get_exporter_data(repo) for repo in repositories)) + results = await asyncio.gather( + *(get_exporter_data(repo) for repo in repositories) + ) return list(dict(results).values()) @@ -148,7 +160,9 @@ async def _export_repository(self, exporter: dict) -> Optional[str]: href = exporter["exporter_href"] repository_version = exporter["repo_latest_version"] try: - await self.pulp_client.export_to_filesystem(href, repository_version) + await self.pulp_client.export_to_filesystem( + href, repository_version + ) except Exception: self.logger.exception( "Cannot export repository via %s", @@ -178,5 +192,7 @@ async def _export_repository(self, exporter: dict) -> Optional[str]: async def export_repositories(self, repo_ids: List[int]) -> List[str]: exporters = await self.create_filesystem_exporters(repo_ids) - results = await asyncio.gather(*(self._export_repository(e) for e in exporters)) + results = await asyncio.gather( + *(self._export_repository(e) for e in exporters) + ) return [path for path in results if path] diff --git a/scripts/exporters/packages_exporter.py b/scripts/exporters/packages_exporter.py index a0dd54a9..40a6503d 100644 --- a/scripts/exporters/packages_exporter.py +++ b/scripts/exporters/packages_exporter.py @@ -48,7 +48,9 @@ from alws.utils.fastapi_sqla_setup import setup_all from alws.utils.osv import export_errata_to_osv -KNOWN_SUBKEYS_CONFIG = os.path.abspath(os.path.expanduser("~/config/known_subkeys.json")) +KNOWN_SUBKEYS_CONFIG = os.path.abspath( + os.path.expanduser("~/config/known_subkeys.json") +) LOG_DIR = Path.home() / "exporter_logs" LOGGER_NAME = "packages-exporter" LOG_FILE = LOG_DIR / f"{LOGGER_NAME}_{int(time())}.log" @@ -142,7 +144,7 @@ def __init__( self, repodata_cache_dir: str, logger_name: str = '', - log_file_path: Path = Path('/tmp/exporter.log'), + log_file_path: Path = Path('/srv/exporter.log'), verbose: bool = False, export_method: Literal['write', 'hardlink', 'symlink'] = "hardlink", export_path: str = settings.pulp_export_path, @@ -162,7 +164,9 @@ def __init__( } self.osv_dir = osv_dir self.current_user = self.get_current_username() - self.export_error_file = os.path.abspath(os.path.expanduser("~/export.err")) + self.export_error_file = os.path.abspath( + os.path.expanduser("~/export.err") + ) if os.path.exists(self.export_error_file): os.remove(self.export_error_file) self.known_subkeys = {} @@ -213,14 +217,22 @@ async def make_request( full_url = urllib.parse.urljoin(settings.albs_api_url, endpoint) elif send_to == 'sign_server': headers = {} - full_url = urllib.parse.urljoin(settings.sign_server_api_url, endpoint) + full_url = urllib.parse.urljoin( + settings.sign_server_api_url, + endpoint, + ) else: - raise ValueError("send_to parameter must be either web_server or sign_server") + raise ValueError( + "send_to parameter must be either web_server or sign_server" + ) if user_headers: headers.update(user_headers) - async with aiohttp.ClientSession(headers=headers, raise_for_status=True) as session: + async with aiohttp.ClientSession( + headers=headers, + raise_for_status=True, + ) as session: async with session.request( method, full_url, @@ -254,7 +266,11 @@ async def get_sign_keys(self): return await self.make_request("GET", endpoint) # TODO: Use direct function call to alws.crud.errata_get_oval_xml - async def get_oval_xml(self, platform_name: str, only_released: bool = False): + async def get_oval_xml( + self, + platform_name: str, + only_released: bool = False, + ): endpoint = "errata/get_oval_xml/" return await self.make_request( "GET", @@ -271,7 +287,11 @@ async def generate_rss(self, platform, modern_cache): dist_version = platform.split('-')[-1] errata_data = modern_cache['data'] - sorted_errata_data = sorted(errata_data, key=lambda k: k['updated_date'], reverse=True) + sorted_errata_data = sorted( + errata_data, + key=lambda k: k['updated_date'], + reverse=True, + ) feed = FeedGenerator() feed.title(f'Errata Feed for {dist_name}') @@ -283,7 +303,10 @@ async def generate_rss(self, platform, modern_cache): html_erratum_id = erratum['id'].replace(':', '-') title = f"[{erratum['id']}] {erratum['title']}" link = f"https://errata.almalinux.org/{dist_version}/{html_erratum_id}.html" - pub_date = datetime.fromtimestamp(erratum['updated_date'], timezone.utc) + pub_date = datetime.fromtimestamp( + erratum['updated_date'], + timezone.utc, + ) content = f"
{erratum['description']}
" entry = feed.add_entry() @@ -378,7 +401,11 @@ def check(pkg_path: str) -> Tuple[SignStatusEnum, str]: elif result == SignStatusEnum.WRONG_SIGNATURE: wrong_signature_packages.add(f"{package_path} {pkg_sig}") - if errored_packages or no_signature_packages or wrong_signature_packages: + if ( + errored_packages + or no_signature_packages + or wrong_signature_packages + ): if not os.path.exists(self.export_error_file): mode = "wt" else: @@ -450,7 +477,9 @@ async def export_repos_from_pulp( else: platforms_dict[db_platform.id].append(repo.export_path) repo_ids_to_export.append(repo.id) - exported_paths = await self.export_repositories(list(set(repo_ids_to_export))) + exported_paths = await self.export_repositories( + list(set(repo_ids_to_export)) + ) final_export_paths.extend(exported_paths) with ThreadPoolExecutor(max_workers=10) as executor: futures = {} @@ -467,7 +496,9 @@ async def export_repos_from_pulp( ] = repo_path for future in as_completed(futures): repo_path = futures[future] - self.logger.info('%s packages signatures are checked', repo_path) + self.logger.info( + '%s packages signatures are checked', repo_path + ) self.logger.debug( "All repositories exported in following paths:\n%s", "\n".join((str(path) for path in exported_paths)), @@ -478,14 +509,20 @@ async def export_repos_from_release( self, release_id: int, ) -> Tuple[List[str], int]: - self.logger.info("Start exporting packages from release id=%s", release_id) + self.logger.info( + "Start exporting packages from release id=%s", + release_id, + ) async with open_async_session(key=get_async_db_key()) as db: db_release = await db.execute( select(models.Release).where(models.Release.id == release_id) ) db_release = db_release.scalars().first() - repo_ids = jmespath.search("packages[].repositories[].id", db_release.plan) + repo_ids = jmespath.search( + "packages[].repositories[].id", + db_release.plan, + ) repo_ids = list(set(repo_ids)) exported_paths = await self.export_repositories(repo_ids) return exported_paths, db_release.platform_id @@ -563,7 +600,9 @@ def extract_errata(repo_path: str) -> Tuple[List[dict], List[dict]]: for record in iter_updateinfo(errata_file): errata_records.append(extract_errata_metadata(record)) - modern_errata_records.extend(extract_errata_metadata_modern(record)["data"]) + modern_errata_records.extend( + extract_errata_metadata_modern(record)["data"] + ) return errata_records, modern_errata_records @@ -587,7 +626,10 @@ def export_errata_and_oval( exporter.logger.info("Starting export errata.json and oval.xml") errata_export_base_path = None try: - errata_export_base_path = os.path.join(settings.pulp_export_path, "errata") + errata_export_base_path = os.path.join( + settings.pulp_export_path, + "errata", + ) if not os.path.exists(errata_export_base_path): os.mkdir(errata_export_base_path) for platform in platform_names: @@ -604,12 +646,18 @@ def export_errata_and_oval( generate_errata_page(record, html_path) exporter.logger.debug("HTML pages are generated") for item in errata_cache: - item["issued_date"] = {"$date": int(item["issued_date"].timestamp() * 1000)} - item["updated_date"] = {"$date": int(item["updated_date"].timestamp() * 1000)} + item["issued_date"] = { + "$date": int(item["issued_date"].timestamp() * 1000) + } + item["updated_date"] = { + "$date": int(item["updated_date"].timestamp() * 1000) + } exporter.logger.debug("Dumping errata data into JSON") with open(os.path.join(platform_path, "errata.json"), "w") as fd: json.dump(errata_cache, fd) - with open(os.path.join(platform_path, "errata.full.json"), "w") as fd: + with open( + os.path.join(platform_path, "errata.full.json"), "w" + ) as fd: json.dump(platform_errata_cache[platform]["modern_cache"], fd) exporter.logger.debug("JSON dump is done") exporter.logger.debug("Generating OVAL data") @@ -646,7 +694,8 @@ def extract_errata_from_exported_paths( platform_errata_cache = {} with ThreadPoolExecutor(max_workers=4) as executor: errata_futures = { - executor.submit(extract_errata, exp_path): exp_path for exp_path in exported_paths + executor.submit(extract_errata, exp_path): exp_path + for exp_path in exported_paths } exporter.logger.debug("Starting errata extraction") @@ -699,7 +748,9 @@ def main(): db_sign_keys = sync(exporter.get_sign_keys()) if args.release_id: - exported_paths, platform_id = sync(exporter.export_repos_from_release(args.release_id)) + exported_paths, platform_id = sync( + exporter.export_repos_from_release(args.release_id) + ) key_id_by_platform = next( ( sign_key["keyid"] @@ -720,16 +771,26 @@ def main(): with ThreadPoolExecutor(max_workers=4) as executor: post_processing_futures = { - executor.submit(repo_post_processing, exporter, repo_path): repo_path + executor.submit( + repo_post_processing, + exporter, + repo_path, + ): repo_path for repo_path in exported_paths } for future in as_completed(post_processing_futures): repo_path = post_processing_futures[future] result = future.result() if result: - exporter.logger.info("%s post-processing is successful", repo_path) + exporter.logger.info( + "%s post-processing is successful", + repo_path, + ) else: - exporter.logger.error("%s post-processing has failed", repo_path) + exporter.logger.error( + "%s post-processing has failed", + repo_path, + ) platform_regex = re.compile(r"\/(almalinux|vault)\/9\/") platform_errata_cache = extract_errata_from_exported_paths( diff --git a/scripts/exporters/products_exporter.py b/scripts/exporters/products_exporter.py index ae2f0cb9..1d77ff10 100644 --- a/scripts/exporters/products_exporter.py +++ b/scripts/exporters/products_exporter.py @@ -80,7 +80,7 @@ def __init__( self, repodata_cache_dir: str, logger_name: str = 'product-exporter', - log_file_path: Path = Path('/tmp/product-exporter.log'), + log_file_path: Path = Path('/srv/product-exporter.log'), verbose: bool = False, export_method: Literal['write', 'hardlink', 'symlink'] = 'hardlink', export_path: str = settings.pulp_export_path, @@ -100,7 +100,10 @@ async def export_product_repos( distr_name, arches: List[str], ): - self.logger.info('Start exporting packages from product: %s', product_name) + self.logger.info( + 'Start exporting packages from product: %s', + product_name, + ) query = ( select(Product) .where( @@ -110,17 +113,23 @@ async def export_product_repos( .options( joinedload( Product.repositories.and_( - Repository.name.ilike(f'%{distr_name}%'), Repository.arch.in_(arches) + Repository.name.ilike(f'%{distr_name}%'), + Repository.arch.in_(arches), ) ) ) ) async with get_async_db_session() as session: product = (await session.execute(query)).scalars().first() - return await self.export_repositories(list({repo.id for repo in product.repositories})) + return await self.export_repositories( + list({repo.id for repo in product.repositories}) + ) -async def repo_post_processing(exporter: ProductExporter, repo_path: str) -> bool: +async def repo_post_processing( + exporter: ProductExporter, + repo_path: str, +) -> bool: async with SEMAPHORE: result = False try: @@ -144,7 +153,9 @@ async def main(): distr_name=args.distribution, arches=args.arches, ) - await asyncio.gather(*(repo_post_processing(exporter, path) for path in exported_paths)) + await asyncio.gather( + *(repo_post_processing(exporter, path) for path in exported_paths) + ) if __name__ == '__main__': diff --git a/tests/test_scripts/test_packages_exporter.py b/tests/test_scripts/test_packages_exporter.py index 093d5cb3..2681ea0e 100644 --- a/tests/test_scripts/test_packages_exporter.py +++ b/tests/test_scripts/test_packages_exporter.py @@ -11,7 +11,10 @@ class TestPackagesExporter(BaseAsyncTestCase): - @pytest.mark.skipif(not settings.test_sign_key_id, reason="Testing sign key is not provided") + @pytest.mark.skipif( + not settings.test_sign_key_id, + reason="Testing sign key is not provided", + ) async def test_repomd_signer(self, sign_key: SignKey, tmp_path): exporter = PackagesExporter(repodata_cache_dir='~/.cache/pulp_exporter') key_id = sign_key.keyid From e0ba477f2511682a57c4821c46ce599e36d5b49e Mon Sep 17 00:00:00 2001 From: Daniil Anfimov Date: Thu, 3 Oct 2024 12:14:07 +0200 Subject: [PATCH 14/39] Fix review comments --- scripts/add_export_paths_to_product_repos.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/add_export_paths_to_product_repos.py b/scripts/add_export_paths_to_product_repos.py index 72eb154c..c1fe026f 100644 --- a/scripts/add_export_paths_to_product_repos.py +++ b/scripts/add_export_paths_to_product_repos.py @@ -31,7 +31,7 @@ def main(): if not product.repositories: continue platform_names = '|'.join( - (platform.name for platform in product.platforms) + platform.name for platform in product.platforms ) platform_pattern = re.compile( rf'-({platform_names})-(\w+)(-debug|)-dr$', From d67e6e4148e88bb4781170692c3c8aa2708d0809 Mon Sep 17 00:00:00 2001 From: eabdullin Date: Fri, 4 Oct 2024 09:48:38 +0300 Subject: [PATCH 15/39] Change versions to 9.5 on beta flavor --- reference_data/platform_flavors.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/reference_data/platform_flavors.yaml b/reference_data/platform_flavors.yaml index 44578ea0..133cebae 100644 --- a/reference_data/platform_flavors.yaml +++ b/reference_data/platform_flavors.yaml @@ -94,12 +94,12 @@ - name: AlmaLinux-9-beta modularity: git_tag_prefix: - modified: a9 - non_modified: c9 + modified: a9-beta + non_modified: c9-beta versions: - - name: '9.4' - version_prefix: '90400' - dist_prefix: 'el9.4.0' + - name: '9.5' + version_prefix: '90500' + dist_prefix: 'el9.5.0' data: mock: secure_boot_macros: From 229857dceb63d28fe8a553df0a7f0309b0c68091 Mon Sep 17 00:00:00 2001 From: Eduard Abdullin <55892454+eabdullin1@users.noreply.github.com> Date: Fri, 4 Oct 2024 10:45:34 +0300 Subject: [PATCH 16/39] Change versions to 9.5 on beta flavor (#1007) --- reference_data/platform_flavors.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/reference_data/platform_flavors.yaml b/reference_data/platform_flavors.yaml index 44578ea0..133cebae 100644 --- a/reference_data/platform_flavors.yaml +++ b/reference_data/platform_flavors.yaml @@ -94,12 +94,12 @@ - name: AlmaLinux-9-beta modularity: git_tag_prefix: - modified: a9 - non_modified: c9 + modified: a9-beta + non_modified: c9-beta versions: - - name: '9.4' - version_prefix: '90400' - dist_prefix: 'el9.4.0' + - name: '9.5' + version_prefix: '90500' + dist_prefix: 'el9.5.0' data: mock: secure_boot_macros: From f104561bdc30847814e4e1faa993c5ec83183de4 Mon Sep 17 00:00:00 2001 From: eabdullin Date: Mon, 7 Oct 2024 13:12:21 +0300 Subject: [PATCH 17/39] Update remote_url and export_path for AlmaLinux-10-kitten --- reference_data/platforms.yaml | 188 +++++++++++++++++----------------- 1 file changed, 94 insertions(+), 94 deletions(-) diff --git a/reference_data/platforms.yaml b/reference_data/platforms.yaml index a5190146..3fcd681e 100644 --- a/reference_data/platforms.yaml +++ b/reference_data/platforms.yaml @@ -5370,8 +5370,8 @@ - arch: s390x name: almalinux-kitten-10-devel type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/devel/s390x/os/ - export_path: almalinux/10/devel/s390x/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/devel/s390x/os/ + export_path: kitten-10/devel/s390x/os/ production: true debug: false remote_sync_policy: on_demand @@ -5380,8 +5380,8 @@ - arch: riscv64 name: almalinux-kitten-10-devel type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/devel/riscv64/os/ - export_path: almalinux/10/devel/riscv64/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/devel/riscv64/os/ + export_path: kitten-10/devel/riscv64/os/ production: true debug: false remote_sync_policy: on_demand @@ -5390,8 +5390,8 @@ - arch: x86_64 name: almalinux-kitten-10-devel type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/devel/x86_64/os/ - export_path: almalinux/10/devel/x86_64/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/devel/x86_64/os/ + export_path: kitten-10/devel/x86_64/os/ production: true debug: false remote_sync_policy: on_demand @@ -5400,8 +5400,8 @@ - arch: ppc64le name: almalinux-kitten-10-devel type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/devel/ppc64le/os/ - export_path: almalinux/10/devel/ppc64le/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/devel/ppc64le/os/ + export_path: kitten-10/devel/ppc64le/os/ production: true debug: false remote_sync_policy: on_demand @@ -5420,8 +5420,8 @@ - arch: aarch64 name: almalinux-kitten-10-devel type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/devel/aarch64/os/ - export_path: almalinux/10/devel/aarch64/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/devel/aarch64/os/ + export_path: kitten-10/devel/aarch64/os/ production: true debug: false remote_sync_policy: on_demand @@ -5516,8 +5516,8 @@ - arch: x86_64 name: almalinux-kitten-10-appstream type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/AppStream/x86_64/os/ - export_path: almalinux/10/AppStream/x86_64/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/AppStream/x86_64/os/ + export_path: kitten-10/AppStream/x86_64/os/ production: true debug: false remote_sync_policy: on_demand @@ -5526,8 +5526,8 @@ - arch: ppc64le name: almalinux-kitten-10-appstream type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/AppStream/ppc64le/os/ - export_path: almalinux/10/AppStream/ppc64le/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/AppStream/ppc64le/os/ + export_path: kitten-10/AppStream/ppc64le/os/ production: true debug: false remote_sync_policy: on_demand @@ -5536,8 +5536,8 @@ - arch: aarch64 name: almalinux-kitten-10-appstream type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/AppStream/aarch64/os/ - export_path: almalinux/10/AppStream/aarch64/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/AppStream/aarch64/os/ + export_path: kitten-10/AppStream/aarch64/os/ production: true debug: false remote_sync_policy: on_demand @@ -5546,8 +5546,8 @@ - arch: s390x name: almalinux-kitten-10-appstream type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/AppStream/s390x/os/ - export_path: almalinux/10/AppStream/s390x/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/AppStream/s390x/os/ + export_path: kitten-10/AppStream/s390x/os/ production: true debug: false remote_sync_policy: on_demand @@ -5556,8 +5556,8 @@ - arch: riscv64 name: almalinux-kitten-10-appstream type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/AppStream/riscv64/os/ - export_path: almalinux/10/AppStream/riscv64/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/AppStream/riscv64/os/ + export_path: kitten-10/AppStream/riscv64/os/ production: true debug: false remote_sync_policy: on_demand @@ -5652,8 +5652,8 @@ - arch: x86_64 name: almalinux-kitten-10-baseos type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/BaseOS/x86_64/os/ - export_path: almalinux/10/BaseOS/x86_64/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/BaseOS/x86_64/os/ + export_path: kitten-10/BaseOS/x86_64/os/ production: true debug: false remote_sync_policy: on_demand @@ -5662,8 +5662,8 @@ - arch: ppc64le name: almalinux-kitten-10-baseos type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/BaseOS/ppc64le/os/ - export_path: almalinux/10/BaseOS/ppc64le/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/BaseOS/ppc64le/os/ + export_path: kitten-10/BaseOS/ppc64le/os/ production: true debug: false remote_sync_policy: on_demand @@ -5672,8 +5672,8 @@ - arch: aarch64 name: almalinux-kitten-10-baseos type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/BaseOS/aarch64/os/ - export_path: almalinux/10/BaseOS/aarch64/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/BaseOS/aarch64/os/ + export_path: kitten-10/BaseOS/aarch64/os/ production: true debug: false remote_sync_policy: on_demand @@ -5682,8 +5682,8 @@ - arch: s390x name: almalinux-kitten-10-baseos type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/BaseOS/s390x/os/ - export_path: almalinux/10/BaseOS/s390x/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/BaseOS/s390x/os/ + export_path: kitten-10/BaseOS/s390x/os/ production: true debug: false remote_sync_policy: on_demand @@ -5692,8 +5692,8 @@ - arch: riscv64 name: almalinux-kitten-10-baseos type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/BaseOS/riscv64/os/ - export_path: almalinux/10/BaseOS/riscv64/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/BaseOS/riscv64/os/ + export_path: kitten-10/BaseOS/riscv64/os/ production: true debug: false remote_sync_policy: on_demand @@ -5788,8 +5788,8 @@ - arch: x86_64 name: almalinux-kitten-10-highavailability type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/HighAvailability/x86_64/os/ - export_path: almalinux/10/HighAvailability/x86_64/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/HighAvailability/x86_64/os/ + export_path: kitten-10/HighAvailability/x86_64/os/ production: true debug: false remote_sync_policy: on_demand @@ -5798,8 +5798,8 @@ - arch: ppc64le name: almalinux-kitten-10-highavailability type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/HighAvailability/ppc64le/os/ - export_path: almalinux/10/HighAvailability/ppc64le/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/HighAvailability/ppc64le/os/ + export_path: kitten-10/HighAvailability/ppc64le/os/ production: true debug: false remote_sync_policy: on_demand @@ -5808,8 +5808,8 @@ - arch: aarch64 name: almalinux-kitten-10-highavailability type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/HighAvailability/aarch64/os/ - export_path: almalinux/10/HighAvailability/aarch64/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/HighAvailability/aarch64/os/ + export_path: kitten-10/HighAvailability/aarch64/os/ production: true debug: false remote_sync_policy: on_demand @@ -5818,8 +5818,8 @@ - arch: s390x name: almalinux-kitten-10-highavailability type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/HighAvailability/s390x/os/ - export_path: almalinux/10/HighAvailability/s390x/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/HighAvailability/s390x/os/ + export_path: kitten-10/HighAvailability/s390x/os/ production: true debug: false remote_sync_policy: on_demand @@ -5828,8 +5828,8 @@ - arch: riscv64 name: almalinux-kitten-10-highavailability type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/HighAvailability/riscv64/os/ - export_path: almalinux/10/HighAvailability/riscv64/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/HighAvailability/riscv64/os/ + export_path: kitten-10/HighAvailability/riscv64/os/ production: true debug: false remote_sync_policy: on_demand @@ -5924,8 +5924,8 @@ - arch: x86_64 name: almalinux-kitten-10-resilientstorage type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/ResilientStorage/x86_64/os/ - export_path: almalinux/10/ResilientStorage/x86_64/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/ResilientStorage/x86_64/os/ + export_path: kitten-10/ResilientStorage/x86_64/os/ production: true debug: false remote_sync_policy: on_demand @@ -5934,8 +5934,8 @@ - arch: ppc64le name: almalinux-kitten-10-resilientstorage type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/ResilientStorage/ppc64le/os/ - export_path: almalinux/10/ResilientStorage/ppc64le/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/ResilientStorage/ppc64le/os/ + export_path: kitten-10/ResilientStorage/ppc64le/os/ production: true debug: false remote_sync_policy: on_demand @@ -5944,8 +5944,8 @@ - arch: aarch64 name: almalinux-kitten-10-resilientstorage type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/ResilientStorage/aarch64/os/ - export_path: almalinux/10/ResilientStorage/aarch64/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/ResilientStorage/aarch64/os/ + export_path: kitten-10/ResilientStorage/aarch64/os/ production: true debug: false remote_sync_policy: on_demand @@ -5954,8 +5954,8 @@ - arch: s390x name: almalinux-kitten-10-resilientstorage type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/ResilientStorage/s390x/os/ - export_path: almalinux/10/ResilientStorage/s390x/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/ResilientStorage/s390x/os/ + export_path: kitten-10/ResilientStorage/s390x/os/ production: true debug: false remote_sync_policy: on_demand @@ -5964,8 +5964,8 @@ - arch: riscv64 name: almalinux-kitten-10-resilientstorage type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/ResilientStorage/riscv64/os/ - export_path: almalinux/10/ResilientStorage/riscv64/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/ResilientStorage/riscv64/os/ + export_path: kitten-10/ResilientStorage/riscv64/os/ production: true debug: false remote_sync_policy: on_demand @@ -6060,8 +6060,8 @@ - arch: x86_64 name: almalinux-kitten-10-extras type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/extras/x86_64/os/ - export_path: almalinux/10/extras/x86_64/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/extras/x86_64/os/ + export_path: kitten-10/extras/x86_64/os/ production: true debug: false remote_sync_policy: on_demand @@ -6070,8 +6070,8 @@ - arch: ppc64le name: almalinux-kitten-10-extras type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/extras/ppc64le/os/ - export_path: almalinux/10/extras/ppc64le/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/extras/ppc64le/os/ + export_path: kitten-10/extras/ppc64le/os/ production: true debug: false remote_sync_policy: on_demand @@ -6080,8 +6080,8 @@ - arch: aarch64 name: almalinux-kitten-10-extras type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/extras/aarch64/os/ - export_path: almalinux/10/extras/aarch64/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/extras/aarch64/os/ + export_path: kitten-10/extras/aarch64/os/ production: true debug: false remote_sync_policy: on_demand @@ -6090,8 +6090,8 @@ - arch: s390x name: almalinux-kitten-10-extras type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/extras/s390x/os/ - export_path: almalinux/10/extras/s390x/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/extras/s390x/os/ + export_path: kitten-10/extras/s390x/os/ production: true debug: false remote_sync_policy: on_demand @@ -6100,8 +6100,8 @@ - arch: riscv64 name: almalinux-kitten-10-extras type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/extras/riscv64/os/ - export_path: almalinux/10/extras/riscv64/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/extras/riscv64/os/ + export_path: kitten-10/extras/riscv64/os/ production: true debug: false remote_sync_policy: on_demand @@ -6196,8 +6196,8 @@ - arch: x86_64 name: almalinux-kitten-10-crb type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/CRB/x86_64/os/ - export_path: almalinux/10/CRB/x86_64/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/CRB/x86_64/os/ + export_path: kitten-10/CRB/x86_64/os/ production: true debug: false remote_sync_policy: on_demand @@ -6206,8 +6206,8 @@ - arch: ppc64le name: almalinux-kitten-10-crb type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/CRB/ppc64le/os/ - export_path: almalinux/10/CRB/ppc64le/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/CRB/ppc64le/os/ + export_path: kitten-10/CRB/ppc64le/os/ production: true debug: false remote_sync_policy: on_demand @@ -6216,8 +6216,8 @@ - arch: aarch64 name: almalinux-kitten-10-crb type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/CRB/aarch64/os/ - export_path: almalinux/10/CRB/aarch64/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/CRB/aarch64/os/ + export_path: kitten-10/CRB/aarch64/os/ production: true debug: false remote_sync_policy: on_demand @@ -6226,8 +6226,8 @@ - arch: s390x name: almalinux-kitten-10-crb type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/CRB/s390x/os/ - export_path: almalinux/10/CRB/s390x/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/CRB/s390x/os/ + export_path: kitten-10/CRB/s390x/os/ production: true debug: false remote_sync_policy: on_demand @@ -6236,8 +6236,8 @@ - arch: riscv64 name: almalinux-kitten-10-crb type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/CRB/riscv64/os/ - export_path: almalinux/10/CRB/riscv64/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/CRB/riscv64/os/ + export_path: kitten-10/CRB/riscv64/os/ production: true debug: false remote_sync_policy: on_demand @@ -6343,8 +6343,8 @@ - arch: x86_64 name: almalinux-kitten-10-nfv type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/NFV/x86_64/os/ - export_path: almalinux/10/NFV/x86_64/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/NFV/x86_64/os/ + export_path: kitten-10/NFV/x86_64/os/ production: true debug: false remote_sync_policy: on_demand @@ -6395,8 +6395,8 @@ - arch: x86_64 name: almalinux-kitten-10-rt type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/RT/x86_64/os/ - export_path: almalinux/10/RT/x86_64/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/RT/x86_64/os/ + export_path: kitten-10/RT/x86_64/os/ production: true debug: false remote_sync_policy: on_demand @@ -6436,8 +6436,8 @@ - arch: x86_64 name: almalinux-kitten-10-sap type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/SAP/x86_64/os/ - export_path: almalinux/10/SAP/x86_64/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/SAP/x86_64/os/ + export_path: kitten-10/SAP/x86_64/os/ production: true debug: false remote_sync_policy: on_demand @@ -6446,8 +6446,8 @@ - arch: ppc64le name: almalinux-kitten-10-sap type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/SAP/ppc64le/os/ - export_path: almalinux/10/SAP/ppc64le/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/SAP/ppc64le/os/ + export_path: kitten-10/SAP/ppc64le/os/ production: true debug: false remote_sync_policy: on_demand @@ -6456,8 +6456,8 @@ - arch: aarch64 name: almalinux-kitten-10-sap type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/SAP/aarch64/os/ - export_path: almalinux/10/SAP/aarch64/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/SAP/aarch64/os/ + export_path: kitten-10/SAP/aarch64/os/ production: true debug: false remote_sync_policy: on_demand @@ -6466,8 +6466,8 @@ - arch: s390x name: almalinux-kitten-10-sap type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/SAP/s390x/os/ - export_path: almalinux/10/SAP/s390x/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/SAP/s390x/os/ + export_path: kitten-10/SAP/s390x/os/ production: true debug: false remote_sync_policy: on_demand @@ -6476,8 +6476,8 @@ - arch: riscv64 name: almalinux-kitten-10-sap type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/SAP/riscv64/os/ - export_path: almalinux/10/SAP/riscv64/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/SAP/riscv64/os/ + export_path: kitten-10/SAP/riscv64/os/ production: true debug: false remote_sync_policy: on_demand @@ -6572,8 +6572,8 @@ - arch: x86_64 name: almalinux-kitten-10-saphana type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/SAPHANA/x86_64/os/ - export_path: almalinux/10/SAPHANA/x86_64/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/SAPHANA/x86_64/os/ + export_path: kitten-10/SAPHANA/x86_64/os/ production: true debug: false remote_sync_policy: on_demand @@ -6582,8 +6582,8 @@ - arch: ppc64le name: almalinux-kitten-10-saphana type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/SAPHANA/ppc64le/os/ - export_path: almalinux/10/SAPHANA/ppc64le/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/SAPHANA/ppc64le/os/ + export_path: kitten-10/SAPHANA/ppc64le/os/ production: true debug: false remote_sync_policy: on_demand @@ -6592,8 +6592,8 @@ - arch: aarch64 name: almalinux-kitten-10-saphana type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/SAPHANA/aarch64/os/ - export_path: almalinux/10/SAPHANA/aarch64/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/SAPHANA/aarch64/os/ + export_path: kitten-10/SAPHANA/aarch64/os/ production: true debug: false remote_sync_policy: on_demand @@ -6602,8 +6602,8 @@ - arch: s390x name: almalinux-kitten-10-saphana type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/SAPHANA/s390x/os/ - export_path: almalinux/10/SAPHANA/s390x/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/SAPHANA/s390x/os/ + export_path: kitten-10/SAPHANA/s390x/os/ production: true debug: false remote_sync_policy: on_demand @@ -6612,8 +6612,8 @@ - arch: riscv64 name: almalinux-kitten-10-saphana type: rpm - remote_url: http://repo.kitten.almalinux.org/almalinux/10/SAPHANA/riscv64/os/ - export_path: almalinux/10/SAPHANA/riscv64/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/SAPHANA/riscv64/os/ + export_path: kitten-10/SAPHANA/riscv64/os/ production: true debug: false remote_sync_policy: on_demand From 6a130bc6176a415304ce3382f4b48d076500aaed Mon Sep 17 00:00:00 2001 From: eabdullin Date: Mon, 7 Oct 2024 14:03:16 +0300 Subject: [PATCH 18/39] Update vault path --- reference_data/platforms.yaml | 160 +++++++++++++++++----------------- 1 file changed, 80 insertions(+), 80 deletions(-) diff --git a/reference_data/platforms.yaml b/reference_data/platforms.yaml index 3fcd681e..5ca3a89d 100644 --- a/reference_data/platforms.yaml +++ b/reference_data/platforms.yaml @@ -5411,7 +5411,7 @@ name: almalinux-kitten-10-devel type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/devel/x86_64_v2/os/ - export_path: vault/10/devel/x86_64_v2/os/ + export_path: vault/10-kitten/devel/x86_64_v2/os/ production: true debug: false remote_sync_policy: on_demand @@ -5431,7 +5431,7 @@ name: almalinux-kitten-10-devel type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/devel/Source/ - export_path: vault/10/devel/Source/ + export_path: vault/10-kitten/devel/Source/ production: true debug: false remote_sync_policy: on_demand @@ -5441,7 +5441,7 @@ name: almalinux-kitten-10-devel-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/devel/debug/s390x/ - export_path: vault/10/devel/debug/s390x/ + export_path: vault/10-kitten/devel/debug/s390x/ production: true debug: true remote_sync_policy: on_demand @@ -5452,7 +5452,7 @@ name: almalinux-kitten-10-devel-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/devel/debug/riscv64/ - export_path: vault/10/devel/debug/riscv64/ + export_path: vault/10-kitten/devel/debug/riscv64/ production: true debug: true remote_sync_policy: on_demand @@ -5463,7 +5463,7 @@ name: almalinux-kitten-10-devel-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/devel/debug/x86_64/ - export_path: vault/10/devel/debug/x86_64/ + export_path: vault/10-kitten/devel/debug/x86_64/ production: true debug: true remote_sync_policy: on_demand @@ -5474,7 +5474,7 @@ name: almalinux-kitten-10-devel-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/devel/debug/ppc64le/ - export_path: vault/10/devel/debug/ppc64le/ + export_path: vault/10-kitten/devel/debug/ppc64le/ production: true debug: true remote_sync_policy: on_demand @@ -5485,7 +5485,7 @@ name: almalinux-kitten-10-devel-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/devel/debug/x86_64_v2/ - export_path: vault/10/devel/debug/x86_64_v2/ + export_path: vault/10-kitten/devel/debug/x86_64_v2/ production: true debug: true remote_sync_policy: on_demand @@ -5496,7 +5496,7 @@ name: almalinux-kitten-10-devel-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/devel/debug/aarch64/ - export_path: vault/10/devel/debug/aarch64/ + export_path: vault/10-kitten/devel/debug/aarch64/ production: true debug: true remote_sync_policy: on_demand @@ -5507,7 +5507,7 @@ name: almalinux-kitten-10-appstream type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/AppStream/x86_64_v2/os/ - export_path: vault/10/AppStream/x86_64_v2/os/ + export_path: vault/10-kitten/AppStream/x86_64_v2/os/ production: true debug: false remote_sync_policy: on_demand @@ -5567,7 +5567,7 @@ name: almalinux-kitten-10-appstream type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/AppStream/Source/ - export_path: vault/10/AppStream/Source/ + export_path: vault/10-kitten/AppStream/Source/ production: true debug: false remote_sync_policy: on_demand @@ -5577,7 +5577,7 @@ name: almalinux-kitten-10-appstream-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/AppStream/debug/x86_64_v2/ - export_path: vault/10/AppStream/debug/x86_64_v2/ + export_path: vault/10-kitten/AppStream/debug/x86_64_v2/ production: true debug: true remote_sync_policy: on_demand @@ -5588,7 +5588,7 @@ name: almalinux-kitten-10-appstream-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/AppStream/debug/x86_64/ - export_path: vault/10/AppStream/debug/x86_64/ + export_path: vault/10-kitten/AppStream/debug/x86_64/ production: true debug: true remote_sync_policy: on_demand @@ -5599,7 +5599,7 @@ name: almalinux-kitten-10-appstream-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/AppStream/debug/ppc64le/ - export_path: vault/10/AppStream/debug/ppc64le/ + export_path: vault/10-kitten/AppStream/debug/ppc64le/ production: true debug: true remote_sync_policy: on_demand @@ -5610,7 +5610,7 @@ name: almalinux-kitten-10-appstream-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/AppStream/debug/aarch64/ - export_path: vault/10/AppStream/debug/aarch64/ + export_path: vault/10-kitten/AppStream/debug/aarch64/ production: true debug: true remote_sync_policy: on_demand @@ -5621,7 +5621,7 @@ name: almalinux-kitten-10-appstream-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/AppStream/debug/s390x/ - export_path: vault/10/AppStream/debug/s390x/ + export_path: vault/10-kitten/AppStream/debug/s390x/ production: true debug: true remote_sync_policy: on_demand @@ -5632,7 +5632,7 @@ name: almalinux-kitten-10-appstream-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/AppStream/debug/riscv64/ - export_path: vault/10/AppStream/debug/riscv64/ + export_path: vault/10-kitten/AppStream/debug/riscv64/ production: true debug: true remote_sync_policy: on_demand @@ -5643,7 +5643,7 @@ name: almalinux-kitten-10-baseos type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/BaseOS/x86_64_v2/os/ - export_path: vault/10/BaseOS/x86_64_v2/os/ + export_path: vault/10-kitten/BaseOS/x86_64_v2/os/ production: true debug: false remote_sync_policy: on_demand @@ -5703,7 +5703,7 @@ name: almalinux-kitten-10-baseos type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/BaseOS/Source/ - export_path: vault/10/BaseOS/Source/ + export_path: vault/10-kitten/BaseOS/Source/ production: true debug: false remote_sync_policy: on_demand @@ -5713,7 +5713,7 @@ name: almalinux-kitten-10-baseos-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/BaseOS/debug/x86_64_v2/ - export_path: vault/10/BaseOS/debug/x86_64_v2/ + export_path: vault/10-kitten/BaseOS/debug/x86_64_v2/ production: true debug: true remote_sync_policy: on_demand @@ -5724,7 +5724,7 @@ name: almalinux-kitten-10-baseos-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/BaseOS/debug/x86_64/ - export_path: vault/10/BaseOS/debug/x86_64/ + export_path: vault/10-kitten/BaseOS/debug/x86_64/ production: true debug: true remote_sync_policy: on_demand @@ -5735,7 +5735,7 @@ name: almalinux-kitten-10-baseos-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/BaseOS/debug/ppc64le/ - export_path: vault/10/BaseOS/debug/ppc64le/ + export_path: vault/10-kitten/BaseOS/debug/ppc64le/ production: true debug: true remote_sync_policy: on_demand @@ -5746,7 +5746,7 @@ name: almalinux-kitten-10-baseos-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/BaseOS/debug/aarch64/ - export_path: vault/10/BaseOS/debug/aarch64/ + export_path: vault/10-kitten/BaseOS/debug/aarch64/ production: true debug: true remote_sync_policy: on_demand @@ -5757,7 +5757,7 @@ name: almalinux-kitten-10-baseos-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/BaseOS/debug/s390x/ - export_path: vault/10/BaseOS/debug/s390x/ + export_path: vault/10-kitten/BaseOS/debug/s390x/ production: true debug: true remote_sync_policy: on_demand @@ -5768,7 +5768,7 @@ name: almalinux-kitten-10-baseos-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/BaseOS/debug/riscv64/ - export_path: vault/10/BaseOS/debug/riscv64/ + export_path: vault/10-kitten/BaseOS/debug/riscv64/ production: true debug: true remote_sync_policy: on_demand @@ -5779,7 +5779,7 @@ name: almalinux-kitten-10-highavailability type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/HighAvailability/x86_64_v2/os/ - export_path: vault/10/HighAvailability/x86_64_v2/os/ + export_path: vault/10-kitten/HighAvailability/x86_64_v2/os/ production: true debug: false remote_sync_policy: on_demand @@ -5839,7 +5839,7 @@ name: almalinux-kitten-10-highavailability type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/HighAvailability/Source/ - export_path: vault/10/HighAvailability/Source/ + export_path: vault/10-kitten/HighAvailability/Source/ production: true debug: false remote_sync_policy: on_demand @@ -5849,7 +5849,7 @@ name: almalinux-kitten-10-highavailability-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/HighAvailability/debug/x86_64_v2/ - export_path: vault/10/HighAvailability/debug/x86_64_v2/ + export_path: vault/10-kitten/HighAvailability/debug/x86_64_v2/ production: true debug: true remote_sync_policy: on_demand @@ -5860,7 +5860,7 @@ name: almalinux-kitten-10-highavailability-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/HighAvailability/debug/x86_64/ - export_path: vault/10/HighAvailability/debug/x86_64/ + export_path: vault/10-kitten/HighAvailability/debug/x86_64/ production: true debug: true remote_sync_policy: on_demand @@ -5871,7 +5871,7 @@ name: almalinux-kitten-10-highavailability-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/HighAvailability/debug/ppc64le/ - export_path: vault/10/HighAvailability/debug/ppc64le/ + export_path: vault/10-kitten/HighAvailability/debug/ppc64le/ production: true debug: true remote_sync_policy: on_demand @@ -5882,7 +5882,7 @@ name: almalinux-kitten-10-highavailability-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/HighAvailability/debug/aarch64/ - export_path: vault/10/HighAvailability/debug/aarch64/ + export_path: vault/10-kitten/HighAvailability/debug/aarch64/ production: true debug: true remote_sync_policy: on_demand @@ -5893,7 +5893,7 @@ name: almalinux-kitten-10-highavailability-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/HighAvailability/debug/s390x/ - export_path: vault/10/HighAvailability/debug/s390x/ + export_path: vault/10-kitten/HighAvailability/debug/s390x/ production: true debug: true remote_sync_policy: on_demand @@ -5904,7 +5904,7 @@ name: almalinux-kitten-10-highavailability-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/HighAvailability/debug/riscv64/ - export_path: vault/10/HighAvailability/debug/riscv64/ + export_path: vault/10-kitten/HighAvailability/debug/riscv64/ production: true debug: true remote_sync_policy: on_demand @@ -5915,7 +5915,7 @@ name: almalinux-kitten-10-resilientstorage type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/ResilientStorage/x86_64_v2/os/ - export_path: vault/10/ResilientStorage/x86_64_v2/os/ + export_path: vault/10-kitten/ResilientStorage/x86_64_v2/os/ production: true debug: false remote_sync_policy: on_demand @@ -5975,7 +5975,7 @@ name: almalinux-kitten-10-resilientstorage type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/ResilientStorage/Source/ - export_path: vault/10/ResilientStorage/Source/ + export_path: vault/10-kitten/ResilientStorage/Source/ production: true debug: false remote_sync_policy: on_demand @@ -5985,7 +5985,7 @@ name: almalinux-kitten-10-resilientstorage-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/ResilientStorage/debug/x86_64_v2/ - export_path: vault/10/ResilientStorage/debug/x86_64_v2/ + export_path: vault/10-kitten/ResilientStorage/debug/x86_64_v2/ production: true debug: true remote_sync_policy: on_demand @@ -5996,7 +5996,7 @@ name: almalinux-kitten-10-resilientstorage-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/ResilientStorage/debug/x86_64/ - export_path: vault/10/ResilientStorage/debug/x86_64/ + export_path: vault/10-kitten/ResilientStorage/debug/x86_64/ production: true debug: true remote_sync_policy: on_demand @@ -6007,7 +6007,7 @@ name: almalinux-kitten-10-resilientstorage-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/ResilientStorage/debug/ppc64le/ - export_path: vault/10/ResilientStorage/debug/ppc64le/ + export_path: vault/10-kitten/ResilientStorage/debug/ppc64le/ production: true debug: true remote_sync_policy: on_demand @@ -6018,7 +6018,7 @@ name: almalinux-kitten-10-resilientstorage-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/ResilientStorage/debug/aarch64/ - export_path: vault/10/ResilientStorage/debug/aarch64/ + export_path: vault/10-kitten/ResilientStorage/debug/aarch64/ production: true debug: true remote_sync_policy: on_demand @@ -6029,7 +6029,7 @@ name: almalinux-kitten-10-resilientstorage-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/ResilientStorage/debug/s390x/ - export_path: vault/10/ResilientStorage/debug/s390x/ + export_path: vault/10-kitten/ResilientStorage/debug/s390x/ production: true debug: true remote_sync_policy: on_demand @@ -6040,7 +6040,7 @@ name: almalinux-kitten-10-resilientstorage-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/ResilientStorage/debug/riscv64/ - export_path: vault/10/ResilientStorage/debug/riscv64/ + export_path: vault/10-kitten/ResilientStorage/debug/riscv64/ production: true debug: true remote_sync_policy: on_demand @@ -6051,7 +6051,7 @@ name: almalinux-kitten-10-extras type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/extras/x86_64_v2/os/ - export_path: vault/10/extras/x86_64_v2/os/ + export_path: vault/10-kitten/extras/x86_64_v2/os/ production: true debug: false remote_sync_policy: on_demand @@ -6111,7 +6111,7 @@ name: almalinux-kitten-10-extras type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/extras/Source/ - export_path: vault/10/extras/Source/ + export_path: vault/10-kitten/extras/Source/ production: true debug: false remote_sync_policy: on_demand @@ -6121,7 +6121,7 @@ name: almalinux-kitten-10-extras-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/extras/debug/x86_64_v2/ - export_path: vault/10/extras/debug/x86_64_v2/ + export_path: vault/10-kitten/extras/debug/x86_64_v2/ production: true debug: true remote_sync_policy: on_demand @@ -6132,7 +6132,7 @@ name: almalinux-kitten-10-extras-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/extras/debug/x86_64/ - export_path: vault/10/extras/debug/x86_64/ + export_path: vault/10-kitten/extras/debug/x86_64/ production: true debug: true remote_sync_policy: on_demand @@ -6143,7 +6143,7 @@ name: almalinux-kitten-10-extras-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/extras/debug/ppc64le/ - export_path: vault/10/extras/debug/ppc64le/ + export_path: vault/10-kitten/extras/debug/ppc64le/ production: true debug: true remote_sync_policy: on_demand @@ -6154,7 +6154,7 @@ name: almalinux-kitten-10-extras-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/extras/debug/aarch64/ - export_path: vault/10/extras/debug/aarch64/ + export_path: vault/10-kitten/extras/debug/aarch64/ production: true debug: true remote_sync_policy: on_demand @@ -6165,7 +6165,7 @@ name: almalinux-kitten-10-extras-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/extras/debug/s390x/ - export_path: vault/10/extras/debug/s390x/ + export_path: vault/10-kitten/extras/debug/s390x/ production: true debug: true remote_sync_policy: on_demand @@ -6176,7 +6176,7 @@ name: almalinux-kitten-10-extras-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/extras/debug/riscv64/ - export_path: vault/10/extras/debug/riscv64/ + export_path: vault/10-kitten/extras/debug/riscv64/ production: true debug: true remote_sync_policy: on_demand @@ -6187,7 +6187,7 @@ name: almalinux-kitten-10-crb type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/CRB/x86_64_v2/os/ - export_path: vault/10/CRB/x86_64_v2/os/ + export_path: vault/10-kitten/CRB/x86_64_v2/os/ production: true debug: false remote_sync_policy: on_demand @@ -6247,7 +6247,7 @@ name: almalinux-kitten-10-crb type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/CRB/Source/ - export_path: vault/10/CRB/Source/ + export_path: vault/10-kitten/CRB/Source/ production: true debug: false remote_sync_policy: on_demand @@ -6257,7 +6257,7 @@ name: almalinux-kitten-10-crb-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/CRB/debug/x86_64_v2/ - export_path: vault/10/CRB/debug/x86_64_v2/ + export_path: vault/10-kitten/CRB/debug/x86_64_v2/ production: true debug: true remote_sync_policy: on_demand @@ -6268,7 +6268,7 @@ name: almalinux-kitten-10-crb-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/CRB/debug/x86_64/ - export_path: vault/10/CRB/debug/x86_64/ + export_path: vault/10-kitten/CRB/debug/x86_64/ production: true debug: true remote_sync_policy: on_demand @@ -6279,7 +6279,7 @@ name: almalinux-kitten-10-crb-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/CRB/debug/ppc64le/ - export_path: vault/10/CRB/debug/ppc64le/ + export_path: vault/10-kitten/CRB/debug/ppc64le/ production: true debug: true remote_sync_policy: on_demand @@ -6290,7 +6290,7 @@ name: almalinux-kitten-10-crb-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/CRB/debug/aarch64/ - export_path: vault/10/CRB/debug/aarch64/ + export_path: vault/10-kitten/CRB/debug/aarch64/ production: true debug: true remote_sync_policy: on_demand @@ -6301,7 +6301,7 @@ name: almalinux-kitten-10-crb-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/CRB/debug/s390x/ - export_path: vault/10/CRB/debug/s390x/ + export_path: vault/10-kitten/CRB/debug/s390x/ production: true debug: true remote_sync_policy: on_demand @@ -6312,7 +6312,7 @@ name: almalinux-kitten-10-crb-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/CRB/debug/riscv64/ - export_path: vault/10/CRB/debug/riscv64/ + export_path: vault/10-kitten/CRB/debug/riscv64/ production: true debug: true remote_sync_policy: on_demand @@ -6323,7 +6323,7 @@ name: almalinux-kitten-10-nfv type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/NFV/x86_64_v2/os/ - export_path: vault/10/NFV/x86_64_v2/os/ + export_path: vault/10-kitten/NFV/x86_64_v2/os/ production: true debug: false remote_sync_policy: on_demand @@ -6333,7 +6333,7 @@ name: almalinux-kitten-10-nfv-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/NFV/debug/x86_64_v2/ - export_path: vault/10/NFV/debug/x86_64_v2/ + export_path: vault/10-kitten/NFV/debug/x86_64_v2/ production: true debug: true remote_sync_policy: on_demand @@ -6354,7 +6354,7 @@ name: almalinux-kitten-10-nfv type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/NFV/Source/ - export_path: vault/10/NFV/Source/ + export_path: vault/10-kitten/NFV/Source/ production: true debug: false remote_sync_policy: on_demand @@ -6364,7 +6364,7 @@ name: almalinux-kitten-10-nfv-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/NFV/debug/x86_64/ - export_path: vault/10/NFV/debug/x86_64/ + export_path: vault/10-kitten/NFV/debug/x86_64/ production: true debug: true remote_sync_policy: on_demand @@ -6375,7 +6375,7 @@ name: almalinux-kitten-10-rt type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/RT/x86_64_v2/os/ - export_path: vault/10/RT/x86_64_v2/os/ + export_path: vault/10-kitten/RT/x86_64_v2/os/ production: true debug: false remote_sync_policy: on_demand @@ -6385,7 +6385,7 @@ name: almalinux-kitten-10-rt-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/RT/debug/x86_64_v2/ - export_path: vault/10/RT/debug/x86_64_v2/ + export_path: vault/10-kitten/RT/debug/x86_64_v2/ production: true debug: true remote_sync_policy: on_demand @@ -6406,7 +6406,7 @@ name: almalinux-kitten-10-rt type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/RT/Source/ - export_path: vault/10/RT/Source/ + export_path: vault/10-kitten/RT/Source/ production: true debug: false remote_sync_policy: on_demand @@ -6416,7 +6416,7 @@ name: almalinux-kitten-10-rt-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/RT/debug/x86_64/ - export_path: vault/10/RT/debug/x86_64/ + export_path: vault/10-kitten/RT/debug/x86_64/ production: true debug: true remote_sync_policy: on_demand @@ -6427,7 +6427,7 @@ name: almalinux-kitten-10-sap type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/SAP/x86_64_v2/os/ - export_path: vault/10/SAP/x86_64_v2/os/ + export_path: vault/10-kitten/SAP/x86_64_v2/os/ production: true debug: false remote_sync_policy: on_demand @@ -6487,7 +6487,7 @@ name: almalinux-kitten-10-sap type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/SAP/Source/ - export_path: vault/10/SAP/Source/ + export_path: vault/10-kitten/SAP/Source/ production: true debug: false remote_sync_policy: on_demand @@ -6497,7 +6497,7 @@ name: almalinux-kitten-10-sap-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/SAP/debug/x86_64_v2/ - export_path: vault/10/SAP/debug/x86_64_v2/ + export_path: vault/10-kitten/SAP/debug/x86_64_v2/ production: true debug: true remote_sync_policy: on_demand @@ -6508,7 +6508,7 @@ name: almalinux-kitten-10-sap-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/SAP/debug/x86_64/ - export_path: vault/10/SAP/debug/x86_64/ + export_path: vault/10-kitten/SAP/debug/x86_64/ production: true debug: true remote_sync_policy: on_demand @@ -6519,7 +6519,7 @@ name: almalinux-kitten-10-sap-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/SAP/debug/ppc64le/ - export_path: vault/10/SAP/debug/ppc64le/ + export_path: vault/10-kitten/SAP/debug/ppc64le/ production: true debug: true remote_sync_policy: on_demand @@ -6530,7 +6530,7 @@ name: almalinux-kitten-10-sap-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/SAP/debug/aarch64/ - export_path: vault/10/SAP/debug/aarch64/ + export_path: vault/10-kitten/SAP/debug/aarch64/ production: true debug: true remote_sync_policy: on_demand @@ -6541,7 +6541,7 @@ name: almalinux-kitten-10-sap-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/SAP/debug/s390x/ - export_path: vault/10/SAP/debug/s390x/ + export_path: vault/10-kitten/SAP/debug/s390x/ production: true debug: true remote_sync_policy: on_demand @@ -6552,7 +6552,7 @@ name: almalinux-kitten-10-sap-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/SAP/debug/riscv64/ - export_path: vault/10/SAP/debug/riscv64/ + export_path: vault/10-kitten/SAP/debug/riscv64/ production: true debug: true remote_sync_policy: on_demand @@ -6563,7 +6563,7 @@ name: almalinux-kitten-10-saphana type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/SAPHANA/x86_64_v2/os/ - export_path: vault/10/SAPHANA/x86_64_v2/os/ + export_path: vault/10-kitten/SAPHANA/x86_64_v2/os/ production: true debug: false remote_sync_policy: on_demand @@ -6623,7 +6623,7 @@ name: almalinux-kitten-10-saphana type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/SAPHANA/Source/ - export_path: vault/10/SAPHANA/Source/ + export_path: vault/10-kitten/SAPHANA/Source/ production: true debug: false remote_sync_policy: on_demand @@ -6633,7 +6633,7 @@ name: almalinux-kitten-10-saphana-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/SAPHANA/debug/x86_64_v2/ - export_path: vault/10/SAPHANA/debug/x86_64_v2/ + export_path: vault/10-kitten/SAPHANA/debug/x86_64_v2/ production: true debug: true remote_sync_policy: on_demand @@ -6644,7 +6644,7 @@ name: almalinux-kitten-10-saphana-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/SAPHANA/debug/x86_64/ - export_path: vault/10/SAPHANA/debug/x86_64/ + export_path: vault/10-kitten/SAPHANA/debug/x86_64/ production: true debug: true remote_sync_policy: on_demand @@ -6655,7 +6655,7 @@ name: almalinux-kitten-10-saphana-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/SAPHANA/debug/ppc64le/ - export_path: vault/10/SAPHANA/debug/ppc64le/ + export_path: vault/10-kitten/SAPHANA/debug/ppc64le/ production: true debug: true remote_sync_policy: on_demand @@ -6666,7 +6666,7 @@ name: almalinux-kitten-10-saphana-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/SAPHANA/debug/aarch64/ - export_path: vault/10/SAPHANA/debug/aarch64/ + export_path: vault/10-kitten/SAPHANA/debug/aarch64/ production: true debug: true remote_sync_policy: on_demand @@ -6677,7 +6677,7 @@ name: almalinux-kitten-10-saphana-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/SAPHANA/debug/s390x/ - export_path: vault/10/SAPHANA/debug/s390x/ + export_path: vault/10-kitten/SAPHANA/debug/s390x/ production: true debug: true remote_sync_policy: on_demand @@ -6688,7 +6688,7 @@ name: almalinux-kitten-10-saphana-debuginfo type: rpm remote_url: http://repo.kitten.almalinux.org/vault/10/SAPHANA/debug/riscv64/ - export_path: vault/10/SAPHANA/debug/riscv64/ + export_path: vault/10-kitten/SAPHANA/debug/riscv64/ production: true debug: true remote_sync_policy: on_demand From aae635f898a75bc0e36495e2ceb82289dbebf6ac Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 7 Oct 2024 15:47:59 +0000 Subject: [PATCH 19/39] Bump plumbum from 1.8.3 to 1.9.0 Bumps [plumbum](https://github.com/tomerfiliba/plumbum) from 1.8.3 to 1.9.0. - [Release notes](https://github.com/tomerfiliba/plumbum/releases) - [Changelog](https://github.com/tomerfiliba/plumbum/blob/master/CHANGELOG.rst) - [Commits](https://github.com/tomerfiliba/plumbum/compare/v1.8.3...v1.9.0) --- updated-dependencies: - dependency-name: plumbum dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 1c52fc63..df0764cf 100644 --- a/requirements.txt +++ b/requirements.txt @@ -24,7 +24,7 @@ jmespath==1.0.1 lxml==5.3.0 markdown==3.7 pgpy==0.6.0 -plumbum==1.8.3 +plumbum==1.9.0 psycopg2-binary==2.9.9 pydantic-settings==2.5.2 pydantic==2.9.2 From ad62c65840fad00eabb303858b05378e460a6303 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 7 Oct 2024 15:48:11 +0000 Subject: [PATCH 20/39] Bump aiohttp from 3.10.8 to 3.10.9 Bumps [aiohttp](https://github.com/aio-libs/aiohttp) from 3.10.8 to 3.10.9. - [Release notes](https://github.com/aio-libs/aiohttp/releases) - [Changelog](https://github.com/aio-libs/aiohttp/blob/master/CHANGES.rst) - [Commits](https://github.com/aio-libs/aiohttp/compare/v3.10.8...v3.10.9) --- updated-dependencies: - dependency-name: aiohttp dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 1c52fc63..e046a291 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,7 +2,7 @@ PyYAML==6.0.2 SQLAlchemy==2.0.35 aiofiles==24.1.0 aiohttp-retry==2.8.3 -aiohttp==3.10.8 +aiohttp==3.10.9 aioredis==2.0.1 alembic-postgresql-enum==1.3.0 alembic==1.13.3 From 6233e86647ea23aa513d659ffe3e4f79cf9e1178 Mon Sep 17 00:00:00 2001 From: Yuriy Kohut Date: Tue, 8 Oct 2024 15:27:46 +0300 Subject: [PATCH 21/39] Add ppc64le repos for CentOS7 platform. --- reference_data/centos7.yml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/reference_data/centos7.yml b/reference_data/centos7.yml index f5a838da..6c3f28ae 100644 --- a/reference_data/centos7.yml +++ b/reference_data/centos7.yml @@ -9,9 +9,11 @@ arch_list: - x86_64 - aarch64 + - ppc64le copy_priority_arches: - x86_64 - aarch64 + - ppc64le weak_arch_list: data: definitions: @@ -72,3 +74,21 @@ debug: false remote_sync_policy: on_demand repository_sync_policy: additive + - arch: ppc64le + name: centos-7-baseos + type: rpm + remote_url: https://vault.centos.org/altarch/7.9.2009/os/ppc64le/ + export_path: altarch/7/os/ppc64le/ + production: false + debug: false + remote_sync_policy: on_demand + repository_sync_policy: additive + - arch: ppc64le + name: centos-7-updates + type: rpm + remote_url: https://vault.centos.org/altarch/7.9.2009/updates/ppc64le/ + export_path: altarch/7/updates/ppc64le/ + production: false + debug: false + remote_sync_policy: on_demand + repository_sync_policy: additive \ No newline at end of file From 6d200e8f9f1fc4537258e79190c680ed4897aebb Mon Sep 17 00:00:00 2001 From: Yuriy Kohut Date: Tue, 8 Oct 2024 16:38:00 +0300 Subject: [PATCH 22/39] Add ppc64le repository for EPEL-7 flavor --- reference_data/platform_flavors.yaml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/reference_data/platform_flavors.yaml b/reference_data/platform_flavors.yaml index 133cebae..516cabb7 100644 --- a/reference_data/platform_flavors.yaml +++ b/reference_data/platform_flavors.yaml @@ -231,6 +231,13 @@ production: false debug: false priority: 10 + - name: epel + arch: ppc64le + type: rpm + url: https://el7.repo.almalinux.org/epel/7/ppc64le/ + production: false + debug: false + priority: 10 - name: EPEL-10 repositories: From 48c00614efcef0ac7ebefe1dc628f717931ef8c7 Mon Sep 17 00:00:00 2001 From: Daniil Anfimov Date: Tue, 8 Oct 2024 15:40:20 +0200 Subject: [PATCH 23/39] Fix path appending in the products-exporter script --- scripts/exporters/base_exporter.py | 2 ++ scripts/exporters/packages_exporter.py | 6 ++---- scripts/exporters/products_exporter.py | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/scripts/exporters/base_exporter.py b/scripts/exporters/base_exporter.py index e422505c..20749e88 100644 --- a/scripts/exporters/base_exporter.py +++ b/scripts/exporters/base_exporter.py @@ -10,6 +10,8 @@ from plumbum import local from sqlalchemy import select +sys.path.append(str(Path(__file__).parent.parent.parent)) + from alws.config import settings from alws.dependencies import get_async_db_session from alws.models import Repository diff --git a/scripts/exporters/packages_exporter.py b/scripts/exporters/packages_exporter.py index 40a6503d..8501793d 100644 --- a/scripts/exporters/packages_exporter.py +++ b/scripts/exporters/packages_exporter.py @@ -27,10 +27,7 @@ from sqlalchemy.orm import selectinload from syncer import sync -from scripts.exporters.base_exporter import BasePulpExporter - -sys.path.append(os.path.dirname(os.path.dirname(__file__))) - +sys.path.append(str(Path(__file__).parent.parent.parent)) from alws import models from alws.config import settings @@ -47,6 +44,7 @@ ) from alws.utils.fastapi_sqla_setup import setup_all from alws.utils.osv import export_errata_to_osv +from scripts.exporters.base_exporter import BasePulpExporter KNOWN_SUBKEYS_CONFIG = os.path.abspath( os.path.expanduser("~/config/known_subkeys.json") diff --git a/scripts/exporters/products_exporter.py b/scripts/exporters/products_exporter.py index 1d77ff10..fa1c79e5 100644 --- a/scripts/exporters/products_exporter.py +++ b/scripts/exporters/products_exporter.py @@ -7,7 +7,7 @@ from sqlalchemy import select from sqlalchemy.orm import joinedload -sys.path.append(str(Path(__file__).parent.parent)) +sys.path.append(str(Path(__file__).parent.parent.parent)) from alws.config import settings from alws.dependencies import get_async_db_session From 5cd953ac5adfb99423385eb234fbcda32e65aae2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Oct 2024 15:56:34 +0000 Subject: [PATCH 24/39] Bump sentry-sdk[fastapi] from 2.15.0 to 2.16.0 Bumps [sentry-sdk[fastapi]](https://github.com/getsentry/sentry-python) from 2.15.0 to 2.16.0. - [Release notes](https://github.com/getsentry/sentry-python/releases) - [Changelog](https://github.com/getsentry/sentry-python/blob/master/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-python/compare/2.15.0...2.16.0) --- updated-dependencies: - dependency-name: sentry-sdk[fastapi] dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index fb5a19fe..3b1d39ab 100644 --- a/requirements.txt +++ b/requirements.txt @@ -29,7 +29,7 @@ psycopg2-binary==2.9.9 pydantic-settings==2.5.2 pydantic==2.9.2 python-multipart>=0.0.7 -sentry-sdk[fastapi]==2.15.0 # requires FastAPI>=0.79.0 +sentry-sdk[fastapi]==2.16.0 # requires FastAPI>=0.79.0 syncer==2.0.3 tap.py==3.1 uvicorn==0.31.0 From 37be05c16acc07cec79cb700dd7cb317c45af5e8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Oct 2024 15:56:37 +0000 Subject: [PATCH 25/39] Bump black from 24.8.0 to 24.10.0 Bumps [black](https://github.com/psf/black) from 24.8.0 to 24.10.0. - [Release notes](https://github.com/psf/black/releases) - [Changelog](https://github.com/psf/black/blob/main/CHANGES.md) - [Commits](https://github.com/psf/black/compare/24.8.0...24.10.0) --- updated-dependencies: - dependency-name: black dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- requirements-tests.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-tests.txt b/requirements-tests.txt index dbbad14c..04df688c 100644 --- a/requirements-tests.txt +++ b/requirements-tests.txt @@ -4,6 +4,6 @@ pyfakefs==5.6.0 # Linters isort[colors]==5.13.2 -black==24.8.0 +black==24.10.0 pylint==3.3.1 bandit[toml]==1.7.10 From e90055b37a089297d619829478f9c3035039c9aa Mon Sep 17 00:00:00 2001 From: Daniil Anfimov Date: Wed, 9 Oct 2024 14:11:23 +0200 Subject: [PATCH 26/39] Bug fixes in the product-exporter script --- scripts/exporters/base_exporter.py | 2 +- scripts/exporters/products_exporter.py | 36 ++++++++++++++++++-------- 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/scripts/exporters/base_exporter.py b/scripts/exporters/base_exporter.py index 20749e88..1929eb0a 100644 --- a/scripts/exporters/base_exporter.py +++ b/scripts/exporters/base_exporter.py @@ -24,7 +24,7 @@ def __init__( self, repodata_cache_dir: str, logger_name: str = '', - log_file_path: Path = Path('/srv/exporter.log'), + log_file_path: str = '/srv/exporter.log', verbose: bool = False, export_method: Literal['write', 'hardlink', 'symlink'] = 'hardlink', export_path: str = settings.pulp_export_path, diff --git a/scripts/exporters/products_exporter.py b/scripts/exporters/products_exporter.py index fa1c79e5..7bd9de06 100644 --- a/scripts/exporters/products_exporter.py +++ b/scripts/exporters/products_exporter.py @@ -11,7 +11,9 @@ from alws.config import settings from alws.dependencies import get_async_db_session +from alws.errors import DataNotFoundError from alws.models import Platform, Product, Repository +from alws.utils import pulp_client from alws.utils.fastapi_sqla_setup import setup_all from scripts.exporters.base_exporter import BasePulpExporter @@ -56,14 +58,6 @@ def parse_args(): required=False, help="Repodata cache directory", ) - parser.add_argument( - "-v", - "--verbose", - action="store_true", - default=False, - required=False, - help="Verbose output", - ) parser.add_argument( "-method", "--export-method", @@ -72,6 +66,22 @@ def parse_args(): required=False, help="Method of exporting (choices: write, hardlink, symlink)", ) + parser.add_argument( + "-l", + "--log", + type=str, + default='/srv/product-exporter.log', + required=False, + help="Path to export log", + ) + parser.add_argument( + "-v", + "--verbose", + action="store_true", + default=False, + required=False, + help="Verbose output", + ) return parser.parse_args() @@ -80,7 +90,7 @@ def __init__( self, repodata_cache_dir: str, logger_name: str = 'product-exporter', - log_file_path: Path = Path('/srv/product-exporter.log'), + log_file_path: str = '/srv/product-exporter.log', verbose: bool = False, export_method: Literal['write', 'hardlink', 'symlink'] = 'hardlink', export_path: str = settings.pulp_export_path, @@ -97,7 +107,7 @@ def __init__( async def export_product_repos( self, product_name: str, - distr_name, + distr_name: str, arches: List[str], ): self.logger.info( @@ -121,6 +131,8 @@ async def export_product_repos( ) async with get_async_db_session() as session: product = (await session.execute(query)).scalars().first() + if not product: + raise DataNotFoundError(f'Cannot find product: {product_name}') return await self.export_repositories( list({repo.id for repo in product.repositories}) ) @@ -133,7 +145,7 @@ async def repo_post_processing( async with SEMAPHORE: result = False try: - exporter.regenerate_repo_metadata(repo_path) + exporter.regenerate_repo_metadata(str(Path(repo_path).parent)) except Exception as exc: result = False exporter.logger.exception("Post-processing failed: %s", str(exc)) @@ -147,7 +159,9 @@ async def main(): repodata_cache_dir=args.cache_dir, verbose=args.verbose, export_method=args.export_method, + log_file_path=args.log, ) + pulp_client.PULP_SEMAPHORE = asyncio.Semaphore(10) exported_paths = await exporter.export_product_repos( product_name=args.product, distr_name=args.distribution, From 029c09e385bc8ca35514caded0e34740cee11d82 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 9 Oct 2024 15:15:03 +0000 Subject: [PATCH 27/39] Bump pyfakefs from 5.6.0 to 5.7.0 Bumps [pyfakefs](https://github.com/pytest-dev/pyfakefs) from 5.6.0 to 5.7.0. - [Release notes](https://github.com/pytest-dev/pyfakefs/releases) - [Changelog](https://github.com/pytest-dev/pyfakefs/blob/main/CHANGES.md) - [Commits](https://github.com/pytest-dev/pyfakefs/compare/v5.6.0...v5.7.0) --- updated-dependencies: - dependency-name: pyfakefs dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- requirements-tests.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-tests.txt b/requirements-tests.txt index dbbad14c..c87ade2f 100644 --- a/requirements-tests.txt +++ b/requirements-tests.txt @@ -1,6 +1,6 @@ pytest==8.3.3 pytest-cov==5.0.0 -pyfakefs==5.6.0 +pyfakefs==5.7.0 # Linters isort[colors]==5.13.2 From 706bf3d2838bf38778476c2acf5707e7c7021b63 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 11 Oct 2024 15:28:08 +0000 Subject: [PATCH 28/39] Bump aiohttp from 3.10.9 to 3.10.10 Bumps [aiohttp](https://github.com/aio-libs/aiohttp) from 3.10.9 to 3.10.10. - [Release notes](https://github.com/aio-libs/aiohttp/releases) - [Changelog](https://github.com/aio-libs/aiohttp/blob/master/CHANGES.rst) - [Commits](https://github.com/aio-libs/aiohttp/compare/v3.10.9...v3.10.10) --- updated-dependencies: - dependency-name: aiohttp dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 3b1d39ab..d40262c4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,7 +2,7 @@ PyYAML==6.0.2 SQLAlchemy==2.0.35 aiofiles==24.1.0 aiohttp-retry==2.8.3 -aiohttp==3.10.9 +aiohttp==3.10.10 aioredis==2.0.1 alembic-postgresql-enum==1.3.0 alembic==1.13.3 From 1ae8d040ad1b960465c95f2b02f8f1ca1ac1aac4 Mon Sep 17 00:00:00 2001 From: Maxim Date: Wed, 16 Oct 2024 18:30:31 +0200 Subject: [PATCH 29/39] Add ability to add new platforms to the product (#1008) Resolves: AlmaLinux/build-system#358 --- alws/crud/products.py | 155 ++++++++++++++++++++++---------- alws/routers/products.py | 18 ++++ tests/fixtures/products.py | 20 +++++ tests/test_api/test_products.py | 14 +++ 4 files changed, 158 insertions(+), 49 deletions(-) diff --git a/alws/crud/products.py b/alws/crud/products.py index 41e845bb..7e168081 100644 --- a/alws/crud/products.py +++ b/alws/crud/products.py @@ -18,7 +18,7 @@ from alws.models import Build, Product, Repository, Team, UserRole from alws.perms import actions from alws.perms.authorization import can_perform -from alws.schemas.product_schema import ProductCreate +from alws.schemas.product_schema import ProductCreate, Platform from alws.schemas.team_schema import TeamCreate from alws.utils.copr import create_product_repo, create_product_sign_key_repo from alws.utils.pulp_client import PulpClient @@ -34,6 +34,63 @@ logger = logging.getLogger(__name__) +async def add_repos_to_product( + pulp_client: PulpClient, + product: models.Product, + owner: models.User, + platforms: List[models.Platform] +): + repos_to_insert = [] + repo_tasks = [] + for platform in platforms: + platform_name = platform.name.lower() + repo_tasks.extend(( + create_product_repo( + pulp_client, + product.name, + owner.username, + platform_name, + arch, + is_debug, + ) + for arch in platform.arch_list + for is_debug in (True, False) + )) + repo_tasks.append( + create_product_repo( + pulp_client, + product.name, + owner.username, + platform_name, + 'src', + False, + ) + ) + task_results = await asyncio.gather(*repo_tasks) + + for ( + repo_name, + repo_url, + arch, + pulp_href, + export_path, + is_debug, + ) in task_results: + repo = models.Repository( + name=repo_name, + url=repo_url, + arch=arch, + pulp_href=pulp_href, + type=arch, + debug=is_debug, + production=True, + export_path=export_path, + ) + + repos_to_insert.append(repo) + return repos_to_insert + + async def create_product( db: AsyncSession, payload: ProductCreate, @@ -44,7 +101,6 @@ async def create_product( settings.pulp_password, ) items_to_insert = [] - repo_tasks = [] owner = await get_user(db, user_id=payload.owner_id) if not owner: @@ -81,52 +137,15 @@ async def create_product( .all() ) - for platform in product.platforms: - platform_name = platform.name.lower() - repo_tasks.extend(( - create_product_repo( - pulp_client, - product.name, - owner.username, - platform_name, - arch, - is_debug, - ) - for arch in platform.arch_list - for is_debug in (True, False) - )) - repo_tasks.append( - create_product_repo( - pulp_client, - product.name, - owner.username, - platform_name, - 'src', - False, - ) - ) - task_results = await asyncio.gather(*repo_tasks) + repos = await add_repos_to_product( + pulp_client=pulp_client, + product=product, + owner=owner, + platforms=product.platforms, + ) + items_to_insert.extend(repos) + product.repositories.extend(repos) - for ( - repo_name, - repo_url, - arch, - pulp_href, - export_path, - is_debug, - ) in task_results: - repo = models.Repository( - name=repo_name, - url=repo_url, - arch=arch, - pulp_href=pulp_href, - type=arch, - debug=is_debug, - production=True, - export_path=export_path, - ) - product.repositories.append(repo) - items_to_insert.append(repo) # Create sign key repository if a product is community if payload.is_community: repo_name, repo_url, repo_href = await create_product_sign_key_repo( @@ -367,8 +386,44 @@ async def modify_product( perform_product_modification.send(db_build.id, db_product.id, modification) +async def add_platform_to_product( + session: AsyncSession, + product_id: int, + platforms: List[Platform], +): + pulp_client = PulpClient( + settings.pulp_host, + settings.pulp_user, + settings.pulp_password, + ) + db_product = await get_products(session, product_id=product_id) + db_platforms = ( + ( + await session.execute( + select(models.Platform).where( + models.Platform.name.in_( + [platform.name for platform in platforms] + ), + ), + ) + ) + .scalars() + .all() + ) + db_product.platforms.extend(db_platforms) + repos = await add_repos_to_product( + pulp_client=pulp_client, + owner=db_product.owner, + product=db_product, + platforms=db_platforms + ) + db_product.repositories.extend(repos) + session.add_all(repos) + + async def get_repo_product( - session: AsyncSession, repository: str + session: AsyncSession, + repository: str, ) -> Optional[Product]: product_relationships = ( selectinload(Product.owner), @@ -383,7 +438,9 @@ async def get_repo_product( await session.execute( select(Build) .filter( - Build.repos.any(Repository.name.ilike(f'%{repository}')) + Build.repos.any( + Repository.name.ilike(f'%{repository}') + ) ) .options( joinedload(Build.team) diff --git a/alws/routers/products.py b/alws/routers/products.py index ac4a0a88..f1e6b8e7 100644 --- a/alws/routers/products.py +++ b/alws/routers/products.py @@ -175,3 +175,21 @@ async def create_gen_key_task( 'user_email': user.email, 'product_name': product.name, } + + +@router.post( + '/{product_id}/add_platforms/', + status_code=201, +) +async def add_platforms( + product_id: int, + platforms: List[product_schema.Platform], + db: AsyncSession = Depends(AsyncSessionDependency(key=get_async_db_key())), +): + try: + await products.add_platform_to_product(db, product_id, platforms) + except Exception as exc: + raise HTTPException( + detail=str(exc), + status_code=status.HTTP_400_BAD_REQUEST, + ) diff --git a/tests/fixtures/products.py b/tests/fixtures/products.py index 1fff2702..2323f62d 100644 --- a/tests/fixtures/products.py +++ b/tests/fixtures/products.py @@ -44,6 +44,26 @@ def product_create_payload(request) -> dict: } +@pytest.fixture +def add_platfroms_to_product_payload() -> list: + return [ + { + "id": 1, + "name": "AlmaLinux-9", + "distr_type": "rhel", + "distr_version": "9", + "arch_list": [ + "i686", + "x86_64", + "ppc64le", + "aarch64", + "s390x", + ], + "modularity": {}, + } + ] + + @pytest.fixture( params=[ ADMIN_USER_ID, diff --git a/tests/test_api/test_products.py b/tests/test_api/test_products.py index 71b48d57..98ee279d 100644 --- a/tests/test_api/test_products.py +++ b/tests/test_api/test_products.py @@ -29,6 +29,20 @@ async def test_product_create( ) assert response.status_code == self.status_codes.HTTP_200_OK, message + async def test_add_platfroms_to_product( + self, + user_product: Product, + add_platfroms_to_product_payload, + ): + endpoint = f"/api/v1/products/{user_product.id}/add_platforms/" + response = await self.make_request( + "post", + endpoint, + json=add_platfroms_to_product_payload, + ) + + assert response.status_code == self.status_codes.HTTP_201_CREATED + async def test_add_to_product( self, regular_build: Build, From ad2571209eef8cdb5e7aa318ae3211caad353e71 Mon Sep 17 00:00:00 2001 From: bklvsky Date: Tue, 15 Oct 2024 20:31:56 +0000 Subject: [PATCH 30/39] Preparing errata bulk releases for UI (AlmaLinux/build-system#325) - Adding force parameter to bulk releases errata - Setting IN_PROGRESS status in router - black formatting --- alws/crud/errata.py | 66 ++++++++++++++++++++++++++++++----------- alws/dramatiq/errata.py | 16 ++++++---- alws/routers/errata.py | 55 +++++++++++++++++++++++----------- 3 files changed, 98 insertions(+), 39 deletions(-) diff --git a/alws/crud/errata.py b/alws/crud/errata.py index be6fa9ba..de00b5b1 100644 --- a/alws/crud/errata.py +++ b/alws/crud/errata.py @@ -1452,7 +1452,9 @@ async def release_errata_record(record_id: str, platform_id: int, force: bool): logging.info("Record %s successfully released", record_id) -async def bulk_errata_records_release(records_ids: List[str]): +async def bulk_errata_records_release( + records_ids: List[str], force: bool = False +): pulp = PulpClient( settings.pulp_host, settings.pulp_user, @@ -1460,16 +1462,6 @@ async def bulk_errata_records_release(records_ids: List[str]): ) release_tasks = [] repos_to_publish = [] - async with open_async_session(key=get_async_db_key()) as session: - await session.execute( - update(models.NewErrataRecord) - .where(models.NewErrataRecord.id.in_(records_ids)) - .values( - release_status=ErrataReleaseStatus.IN_PROGRESS, - last_release_log=None, - ) - ) - async with open_async_session(key=get_async_db_key()) as session: session: AsyncSession db_records = await session.execute( @@ -1500,7 +1492,9 @@ async def bulk_errata_records_release(records_ids: List[str]): ( repo_mapping, missing_pkg_names, - ) = get_albs_packages_from_record(db_record, pulp_packages) + ) = get_albs_packages_from_record( + db_record, pulp_packages, force + ) except Exception as exc: db_record.release_status = ErrataReleaseStatus.FAILED db_record.last_release_log = str(exc) @@ -1668,7 +1662,9 @@ async def get_updateinfo_xml_from_pulp( return cr_upd.xml_dump() if cr_upd.updates else None -async def prepare_resetting(items_to_insert: List, record: models.NewErrataRecord, session: AsyncSession): +async def prepare_resetting( + items_to_insert: List, record: models.NewErrataRecord, session: AsyncSession +): search_params = prepare_search_params(record) prod_repos_cache = await load_platform_packages( platform=record.platform, @@ -1721,7 +1717,9 @@ async def reset_matched_errata_packages(record_id: str, session: AsyncSession): await session.flush() -async def get_errata_records_threshold(issued_date_str: str, session: AsyncSession): +async def get_errata_records_threshold( + issued_date_str: str, session: AsyncSession +): issued_date = datetime.datetime.strptime( issued_date_str, '%Y-%m-%d %H:%M:%S' ) @@ -1748,7 +1746,7 @@ async def get_errata_records_threshold(issued_date_str: str, session: AsyncSessi async def reset_matched_erratas_packages_threshold( - issued_date: str, + issued_date: str, ): async with open_async_session(key=get_async_db_key()) as session: records = await get_errata_records_threshold(issued_date, session) @@ -1757,5 +1755,39 @@ async def reset_matched_erratas_packages_threshold( await prepare_resetting(items_to_insert, record, session) session.add_all(items_to_insert) await session.flush() - logging.info(f'Packages for records {[record.id for record in records]}' - f' have been matched if their date is later than {issued_date}') + logging.info( + f'Packages for records {[record.id for record in records]}' + f' have been matched if their date is later than {issued_date}' + ) + + +async def set_errata_packages_in_progress( + records_ids: List[str], + session: AsyncSession, +): + db_records = await session.execute( + select(models.NewErrataRecord).where( + models.NewErrataRecord.id.in_(records_ids) + ) + ) + records = db_records.scalars().all() + records_to_update = [ + record.id + for record in records + if record.release_status != ErrataReleaseStatus.IN_PROGRESS + ] + skipped_records = [ + record.id + for record in records + if record.release_status == ErrataReleaseStatus.IN_PROGRESS + ] + if records_to_update: + await session.execute( + update(models.NewErrataRecord) + .where(models.NewErrataRecord.id.in_(records_to_update)) + .values( + release_status=ErrataReleaseStatus.IN_PROGRESS, + last_release_log=None, + ) + ) + return records_to_update, skipped_records diff --git a/alws/dramatiq/errata.py b/alws/dramatiq/errata.py index 3179d8a8..2996dfae 100644 --- a/alws/dramatiq/errata.py +++ b/alws/dramatiq/errata.py @@ -22,8 +22,10 @@ async def _release_errata_record(record_id: str, platform_id: int, force: bool): ) -async def _bulk_errata_records_release(records_ids: typing.List[str]): - await bulk_errata_records_release(records_ids) +async def _bulk_errata_records_release( + records_ids: typing.List[str], force: bool = False +): + await bulk_errata_records_release(records_ids, force) async def _reset_matched_erratas_packages_threshold(issued_date: str): @@ -53,9 +55,11 @@ def release_errata(record_id: str, platform_id: int, force: bool): queue_name="errata", time_limit=DRAMATIQ_TASK_TIMEOUT, ) -def bulk_errata_release(records_ids: typing.List[str]): +def bulk_errata_release(records_ids: typing.List[str], force: bool = False): event_loop.run_until_complete(setup_all()) - event_loop.run_until_complete(_bulk_errata_records_release(records_ids)) + event_loop.run_until_complete( + _bulk_errata_records_release(records_ids, force) + ) @dramatiq.actor( @@ -66,4 +70,6 @@ def bulk_errata_release(records_ids: typing.List[str]): ) def reset_records_threshold(issued_date: str): event_loop.run_until_complete(setup_all()) - event_loop.run_until_complete(_reset_matched_erratas_packages_threshold(issued_date)) + event_loop.run_until_complete( + _reset_matched_erratas_packages_threshold(issued_date) + ) diff --git a/alws/routers/errata.py b/alws/routers/errata.py index 68770524..50462d43 100644 --- a/alws/routers/errata.py +++ b/alws/routers/errata.py @@ -8,9 +8,16 @@ from alws.auth import get_current_user from alws.constants import ErrataReleaseStatus from alws.crud import errata as errata_crud -from alws.crud.errata import get_errata_records_threshold +from alws.crud.errata import ( + get_errata_records_threshold, + set_errata_packages_in_progress, +) from alws.dependencies import get_async_db_key -from alws.dramatiq import bulk_errata_release, release_errata, reset_records_threshold +from alws.dramatiq import ( + bulk_errata_release, + release_errata, + reset_records_threshold, +) from alws.schemas import errata_schema router = APIRouter( @@ -193,14 +200,26 @@ async def release_errata_record( @router.post("/bulk_release_records/") -async def bulk_release_errata_records(records_ids: List[str]): - bulk_errata_release.send(records_ids) - return { - "message": ( - "Following records scheduled for release:" - f" {', '.join(records_ids)}" - ) - } +async def bulk_release_errata_records( + records_ids: List[str], + force: bool = False, + session: AsyncSession = Depends( + AsyncSessionDependency(key=get_async_db_key()) + ), +): + records_to_update, skipped_records = await set_errata_packages_in_progress( + records_ids, session + ) + if not records_to_update: + return {"message": "No records to update, all in progress"} + bulk_errata_release.send(records_ids, force) + message = ( + "Following records scheduled for release:" + f" {', '.join(records_to_update)}" + ) + if skipped_records: + message = f"{message}. Skipped: {', '.join(skipped_records)}" + return {"message": message} @router.post('/reset-matched-packages') @@ -216,17 +235,19 @@ async def reset_matched_packages( @router.post('/reset-matched-packages-multiple') async def reset_matched_erratas_packages_threshold( - issued_date, - session: AsyncSession = Depends( - AsyncSessionDependency(key=get_async_db_key()) - ), + issued_date, + session: AsyncSession = Depends( + AsyncSessionDependency(key=get_async_db_key()) + ), ): records = await get_errata_records_threshold(issued_date, session) if records: reset_records_threshold.send(issued_date) - message = (f"Records issued after {issued_date} are scheduled for package resetting" - if records else - f"No unreleased records found after {issued_date} including") + message = ( + f"Records issued after {issued_date} are scheduled for package resetting" + if records + else f"No unreleased records found after {issued_date} including" + ) return {'message': message} From 64b9da7d2a9fbab229d42a1d8ce63ea2a7e06253 Mon Sep 17 00:00:00 2001 From: eabdullin Date: Mon, 21 Oct 2024 13:29:11 +0300 Subject: [PATCH 31/39] - Change export path for almalinux-kitten-10 - Renave extras repo to extras-common --- reference_data/platforms.yaml | 162 +++++++++++++++++----------------- 1 file changed, 81 insertions(+), 81 deletions(-) diff --git a/reference_data/platforms.yaml b/reference_data/platforms.yaml index 5ca3a89d..2166de71 100644 --- a/reference_data/platforms.yaml +++ b/reference_data/platforms.yaml @@ -5371,7 +5371,7 @@ name: almalinux-kitten-10-devel type: rpm remote_url: http://kitten.repo.almalinux.org/10-kitten/devel/s390x/os/ - export_path: kitten-10/devel/s390x/os/ + export_path: almalinux-kitten/10-kitten/devel/s390x/os/ production: true debug: false remote_sync_policy: on_demand @@ -5381,7 +5381,7 @@ name: almalinux-kitten-10-devel type: rpm remote_url: http://kitten.repo.almalinux.org/10-kitten/devel/riscv64/os/ - export_path: kitten-10/devel/riscv64/os/ + export_path: almalinux-kitten/10-kitten/devel/riscv64/os/ production: true debug: false remote_sync_policy: on_demand @@ -5391,7 +5391,7 @@ name: almalinux-kitten-10-devel type: rpm remote_url: http://kitten.repo.almalinux.org/10-kitten/devel/x86_64/os/ - export_path: kitten-10/devel/x86_64/os/ + export_path: almalinux-kitten/10-kitten/devel/x86_64/os/ production: true debug: false remote_sync_policy: on_demand @@ -5401,7 +5401,7 @@ name: almalinux-kitten-10-devel type: rpm remote_url: http://kitten.repo.almalinux.org/10-kitten/devel/ppc64le/os/ - export_path: kitten-10/devel/ppc64le/os/ + export_path: almalinux-kitten/10-kitten/devel/ppc64le/os/ production: true debug: false remote_sync_policy: on_demand @@ -5421,7 +5421,7 @@ name: almalinux-kitten-10-devel type: rpm remote_url: http://kitten.repo.almalinux.org/10-kitten/devel/aarch64/os/ - export_path: kitten-10/devel/aarch64/os/ + export_path: almalinux-kitten/10-kitten/devel/aarch64/os/ production: true debug: false remote_sync_policy: on_demand @@ -5517,7 +5517,7 @@ name: almalinux-kitten-10-appstream type: rpm remote_url: http://kitten.repo.almalinux.org/10-kitten/AppStream/x86_64/os/ - export_path: kitten-10/AppStream/x86_64/os/ + export_path: almalinux-kitten/10-kitten/AppStream/x86_64/os/ production: true debug: false remote_sync_policy: on_demand @@ -5527,7 +5527,7 @@ name: almalinux-kitten-10-appstream type: rpm remote_url: http://kitten.repo.almalinux.org/10-kitten/AppStream/ppc64le/os/ - export_path: kitten-10/AppStream/ppc64le/os/ + export_path: almalinux-kitten/10-kitten/AppStream/ppc64le/os/ production: true debug: false remote_sync_policy: on_demand @@ -5537,7 +5537,7 @@ name: almalinux-kitten-10-appstream type: rpm remote_url: http://kitten.repo.almalinux.org/10-kitten/AppStream/aarch64/os/ - export_path: kitten-10/AppStream/aarch64/os/ + export_path: almalinux-kitten/10-kitten/AppStream/aarch64/os/ production: true debug: false remote_sync_policy: on_demand @@ -5547,7 +5547,7 @@ name: almalinux-kitten-10-appstream type: rpm remote_url: http://kitten.repo.almalinux.org/10-kitten/AppStream/s390x/os/ - export_path: kitten-10/AppStream/s390x/os/ + export_path: almalinux-kitten/10-kitten/AppStream/s390x/os/ production: true debug: false remote_sync_policy: on_demand @@ -5557,7 +5557,7 @@ name: almalinux-kitten-10-appstream type: rpm remote_url: http://kitten.repo.almalinux.org/10-kitten/AppStream/riscv64/os/ - export_path: kitten-10/AppStream/riscv64/os/ + export_path: almalinux-kitten/10-kitten/AppStream/riscv64/os/ production: true debug: false remote_sync_policy: on_demand @@ -5653,7 +5653,7 @@ name: almalinux-kitten-10-baseos type: rpm remote_url: http://kitten.repo.almalinux.org/10-kitten/BaseOS/x86_64/os/ - export_path: kitten-10/BaseOS/x86_64/os/ + export_path: almalinux-kitten/10-kitten/BaseOS/x86_64/os/ production: true debug: false remote_sync_policy: on_demand @@ -5663,7 +5663,7 @@ name: almalinux-kitten-10-baseos type: rpm remote_url: http://kitten.repo.almalinux.org/10-kitten/BaseOS/ppc64le/os/ - export_path: kitten-10/BaseOS/ppc64le/os/ + export_path: almalinux-kitten/10-kitten/BaseOS/ppc64le/os/ production: true debug: false remote_sync_policy: on_demand @@ -5673,7 +5673,7 @@ name: almalinux-kitten-10-baseos type: rpm remote_url: http://kitten.repo.almalinux.org/10-kitten/BaseOS/aarch64/os/ - export_path: kitten-10/BaseOS/aarch64/os/ + export_path: almalinux-kitten/10-kitten/BaseOS/aarch64/os/ production: true debug: false remote_sync_policy: on_demand @@ -5683,7 +5683,7 @@ name: almalinux-kitten-10-baseos type: rpm remote_url: http://kitten.repo.almalinux.org/10-kitten/BaseOS/s390x/os/ - export_path: kitten-10/BaseOS/s390x/os/ + export_path: almalinux-kitten/10-kitten/BaseOS/s390x/os/ production: true debug: false remote_sync_policy: on_demand @@ -5693,7 +5693,7 @@ name: almalinux-kitten-10-baseos type: rpm remote_url: http://kitten.repo.almalinux.org/10-kitten/BaseOS/riscv64/os/ - export_path: kitten-10/BaseOS/riscv64/os/ + export_path: almalinux-kitten/10-kitten/BaseOS/riscv64/os/ production: true debug: false remote_sync_policy: on_demand @@ -5789,7 +5789,7 @@ name: almalinux-kitten-10-highavailability type: rpm remote_url: http://kitten.repo.almalinux.org/10-kitten/HighAvailability/x86_64/os/ - export_path: kitten-10/HighAvailability/x86_64/os/ + export_path: almalinux-kitten/10-kitten/HighAvailability/x86_64/os/ production: true debug: false remote_sync_policy: on_demand @@ -5799,7 +5799,7 @@ name: almalinux-kitten-10-highavailability type: rpm remote_url: http://kitten.repo.almalinux.org/10-kitten/HighAvailability/ppc64le/os/ - export_path: kitten-10/HighAvailability/ppc64le/os/ + export_path: almalinux-kitten/10-kitten/HighAvailability/ppc64le/os/ production: true debug: false remote_sync_policy: on_demand @@ -5809,7 +5809,7 @@ name: almalinux-kitten-10-highavailability type: rpm remote_url: http://kitten.repo.almalinux.org/10-kitten/HighAvailability/aarch64/os/ - export_path: kitten-10/HighAvailability/aarch64/os/ + export_path: almalinux-kitten/10-kitten/HighAvailability/aarch64/os/ production: true debug: false remote_sync_policy: on_demand @@ -5819,7 +5819,7 @@ name: almalinux-kitten-10-highavailability type: rpm remote_url: http://kitten.repo.almalinux.org/10-kitten/HighAvailability/s390x/os/ - export_path: kitten-10/HighAvailability/s390x/os/ + export_path: almalinux-kitten/10-kitten/HighAvailability/s390x/os/ production: true debug: false remote_sync_policy: on_demand @@ -5829,7 +5829,7 @@ name: almalinux-kitten-10-highavailability type: rpm remote_url: http://kitten.repo.almalinux.org/10-kitten/HighAvailability/riscv64/os/ - export_path: kitten-10/HighAvailability/riscv64/os/ + export_path: almalinux-kitten/10-kitten/HighAvailability/riscv64/os/ production: true debug: false remote_sync_policy: on_demand @@ -5925,7 +5925,7 @@ name: almalinux-kitten-10-resilientstorage type: rpm remote_url: http://kitten.repo.almalinux.org/10-kitten/ResilientStorage/x86_64/os/ - export_path: kitten-10/ResilientStorage/x86_64/os/ + export_path: almalinux-kitten/10-kitten/ResilientStorage/x86_64/os/ production: true debug: false remote_sync_policy: on_demand @@ -5935,7 +5935,7 @@ name: almalinux-kitten-10-resilientstorage type: rpm remote_url: http://kitten.repo.almalinux.org/10-kitten/ResilientStorage/ppc64le/os/ - export_path: kitten-10/ResilientStorage/ppc64le/os/ + export_path: almalinux-kitten/10-kitten/ResilientStorage/ppc64le/os/ production: true debug: false remote_sync_policy: on_demand @@ -5945,7 +5945,7 @@ name: almalinux-kitten-10-resilientstorage type: rpm remote_url: http://kitten.repo.almalinux.org/10-kitten/ResilientStorage/aarch64/os/ - export_path: kitten-10/ResilientStorage/aarch64/os/ + export_path: almalinux-kitten/10-kitten/ResilientStorage/aarch64/os/ production: true debug: false remote_sync_policy: on_demand @@ -5955,7 +5955,7 @@ name: almalinux-kitten-10-resilientstorage type: rpm remote_url: http://kitten.repo.almalinux.org/10-kitten/ResilientStorage/s390x/os/ - export_path: kitten-10/ResilientStorage/s390x/os/ + export_path: almalinux-kitten/10-kitten/ResilientStorage/s390x/os/ production: true debug: false remote_sync_policy: on_demand @@ -5965,7 +5965,7 @@ name: almalinux-kitten-10-resilientstorage type: rpm remote_url: http://kitten.repo.almalinux.org/10-kitten/ResilientStorage/riscv64/os/ - export_path: kitten-10/ResilientStorage/riscv64/os/ + export_path: almalinux-kitten/10-kitten/ResilientStorage/riscv64/os/ production: true debug: false remote_sync_policy: on_demand @@ -6048,80 +6048,80 @@ priority: 10 mock_enabled: false - arch: x86_64_v2 - name: almalinux-kitten-10-extras + name: almalinux-kitten-10-extras-common type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/extras/x86_64_v2/os/ - export_path: vault/10-kitten/extras/x86_64_v2/os/ + remote_url: http://repo.kitten.almalinux.org/vault/10/extras-common/x86_64_v2/os/ + export_path: vault/10-kitten/extras-common/x86_64_v2/os/ production: true debug: false remote_sync_policy: on_demand repository_sync_policy: additive priority: 10 - arch: x86_64 - name: almalinux-kitten-10-extras + name: almalinux-kitten-10-extras-common type: rpm - remote_url: http://kitten.repo.almalinux.org/10-kitten/extras/x86_64/os/ - export_path: kitten-10/extras/x86_64/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/extras-common/x86_64/os/ + export_path: almalinux-kitten/10-kitten/extras-common/x86_64/os/ production: true debug: false remote_sync_policy: on_demand repository_sync_policy: additive priority: 10 - arch: ppc64le - name: almalinux-kitten-10-extras + name: almalinux-kitten-10-extras-common type: rpm - remote_url: http://kitten.repo.almalinux.org/10-kitten/extras/ppc64le/os/ - export_path: kitten-10/extras/ppc64le/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/extras-common/ppc64le/os/ + export_path: almalinux-kitten/10-kitten/extras-common/ppc64le/os/ production: true debug: false remote_sync_policy: on_demand repository_sync_policy: additive priority: 10 - arch: aarch64 - name: almalinux-kitten-10-extras + name: almalinux-kitten-10-extras-common type: rpm - remote_url: http://kitten.repo.almalinux.org/10-kitten/extras/aarch64/os/ - export_path: kitten-10/extras/aarch64/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/extras-common/aarch64/os/ + export_path: almalinux-kitten/10-kitten/extras-common/aarch64/os/ production: true debug: false remote_sync_policy: on_demand repository_sync_policy: additive priority: 10 - arch: s390x - name: almalinux-kitten-10-extras + name: almalinux-kitten-10-extras-common type: rpm - remote_url: http://kitten.repo.almalinux.org/10-kitten/extras/s390x/os/ - export_path: kitten-10/extras/s390x/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/extras-common/s390x/os/ + export_path: almalinux-kitten/10-kitten/extras-common/s390x/os/ production: true debug: false remote_sync_policy: on_demand repository_sync_policy: additive priority: 10 - arch: riscv64 - name: almalinux-kitten-10-extras + name: almalinux-kitten-10-extras-common type: rpm - remote_url: http://kitten.repo.almalinux.org/10-kitten/extras/riscv64/os/ - export_path: kitten-10/extras/riscv64/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/extras-common/riscv64/os/ + export_path: almalinux-kitten/10-kitten/extras-common/riscv64/os/ production: true debug: false remote_sync_policy: on_demand repository_sync_policy: additive priority: 10 - arch: src - name: almalinux-kitten-10-extras + name: almalinux-kitten-10-extras-common type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/extras/Source/ - export_path: vault/10-kitten/extras/Source/ + remote_url: http://repo.kitten.almalinux.org/vault/10/extras-common/Source/ + export_path: vault/10-kitten/extras-common/Source/ production: true debug: false remote_sync_policy: on_demand repository_sync_policy: additive priority: 10 - arch: x86_64_v2 - name: almalinux-kitten-10-extras-debuginfo + name: almalinux-kitten-10-extras-common-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/extras/debug/x86_64_v2/ - export_path: vault/10-kitten/extras/debug/x86_64_v2/ + remote_url: http://repo.kitten.almalinux.org/vault/10/extras-common/debug/x86_64_v2/ + export_path: vault/10-kitten/extras-common/debug/x86_64_v2/ production: true debug: true remote_sync_policy: on_demand @@ -6129,10 +6129,10 @@ priority: 10 mock_enabled: false - arch: x86_64 - name: almalinux-kitten-10-extras-debuginfo + name: almalinux-kitten-10-extras-common-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/extras/debug/x86_64/ - export_path: vault/10-kitten/extras/debug/x86_64/ + remote_url: http://repo.kitten.almalinux.org/vault/10/extras-common/debug/x86_64/ + export_path: vault/10-kitten/extras-common/debug/x86_64/ production: true debug: true remote_sync_policy: on_demand @@ -6140,10 +6140,10 @@ priority: 10 mock_enabled: false - arch: ppc64le - name: almalinux-kitten-10-extras-debuginfo + name: almalinux-kitten-10-extras-common-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/extras/debug/ppc64le/ - export_path: vault/10-kitten/extras/debug/ppc64le/ + remote_url: http://repo.kitten.almalinux.org/vault/10/extras-common/debug/ppc64le/ + export_path: vault/10-kitten/extras-common/debug/ppc64le/ production: true debug: true remote_sync_policy: on_demand @@ -6151,10 +6151,10 @@ priority: 10 mock_enabled: false - arch: aarch64 - name: almalinux-kitten-10-extras-debuginfo + name: almalinux-kitten-10-extras-common-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/extras/debug/aarch64/ - export_path: vault/10-kitten/extras/debug/aarch64/ + remote_url: http://repo.kitten.almalinux.org/vault/10/extras-common/debug/aarch64/ + export_path: vault/10-kitten/extras-common/debug/aarch64/ production: true debug: true remote_sync_policy: on_demand @@ -6162,10 +6162,10 @@ priority: 10 mock_enabled: false - arch: s390x - name: almalinux-kitten-10-extras-debuginfo + name: almalinux-kitten-10-extras-common-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/extras/debug/s390x/ - export_path: vault/10-kitten/extras/debug/s390x/ + remote_url: http://repo.kitten.almalinux.org/vault/10/extras-common/debug/s390x/ + export_path: vault/10-kitten/extras-common/debug/s390x/ production: true debug: true remote_sync_policy: on_demand @@ -6173,10 +6173,10 @@ priority: 10 mock_enabled: false - arch: riscv64 - name: almalinux-kitten-10-extras-debuginfo + name: almalinux-kitten-10-extras-common-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/extras/debug/riscv64/ - export_path: vault/10-kitten/extras/debug/riscv64/ + remote_url: http://repo.kitten.almalinux.org/vault/10/extras-common/debug/riscv64/ + export_path: vault/10-kitten/extras-common/debug/riscv64/ production: true debug: true remote_sync_policy: on_demand @@ -6197,7 +6197,7 @@ name: almalinux-kitten-10-crb type: rpm remote_url: http://kitten.repo.almalinux.org/10-kitten/CRB/x86_64/os/ - export_path: kitten-10/CRB/x86_64/os/ + export_path: almalinux-kitten/10-kitten/CRB/x86_64/os/ production: true debug: false remote_sync_policy: on_demand @@ -6207,7 +6207,7 @@ name: almalinux-kitten-10-crb type: rpm remote_url: http://kitten.repo.almalinux.org/10-kitten/CRB/ppc64le/os/ - export_path: kitten-10/CRB/ppc64le/os/ + export_path: almalinux-kitten/10-kitten/CRB/ppc64le/os/ production: true debug: false remote_sync_policy: on_demand @@ -6217,7 +6217,7 @@ name: almalinux-kitten-10-crb type: rpm remote_url: http://kitten.repo.almalinux.org/10-kitten/CRB/aarch64/os/ - export_path: kitten-10/CRB/aarch64/os/ + export_path: almalinux-kitten/10-kitten/CRB/aarch64/os/ production: true debug: false remote_sync_policy: on_demand @@ -6227,7 +6227,7 @@ name: almalinux-kitten-10-crb type: rpm remote_url: http://kitten.repo.almalinux.org/10-kitten/CRB/s390x/os/ - export_path: kitten-10/CRB/s390x/os/ + export_path: almalinux-kitten/10-kitten/CRB/s390x/os/ production: true debug: false remote_sync_policy: on_demand @@ -6237,7 +6237,7 @@ name: almalinux-kitten-10-crb type: rpm remote_url: http://kitten.repo.almalinux.org/10-kitten/CRB/riscv64/os/ - export_path: kitten-10/CRB/riscv64/os/ + export_path: almalinux-kitten/10-kitten/CRB/riscv64/os/ production: true debug: false remote_sync_policy: on_demand @@ -6344,7 +6344,7 @@ name: almalinux-kitten-10-nfv type: rpm remote_url: http://kitten.repo.almalinux.org/10-kitten/NFV/x86_64/os/ - export_path: kitten-10/NFV/x86_64/os/ + export_path: almalinux-kitten/10-kitten/NFV/x86_64/os/ production: true debug: false remote_sync_policy: on_demand @@ -6396,7 +6396,7 @@ name: almalinux-kitten-10-rt type: rpm remote_url: http://kitten.repo.almalinux.org/10-kitten/RT/x86_64/os/ - export_path: kitten-10/RT/x86_64/os/ + export_path: almalinux-kitten/10-kitten/RT/x86_64/os/ production: true debug: false remote_sync_policy: on_demand @@ -6437,7 +6437,7 @@ name: almalinux-kitten-10-sap type: rpm remote_url: http://kitten.repo.almalinux.org/10-kitten/SAP/x86_64/os/ - export_path: kitten-10/SAP/x86_64/os/ + export_path: almalinux-kitten/10-kitten/SAP/x86_64/os/ production: true debug: false remote_sync_policy: on_demand @@ -6447,7 +6447,7 @@ name: almalinux-kitten-10-sap type: rpm remote_url: http://kitten.repo.almalinux.org/10-kitten/SAP/ppc64le/os/ - export_path: kitten-10/SAP/ppc64le/os/ + export_path: almalinux-kitten/10-kitten/SAP/ppc64le/os/ production: true debug: false remote_sync_policy: on_demand @@ -6457,7 +6457,7 @@ name: almalinux-kitten-10-sap type: rpm remote_url: http://kitten.repo.almalinux.org/10-kitten/SAP/aarch64/os/ - export_path: kitten-10/SAP/aarch64/os/ + export_path: almalinux-kitten/10-kitten/SAP/aarch64/os/ production: true debug: false remote_sync_policy: on_demand @@ -6467,7 +6467,7 @@ name: almalinux-kitten-10-sap type: rpm remote_url: http://kitten.repo.almalinux.org/10-kitten/SAP/s390x/os/ - export_path: kitten-10/SAP/s390x/os/ + export_path: almalinux-kitten/10-kitten/SAP/s390x/os/ production: true debug: false remote_sync_policy: on_demand @@ -6477,7 +6477,7 @@ name: almalinux-kitten-10-sap type: rpm remote_url: http://kitten.repo.almalinux.org/10-kitten/SAP/riscv64/os/ - export_path: kitten-10/SAP/riscv64/os/ + export_path: almalinux-kitten/10-kitten/SAP/riscv64/os/ production: true debug: false remote_sync_policy: on_demand @@ -6573,7 +6573,7 @@ name: almalinux-kitten-10-saphana type: rpm remote_url: http://kitten.repo.almalinux.org/10-kitten/SAPHANA/x86_64/os/ - export_path: kitten-10/SAPHANA/x86_64/os/ + export_path: almalinux-kitten/10-kitten/SAPHANA/x86_64/os/ production: true debug: false remote_sync_policy: on_demand @@ -6583,7 +6583,7 @@ name: almalinux-kitten-10-saphana type: rpm remote_url: http://kitten.repo.almalinux.org/10-kitten/SAPHANA/ppc64le/os/ - export_path: kitten-10/SAPHANA/ppc64le/os/ + export_path: almalinux-kitten/10-kitten/SAPHANA/ppc64le/os/ production: true debug: false remote_sync_policy: on_demand @@ -6593,7 +6593,7 @@ name: almalinux-kitten-10-saphana type: rpm remote_url: http://kitten.repo.almalinux.org/10-kitten/SAPHANA/aarch64/os/ - export_path: kitten-10/SAPHANA/aarch64/os/ + export_path: almalinux-kitten/10-kitten/SAPHANA/aarch64/os/ production: true debug: false remote_sync_policy: on_demand @@ -6603,7 +6603,7 @@ name: almalinux-kitten-10-saphana type: rpm remote_url: http://kitten.repo.almalinux.org/10-kitten/SAPHANA/s390x/os/ - export_path: kitten-10/SAPHANA/s390x/os/ + export_path: almalinux-kitten/10-kitten/SAPHANA/s390x/os/ production: true debug: false remote_sync_policy: on_demand @@ -6613,7 +6613,7 @@ name: almalinux-kitten-10-saphana type: rpm remote_url: http://kitten.repo.almalinux.org/10-kitten/SAPHANA/riscv64/os/ - export_path: kitten-10/SAPHANA/riscv64/os/ + export_path: almalinux-kitten/10-kitten/SAPHANA/riscv64/os/ production: true debug: false remote_sync_policy: on_demand From 99411cbaef5a49a8a04c018614df5f3dc0bde360 Mon Sep 17 00:00:00 2001 From: eabdullin Date: Mon, 21 Oct 2024 13:32:19 +0300 Subject: [PATCH 32/39] Update urls --- reference_data/platforms.yaml | 160 +++++++++++++++++----------------- 1 file changed, 80 insertions(+), 80 deletions(-) diff --git a/reference_data/platforms.yaml b/reference_data/platforms.yaml index 2166de71..33150d76 100644 --- a/reference_data/platforms.yaml +++ b/reference_data/platforms.yaml @@ -5410,7 +5410,7 @@ - arch: x86_64_v2 name: almalinux-kitten-10-devel type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/devel/x86_64_v2/os/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/devel/x86_64_v2/os/ export_path: vault/10-kitten/devel/x86_64_v2/os/ production: true debug: false @@ -5430,7 +5430,7 @@ - arch: src name: almalinux-kitten-10-devel type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/devel/Source/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/devel/Source/ export_path: vault/10-kitten/devel/Source/ production: true debug: false @@ -5440,7 +5440,7 @@ - arch: s390x name: almalinux-kitten-10-devel-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/devel/debug/s390x/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/devel/debug/s390x/ export_path: vault/10-kitten/devel/debug/s390x/ production: true debug: true @@ -5451,7 +5451,7 @@ - arch: riscv64 name: almalinux-kitten-10-devel-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/devel/debug/riscv64/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/devel/debug/riscv64/ export_path: vault/10-kitten/devel/debug/riscv64/ production: true debug: true @@ -5462,7 +5462,7 @@ - arch: x86_64 name: almalinux-kitten-10-devel-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/devel/debug/x86_64/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/devel/debug/x86_64/ export_path: vault/10-kitten/devel/debug/x86_64/ production: true debug: true @@ -5473,7 +5473,7 @@ - arch: ppc64le name: almalinux-kitten-10-devel-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/devel/debug/ppc64le/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/devel/debug/ppc64le/ export_path: vault/10-kitten/devel/debug/ppc64le/ production: true debug: true @@ -5484,7 +5484,7 @@ - arch: x86_64_v2 name: almalinux-kitten-10-devel-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/devel/debug/x86_64_v2/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/devel/debug/x86_64_v2/ export_path: vault/10-kitten/devel/debug/x86_64_v2/ production: true debug: true @@ -5495,7 +5495,7 @@ - arch: aarch64 name: almalinux-kitten-10-devel-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/devel/debug/aarch64/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/devel/debug/aarch64/ export_path: vault/10-kitten/devel/debug/aarch64/ production: true debug: true @@ -5506,7 +5506,7 @@ - arch: x86_64_v2 name: almalinux-kitten-10-appstream type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/AppStream/x86_64_v2/os/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/AppStream/x86_64_v2/os/ export_path: vault/10-kitten/AppStream/x86_64_v2/os/ production: true debug: false @@ -5566,7 +5566,7 @@ - arch: src name: almalinux-kitten-10-appstream type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/AppStream/Source/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/AppStream/Source/ export_path: vault/10-kitten/AppStream/Source/ production: true debug: false @@ -5576,7 +5576,7 @@ - arch: x86_64_v2 name: almalinux-kitten-10-appstream-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/AppStream/debug/x86_64_v2/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/AppStream/debug/x86_64_v2/ export_path: vault/10-kitten/AppStream/debug/x86_64_v2/ production: true debug: true @@ -5587,7 +5587,7 @@ - arch: x86_64 name: almalinux-kitten-10-appstream-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/AppStream/debug/x86_64/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/AppStream/debug/x86_64/ export_path: vault/10-kitten/AppStream/debug/x86_64/ production: true debug: true @@ -5598,7 +5598,7 @@ - arch: ppc64le name: almalinux-kitten-10-appstream-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/AppStream/debug/ppc64le/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/AppStream/debug/ppc64le/ export_path: vault/10-kitten/AppStream/debug/ppc64le/ production: true debug: true @@ -5609,7 +5609,7 @@ - arch: aarch64 name: almalinux-kitten-10-appstream-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/AppStream/debug/aarch64/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/AppStream/debug/aarch64/ export_path: vault/10-kitten/AppStream/debug/aarch64/ production: true debug: true @@ -5620,7 +5620,7 @@ - arch: s390x name: almalinux-kitten-10-appstream-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/AppStream/debug/s390x/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/AppStream/debug/s390x/ export_path: vault/10-kitten/AppStream/debug/s390x/ production: true debug: true @@ -5631,7 +5631,7 @@ - arch: riscv64 name: almalinux-kitten-10-appstream-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/AppStream/debug/riscv64/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/AppStream/debug/riscv64/ export_path: vault/10-kitten/AppStream/debug/riscv64/ production: true debug: true @@ -5642,7 +5642,7 @@ - arch: x86_64_v2 name: almalinux-kitten-10-baseos type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/BaseOS/x86_64_v2/os/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/BaseOS/x86_64_v2/os/ export_path: vault/10-kitten/BaseOS/x86_64_v2/os/ production: true debug: false @@ -5702,7 +5702,7 @@ - arch: src name: almalinux-kitten-10-baseos type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/BaseOS/Source/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/BaseOS/Source/ export_path: vault/10-kitten/BaseOS/Source/ production: true debug: false @@ -5712,7 +5712,7 @@ - arch: x86_64_v2 name: almalinux-kitten-10-baseos-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/BaseOS/debug/x86_64_v2/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/BaseOS/debug/x86_64_v2/ export_path: vault/10-kitten/BaseOS/debug/x86_64_v2/ production: true debug: true @@ -5723,7 +5723,7 @@ - arch: x86_64 name: almalinux-kitten-10-baseos-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/BaseOS/debug/x86_64/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/BaseOS/debug/x86_64/ export_path: vault/10-kitten/BaseOS/debug/x86_64/ production: true debug: true @@ -5734,7 +5734,7 @@ - arch: ppc64le name: almalinux-kitten-10-baseos-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/BaseOS/debug/ppc64le/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/BaseOS/debug/ppc64le/ export_path: vault/10-kitten/BaseOS/debug/ppc64le/ production: true debug: true @@ -5745,7 +5745,7 @@ - arch: aarch64 name: almalinux-kitten-10-baseos-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/BaseOS/debug/aarch64/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/BaseOS/debug/aarch64/ export_path: vault/10-kitten/BaseOS/debug/aarch64/ production: true debug: true @@ -5756,7 +5756,7 @@ - arch: s390x name: almalinux-kitten-10-baseos-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/BaseOS/debug/s390x/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/BaseOS/debug/s390x/ export_path: vault/10-kitten/BaseOS/debug/s390x/ production: true debug: true @@ -5767,7 +5767,7 @@ - arch: riscv64 name: almalinux-kitten-10-baseos-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/BaseOS/debug/riscv64/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/BaseOS/debug/riscv64/ export_path: vault/10-kitten/BaseOS/debug/riscv64/ production: true debug: true @@ -5778,7 +5778,7 @@ - arch: x86_64_v2 name: almalinux-kitten-10-highavailability type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/HighAvailability/x86_64_v2/os/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/HighAvailability/x86_64_v2/os/ export_path: vault/10-kitten/HighAvailability/x86_64_v2/os/ production: true debug: false @@ -5838,7 +5838,7 @@ - arch: src name: almalinux-kitten-10-highavailability type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/HighAvailability/Source/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/HighAvailability/Source/ export_path: vault/10-kitten/HighAvailability/Source/ production: true debug: false @@ -5848,7 +5848,7 @@ - arch: x86_64_v2 name: almalinux-kitten-10-highavailability-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/HighAvailability/debug/x86_64_v2/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/HighAvailability/debug/x86_64_v2/ export_path: vault/10-kitten/HighAvailability/debug/x86_64_v2/ production: true debug: true @@ -5859,7 +5859,7 @@ - arch: x86_64 name: almalinux-kitten-10-highavailability-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/HighAvailability/debug/x86_64/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/HighAvailability/debug/x86_64/ export_path: vault/10-kitten/HighAvailability/debug/x86_64/ production: true debug: true @@ -5870,7 +5870,7 @@ - arch: ppc64le name: almalinux-kitten-10-highavailability-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/HighAvailability/debug/ppc64le/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/HighAvailability/debug/ppc64le/ export_path: vault/10-kitten/HighAvailability/debug/ppc64le/ production: true debug: true @@ -5881,7 +5881,7 @@ - arch: aarch64 name: almalinux-kitten-10-highavailability-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/HighAvailability/debug/aarch64/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/HighAvailability/debug/aarch64/ export_path: vault/10-kitten/HighAvailability/debug/aarch64/ production: true debug: true @@ -5892,7 +5892,7 @@ - arch: s390x name: almalinux-kitten-10-highavailability-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/HighAvailability/debug/s390x/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/HighAvailability/debug/s390x/ export_path: vault/10-kitten/HighAvailability/debug/s390x/ production: true debug: true @@ -5903,7 +5903,7 @@ - arch: riscv64 name: almalinux-kitten-10-highavailability-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/HighAvailability/debug/riscv64/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/HighAvailability/debug/riscv64/ export_path: vault/10-kitten/HighAvailability/debug/riscv64/ production: true debug: true @@ -5914,7 +5914,7 @@ - arch: x86_64_v2 name: almalinux-kitten-10-resilientstorage type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/ResilientStorage/x86_64_v2/os/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/ResilientStorage/x86_64_v2/os/ export_path: vault/10-kitten/ResilientStorage/x86_64_v2/os/ production: true debug: false @@ -5974,7 +5974,7 @@ - arch: src name: almalinux-kitten-10-resilientstorage type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/ResilientStorage/Source/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/ResilientStorage/Source/ export_path: vault/10-kitten/ResilientStorage/Source/ production: true debug: false @@ -5984,7 +5984,7 @@ - arch: x86_64_v2 name: almalinux-kitten-10-resilientstorage-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/ResilientStorage/debug/x86_64_v2/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/ResilientStorage/debug/x86_64_v2/ export_path: vault/10-kitten/ResilientStorage/debug/x86_64_v2/ production: true debug: true @@ -5995,7 +5995,7 @@ - arch: x86_64 name: almalinux-kitten-10-resilientstorage-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/ResilientStorage/debug/x86_64/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/ResilientStorage/debug/x86_64/ export_path: vault/10-kitten/ResilientStorage/debug/x86_64/ production: true debug: true @@ -6006,7 +6006,7 @@ - arch: ppc64le name: almalinux-kitten-10-resilientstorage-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/ResilientStorage/debug/ppc64le/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/ResilientStorage/debug/ppc64le/ export_path: vault/10-kitten/ResilientStorage/debug/ppc64le/ production: true debug: true @@ -6017,7 +6017,7 @@ - arch: aarch64 name: almalinux-kitten-10-resilientstorage-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/ResilientStorage/debug/aarch64/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/ResilientStorage/debug/aarch64/ export_path: vault/10-kitten/ResilientStorage/debug/aarch64/ production: true debug: true @@ -6028,7 +6028,7 @@ - arch: s390x name: almalinux-kitten-10-resilientstorage-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/ResilientStorage/debug/s390x/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/ResilientStorage/debug/s390x/ export_path: vault/10-kitten/ResilientStorage/debug/s390x/ production: true debug: true @@ -6039,7 +6039,7 @@ - arch: riscv64 name: almalinux-kitten-10-resilientstorage-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/ResilientStorage/debug/riscv64/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/ResilientStorage/debug/riscv64/ export_path: vault/10-kitten/ResilientStorage/debug/riscv64/ production: true debug: true @@ -6050,7 +6050,7 @@ - arch: x86_64_v2 name: almalinux-kitten-10-extras-common type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/extras-common/x86_64_v2/os/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/extras-common/x86_64_v2/os/ export_path: vault/10-kitten/extras-common/x86_64_v2/os/ production: true debug: false @@ -6110,7 +6110,7 @@ - arch: src name: almalinux-kitten-10-extras-common type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/extras-common/Source/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/extras-common/Source/ export_path: vault/10-kitten/extras-common/Source/ production: true debug: false @@ -6120,7 +6120,7 @@ - arch: x86_64_v2 name: almalinux-kitten-10-extras-common-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/extras-common/debug/x86_64_v2/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/extras-common/debug/x86_64_v2/ export_path: vault/10-kitten/extras-common/debug/x86_64_v2/ production: true debug: true @@ -6131,7 +6131,7 @@ - arch: x86_64 name: almalinux-kitten-10-extras-common-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/extras-common/debug/x86_64/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/extras-common/debug/x86_64/ export_path: vault/10-kitten/extras-common/debug/x86_64/ production: true debug: true @@ -6142,7 +6142,7 @@ - arch: ppc64le name: almalinux-kitten-10-extras-common-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/extras-common/debug/ppc64le/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/extras-common/debug/ppc64le/ export_path: vault/10-kitten/extras-common/debug/ppc64le/ production: true debug: true @@ -6153,7 +6153,7 @@ - arch: aarch64 name: almalinux-kitten-10-extras-common-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/extras-common/debug/aarch64/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/extras-common/debug/aarch64/ export_path: vault/10-kitten/extras-common/debug/aarch64/ production: true debug: true @@ -6164,7 +6164,7 @@ - arch: s390x name: almalinux-kitten-10-extras-common-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/extras-common/debug/s390x/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/extras-common/debug/s390x/ export_path: vault/10-kitten/extras-common/debug/s390x/ production: true debug: true @@ -6175,7 +6175,7 @@ - arch: riscv64 name: almalinux-kitten-10-extras-common-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/extras-common/debug/riscv64/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/extras-common/debug/riscv64/ export_path: vault/10-kitten/extras-common/debug/riscv64/ production: true debug: true @@ -6186,7 +6186,7 @@ - arch: x86_64_v2 name: almalinux-kitten-10-crb type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/CRB/x86_64_v2/os/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/CRB/x86_64_v2/os/ export_path: vault/10-kitten/CRB/x86_64_v2/os/ production: true debug: false @@ -6246,7 +6246,7 @@ - arch: src name: almalinux-kitten-10-crb type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/CRB/Source/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/CRB/Source/ export_path: vault/10-kitten/CRB/Source/ production: true debug: false @@ -6256,7 +6256,7 @@ - arch: x86_64_v2 name: almalinux-kitten-10-crb-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/CRB/debug/x86_64_v2/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/CRB/debug/x86_64_v2/ export_path: vault/10-kitten/CRB/debug/x86_64_v2/ production: true debug: true @@ -6267,7 +6267,7 @@ - arch: x86_64 name: almalinux-kitten-10-crb-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/CRB/debug/x86_64/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/CRB/debug/x86_64/ export_path: vault/10-kitten/CRB/debug/x86_64/ production: true debug: true @@ -6278,7 +6278,7 @@ - arch: ppc64le name: almalinux-kitten-10-crb-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/CRB/debug/ppc64le/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/CRB/debug/ppc64le/ export_path: vault/10-kitten/CRB/debug/ppc64le/ production: true debug: true @@ -6289,7 +6289,7 @@ - arch: aarch64 name: almalinux-kitten-10-crb-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/CRB/debug/aarch64/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/CRB/debug/aarch64/ export_path: vault/10-kitten/CRB/debug/aarch64/ production: true debug: true @@ -6300,7 +6300,7 @@ - arch: s390x name: almalinux-kitten-10-crb-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/CRB/debug/s390x/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/CRB/debug/s390x/ export_path: vault/10-kitten/CRB/debug/s390x/ production: true debug: true @@ -6311,7 +6311,7 @@ - arch: riscv64 name: almalinux-kitten-10-crb-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/CRB/debug/riscv64/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/CRB/debug/riscv64/ export_path: vault/10-kitten/CRB/debug/riscv64/ production: true debug: true @@ -6322,7 +6322,7 @@ - arch: x86_64_v2 name: almalinux-kitten-10-nfv type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/NFV/x86_64_v2/os/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/NFV/x86_64_v2/os/ export_path: vault/10-kitten/NFV/x86_64_v2/os/ production: true debug: false @@ -6332,7 +6332,7 @@ - arch: x86_64_v2 name: almalinux-kitten-10-nfv-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/NFV/debug/x86_64_v2/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/NFV/debug/x86_64_v2/ export_path: vault/10-kitten/NFV/debug/x86_64_v2/ production: true debug: true @@ -6353,7 +6353,7 @@ - arch: src name: almalinux-kitten-10-nfv type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/NFV/Source/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/NFV/Source/ export_path: vault/10-kitten/NFV/Source/ production: true debug: false @@ -6363,7 +6363,7 @@ - arch: x86_64 name: almalinux-kitten-10-nfv-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/NFV/debug/x86_64/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/NFV/debug/x86_64/ export_path: vault/10-kitten/NFV/debug/x86_64/ production: true debug: true @@ -6374,7 +6374,7 @@ - arch: x86_64_v2 name: almalinux-kitten-10-rt type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/RT/x86_64_v2/os/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/RT/x86_64_v2/os/ export_path: vault/10-kitten/RT/x86_64_v2/os/ production: true debug: false @@ -6384,7 +6384,7 @@ - arch: x86_64_v2 name: almalinux-kitten-10-rt-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/RT/debug/x86_64_v2/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/RT/debug/x86_64_v2/ export_path: vault/10-kitten/RT/debug/x86_64_v2/ production: true debug: true @@ -6405,7 +6405,7 @@ - arch: src name: almalinux-kitten-10-rt type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/RT/Source/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/RT/Source/ export_path: vault/10-kitten/RT/Source/ production: true debug: false @@ -6415,7 +6415,7 @@ - arch: x86_64 name: almalinux-kitten-10-rt-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/RT/debug/x86_64/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/RT/debug/x86_64/ export_path: vault/10-kitten/RT/debug/x86_64/ production: true debug: true @@ -6426,7 +6426,7 @@ - arch: x86_64_v2 name: almalinux-kitten-10-sap type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/SAP/x86_64_v2/os/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/SAP/x86_64_v2/os/ export_path: vault/10-kitten/SAP/x86_64_v2/os/ production: true debug: false @@ -6486,7 +6486,7 @@ - arch: src name: almalinux-kitten-10-sap type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/SAP/Source/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/SAP/Source/ export_path: vault/10-kitten/SAP/Source/ production: true debug: false @@ -6496,7 +6496,7 @@ - arch: x86_64_v2 name: almalinux-kitten-10-sap-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/SAP/debug/x86_64_v2/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/SAP/debug/x86_64_v2/ export_path: vault/10-kitten/SAP/debug/x86_64_v2/ production: true debug: true @@ -6507,7 +6507,7 @@ - arch: x86_64 name: almalinux-kitten-10-sap-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/SAP/debug/x86_64/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/SAP/debug/x86_64/ export_path: vault/10-kitten/SAP/debug/x86_64/ production: true debug: true @@ -6518,7 +6518,7 @@ - arch: ppc64le name: almalinux-kitten-10-sap-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/SAP/debug/ppc64le/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/SAP/debug/ppc64le/ export_path: vault/10-kitten/SAP/debug/ppc64le/ production: true debug: true @@ -6529,7 +6529,7 @@ - arch: aarch64 name: almalinux-kitten-10-sap-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/SAP/debug/aarch64/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/SAP/debug/aarch64/ export_path: vault/10-kitten/SAP/debug/aarch64/ production: true debug: true @@ -6540,7 +6540,7 @@ - arch: s390x name: almalinux-kitten-10-sap-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/SAP/debug/s390x/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/SAP/debug/s390x/ export_path: vault/10-kitten/SAP/debug/s390x/ production: true debug: true @@ -6551,7 +6551,7 @@ - arch: riscv64 name: almalinux-kitten-10-sap-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/SAP/debug/riscv64/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/SAP/debug/riscv64/ export_path: vault/10-kitten/SAP/debug/riscv64/ production: true debug: true @@ -6562,7 +6562,7 @@ - arch: x86_64_v2 name: almalinux-kitten-10-saphana type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/SAPHANA/x86_64_v2/os/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/SAPHANA/x86_64_v2/os/ export_path: vault/10-kitten/SAPHANA/x86_64_v2/os/ production: true debug: false @@ -6622,7 +6622,7 @@ - arch: src name: almalinux-kitten-10-saphana type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/SAPHANA/Source/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/SAPHANA/Source/ export_path: vault/10-kitten/SAPHANA/Source/ production: true debug: false @@ -6632,7 +6632,7 @@ - arch: x86_64_v2 name: almalinux-kitten-10-saphana-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/SAPHANA/debug/x86_64_v2/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/SAPHANA/debug/x86_64_v2/ export_path: vault/10-kitten/SAPHANA/debug/x86_64_v2/ production: true debug: true @@ -6643,7 +6643,7 @@ - arch: x86_64 name: almalinux-kitten-10-saphana-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/SAPHANA/debug/x86_64/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/SAPHANA/debug/x86_64/ export_path: vault/10-kitten/SAPHANA/debug/x86_64/ production: true debug: true @@ -6654,7 +6654,7 @@ - arch: ppc64le name: almalinux-kitten-10-saphana-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/SAPHANA/debug/ppc64le/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/SAPHANA/debug/ppc64le/ export_path: vault/10-kitten/SAPHANA/debug/ppc64le/ production: true debug: true @@ -6665,7 +6665,7 @@ - arch: aarch64 name: almalinux-kitten-10-saphana-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/SAPHANA/debug/aarch64/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/SAPHANA/debug/aarch64/ export_path: vault/10-kitten/SAPHANA/debug/aarch64/ production: true debug: true @@ -6676,7 +6676,7 @@ - arch: s390x name: almalinux-kitten-10-saphana-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/SAPHANA/debug/s390x/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/SAPHANA/debug/s390x/ export_path: vault/10-kitten/SAPHANA/debug/s390x/ production: true debug: true @@ -6687,7 +6687,7 @@ - arch: riscv64 name: almalinux-kitten-10-saphana-debuginfo type: rpm - remote_url: http://repo.kitten.almalinux.org/vault/10/SAPHANA/debug/riscv64/ + remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/SAPHANA/debug/riscv64/ export_path: vault/10-kitten/SAPHANA/debug/riscv64/ production: true debug: true From decce5af0ddb461ae0c8d05ad726c1ebb5a206ee Mon Sep 17 00:00:00 2001 From: Vasily Kleschov Date: Mon, 21 Oct 2024 18:15:35 +0200 Subject: [PATCH 33/39] Fixed setting up proxy while bootstraping repositories --- scripts/bootstrap_repositories.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/scripts/bootstrap_repositories.py b/scripts/bootstrap_repositories.py index 30f69194..09665464 100644 --- a/scripts/bootstrap_repositories.py +++ b/scripts/bootstrap_repositories.py @@ -153,9 +153,12 @@ async def get_remote(repo_info: dict, remote_sync_policy: str): remote_payload.pop("production", False) remote_payload["url"] = remote_payload["remote_url"] remote_payload["policy"] = remote_sync_policy - remote_payload["proxy_url"] = os.getenv("PULP_PROXY_URL") - remote_payload["proxy_username"] = os.getenv("PULP_PROXY_USERNAME") - remote_payload["proxy_password"] = os.getenv("PULP_PROXY_PASSWORD") + if os.getenv("PULP_PROXY_URL"): + remote_payload["proxy_url"] = os.getenv("PULP_PROXY_URL") + if os.getenv("PULP_PROXY_USERNAME"): + remote_payload["proxy_username"] = os.getenv("PULP_PROXY_USERNAME") + if os.getenv("PULP_PROXY_PASSWORD"): + remote_payload["proxy_password"] = os.getenv("PULP_PROXY_PASSWORD") remote = await repo_crud.create_repository_remote( db, remote_schema.RemoteCreate(**remote_payload) ) From fa02303df93bd405a00f35b328a626f86c9e3eb2 Mon Sep 17 00:00:00 2001 From: eabdullin Date: Tue, 22 Oct 2024 11:21:41 +0300 Subject: [PATCH 34/39] Fix x86_64_v2 repos for ALK10 --- reference_data/platforms.yaml | 44 +++++++++++++++++------------------ 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/reference_data/platforms.yaml b/reference_data/platforms.yaml index 33150d76..7103fecf 100644 --- a/reference_data/platforms.yaml +++ b/reference_data/platforms.yaml @@ -5410,8 +5410,8 @@ - arch: x86_64_v2 name: almalinux-kitten-10-devel type: rpm - remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/devel/x86_64_v2/os/ - export_path: vault/10-kitten/devel/x86_64_v2/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/devel/x86_64_v2/os/ + export_path: almalinux-kitten/10-kitten/devel/x86_64_v2/os/ production: true debug: false remote_sync_policy: on_demand @@ -5506,8 +5506,8 @@ - arch: x86_64_v2 name: almalinux-kitten-10-appstream type: rpm - remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/AppStream/x86_64_v2/os/ - export_path: vault/10-kitten/AppStream/x86_64_v2/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/AppStream/x86_64_v2/os/ + export_path: almalinux-kitten/10-kitten/AppStream/x86_64_v2/os/ production: true debug: false remote_sync_policy: on_demand @@ -5642,8 +5642,8 @@ - arch: x86_64_v2 name: almalinux-kitten-10-baseos type: rpm - remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/BaseOS/x86_64_v2/os/ - export_path: vault/10-kitten/BaseOS/x86_64_v2/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/BaseOS/x86_64_v2/os/ + export_path: almalinux-kitten/10-kitten/BaseOS/x86_64_v2/os/ production: true debug: false remote_sync_policy: on_demand @@ -5778,8 +5778,8 @@ - arch: x86_64_v2 name: almalinux-kitten-10-highavailability type: rpm - remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/HighAvailability/x86_64_v2/os/ - export_path: vault/10-kitten/HighAvailability/x86_64_v2/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/HighAvailability/x86_64_v2/os/ + export_path: almalinux-kitten/10-kitten/HighAvailability/x86_64_v2/os/ production: true debug: false remote_sync_policy: on_demand @@ -5914,8 +5914,8 @@ - arch: x86_64_v2 name: almalinux-kitten-10-resilientstorage type: rpm - remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/ResilientStorage/x86_64_v2/os/ - export_path: vault/10-kitten/ResilientStorage/x86_64_v2/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/ResilientStorage/x86_64_v2/os/ + export_path: almalinux-kitten/10-kitten/ResilientStorage/x86_64_v2/os/ production: true debug: false remote_sync_policy: on_demand @@ -6050,8 +6050,8 @@ - arch: x86_64_v2 name: almalinux-kitten-10-extras-common type: rpm - remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/extras-common/x86_64_v2/os/ - export_path: vault/10-kitten/extras-common/x86_64_v2/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/extras-common/x86_64_v2/os/ + export_path: almalinux-kitten/10-kitten/extras-common/x86_64_v2/os/ production: true debug: false remote_sync_policy: on_demand @@ -6186,8 +6186,8 @@ - arch: x86_64_v2 name: almalinux-kitten-10-crb type: rpm - remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/CRB/x86_64_v2/os/ - export_path: vault/10-kitten/CRB/x86_64_v2/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/CRB/x86_64_v2/os/ + export_path: almalinux-kitten/10-kitten/CRB/x86_64_v2/os/ production: true debug: false remote_sync_policy: on_demand @@ -6322,8 +6322,8 @@ - arch: x86_64_v2 name: almalinux-kitten-10-nfv type: rpm - remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/NFV/x86_64_v2/os/ - export_path: vault/10-kitten/NFV/x86_64_v2/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/NFV/x86_64_v2/os/ + export_path: almalinux-kitten/10-kitten/NFV/x86_64_v2/os/ production: true debug: false remote_sync_policy: on_demand @@ -6374,8 +6374,8 @@ - arch: x86_64_v2 name: almalinux-kitten-10-rt type: rpm - remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/RT/x86_64_v2/os/ - export_path: vault/10-kitten/RT/x86_64_v2/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/RT/x86_64_v2/os/ + export_path: almalinux-kitten/10-kitten/RT/x86_64_v2/os/ production: true debug: false remote_sync_policy: on_demand @@ -6426,8 +6426,8 @@ - arch: x86_64_v2 name: almalinux-kitten-10-sap type: rpm - remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/SAP/x86_64_v2/os/ - export_path: vault/10-kitten/SAP/x86_64_v2/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/SAP/x86_64_v2/os/ + export_path: almalinux-kitten/10-kitten/SAP/x86_64_v2/os/ production: true debug: false remote_sync_policy: on_demand @@ -6562,8 +6562,8 @@ - arch: x86_64_v2 name: almalinux-kitten-10-saphana type: rpm - remote_url: http://kitten.repo.almalinux.org/vault/10-kitten/SAPHANA/x86_64_v2/os/ - export_path: vault/10-kitten/SAPHANA/x86_64_v2/os/ + remote_url: http://kitten.repo.almalinux.org/10-kitten/SAPHANA/x86_64_v2/os/ + export_path: almalinux-kitten/10-kitten/SAPHANA/x86_64_v2/os/ production: true debug: false remote_sync_policy: on_demand From 3418c6582525abafa93ccd189213681a1321ebdc Mon Sep 17 00:00:00 2001 From: bklvsky Date: Tue, 22 Oct 2024 09:51:14 +0000 Subject: [PATCH 35/39] Create new event loop for tests (AlmaLinux/build-system#367) --- tests/fixtures/pulp.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/fixtures/pulp.py b/tests/fixtures/pulp.py index 490b4d2a..a84a3bdc 100644 --- a/tests/fixtures/pulp.py +++ b/tests/fixtures/pulp.py @@ -25,10 +25,14 @@ @pytest.fixture(autouse=True) def semaphore_patch(monkeypatch): + loop = asyncio.new_event_loop() + asyncio.set_event_loop(loop) monkeypatch.setattr( "alws.utils.pulp_client.PULP_SEMAPHORE", asyncio.Semaphore(5), ) + yield + loop.close() @pytest.fixture(autouse=True) From f5760dcf63623451f81053d7f79c30ea55de2bdc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 22 Oct 2024 12:09:28 +0000 Subject: [PATCH 36/39] Bump uvicorn from 0.31.0 to 0.32.0 Bumps [uvicorn](https://github.com/encode/uvicorn) from 0.31.0 to 0.32.0. - [Release notes](https://github.com/encode/uvicorn/releases) - [Changelog](https://github.com/encode/uvicorn/blob/master/CHANGELOG.md) - [Commits](https://github.com/encode/uvicorn/compare/0.31.0...0.32.0) --- updated-dependencies: - dependency-name: uvicorn dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index d40262c4..e1ae99cc 100644 --- a/requirements.txt +++ b/requirements.txt @@ -32,7 +32,7 @@ python-multipart>=0.0.7 sentry-sdk[fastapi]==2.16.0 # requires FastAPI>=0.79.0 syncer==2.0.3 tap.py==3.1 -uvicorn==0.31.0 +uvicorn==0.32.0 websockets==13.1 git+https://github.com/AlmaLinux/immudb-wrapper.git@0.1.2#egg=immudb_wrapper git+https://github.com/AlmaLinux/errata2osv.git@0.0.4#egg=errata2osv From afa132c9fe8a89d2f9ce41ca5fd286ef4e1cdfd7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 22 Oct 2024 12:09:40 +0000 Subject: [PATCH 37/39] Bump fastapi from 0.115.0 to 0.115.2 Bumps [fastapi](https://github.com/fastapi/fastapi) from 0.115.0 to 0.115.2. - [Release notes](https://github.com/fastapi/fastapi/releases) - [Commits](https://github.com/fastapi/fastapi/compare/0.115.0...0.115.2) --- updated-dependencies: - dependency-name: fastapi dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index d40262c4..fee0eb7c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -16,7 +16,7 @@ structlog==24.4.0 fastapi-limiter==0.1.6 fastapi-users-db-sqlalchemy==6.0.1 fastapi-users[all]==13.0.0 -fastapi==0.115.0 +fastapi==0.115.2 feedgen==1.0.0 httpx-oauth==0.15.1 jinja2==3.1.4 From 10c44f0a2bd4b9cbe9f71fa9fee73140673ef4d6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 22 Oct 2024 12:09:53 +0000 Subject: [PATCH 38/39] Bump pyfakefs from 5.7.0 to 5.7.1 Bumps [pyfakefs](https://github.com/pytest-dev/pyfakefs) from 5.7.0 to 5.7.1. - [Release notes](https://github.com/pytest-dev/pyfakefs/releases) - [Changelog](https://github.com/pytest-dev/pyfakefs/blob/main/CHANGES.md) - [Commits](https://github.com/pytest-dev/pyfakefs/compare/v5.7.0...v5.7.1) --- updated-dependencies: - dependency-name: pyfakefs dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements-tests.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-tests.txt b/requirements-tests.txt index 0d66acd9..e151a6f8 100644 --- a/requirements-tests.txt +++ b/requirements-tests.txt @@ -1,6 +1,6 @@ pytest==8.3.3 pytest-cov==5.0.0 -pyfakefs==5.7.0 +pyfakefs==5.7.1 # Linters isort[colors]==5.13.2 From 845dbfe58974492c2ca81983d6921fa00e3b8731 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 22 Oct 2024 12:11:34 +0000 Subject: [PATCH 39/39] Bump sqlalchemy from 2.0.35 to 2.0.36 Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 2.0.35 to 2.0.36. - [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases) - [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/main/CHANGES.rst) - [Commits](https://github.com/sqlalchemy/sqlalchemy/commits) --- updated-dependencies: - dependency-name: sqlalchemy dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index d40262c4..42ce14f6 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ PyYAML==6.0.2 -SQLAlchemy==2.0.35 +SQLAlchemy==2.0.36 aiofiles==24.1.0 aiohttp-retry==2.8.3 aiohttp==3.10.10