From 1cc387202be5395e533bb5fa097afe68d814a14e Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 3 Jul 2025 15:26:30 +0000 Subject: [PATCH] mirrors: Export whether mirrors support IPv6/IPv4 Signed-off-by: Michael Tremer --- src/api/downloads.py | 4 ++-- src/buildservice/mirrors.py | 9 +++++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/api/downloads.py b/src/api/downloads.py index f34eccb0..d001c1db 100644 --- a/src/api/downloads.py +++ b/src/api/downloads.py @@ -84,10 +84,10 @@ async def get( for mirror in mirrors: # Don't send clients to a mirror they don't support if isinstance(current_address, ipaddress.IPv6Address): - if not mirror.supports_ipv6(): + if not mirror.supports_ipv6: continue elif isinstance(current_address, ipaddress.IPv4Address): - if not mirror.supports_ipv4(): + if not mirror.supports_ipv4: continue # Skip the mirror if it does not serve the file we are looking for diff --git a/src/buildservice/mirrors.py b/src/buildservice/mirrors.py index 64f20528..576cd319 100644 --- a/src/buildservice/mirrors.py +++ b/src/buildservice/mirrors.py @@ -6,6 +6,7 @@ import functools import ipaddress import logging import os.path +import pydantic import random import sqlalchemy import sqlmodel @@ -247,7 +248,9 @@ class Mirror(sqlmodel.SQLModel, database.BackendMixin, database.SoftDeleteMixin, sa_column=sqlalchemy.Column(sqlalchemy.ARRAY(INET), nullable=False, default=list), ) - def supports_ipv6(self): + @pydantic.computed_field + @property + def supports_ipv6(self) -> bool: """ Returns True if this mirror supports IPv6 """ @@ -262,7 +265,9 @@ class Mirror(sqlmodel.SQLModel, database.BackendMixin, database.SoftDeleteMixin, sa_column=sqlalchemy.Column(sqlalchemy.ARRAY(INET), nullable=False, default=list) ) - def supports_ipv4(self): + @pydantic.computed_field + @property + def supports_ipv4(self) -> bool: """ Returns True if this mirror supports IPv4 """ -- 2.47.2