Выбор образа при создании машины карточками: название системы, размер, дата загрузки и поиск, когда образов много
Этот коммит содержится в:
@@ -88,6 +88,25 @@ def guess_os_type(volume_label: str, filename: str) -> str:
|
||||
return "windows10" if WINDOWS10_RE.search(text) else "windows11"
|
||||
|
||||
|
||||
# Название системы для карточки образа в форме создания машины.
|
||||
DISTROS = (
|
||||
("UBUNTU", "Ubuntu"), ("DEBIAN", "Debian"), ("FEDORA", "Fedora"), ("ALPINE", "Alpine"), ("CENTOS", "CentOS"),
|
||||
("ROCKY", "Rocky Linux"), ("ALMALINUX", "AlmaLinux"), ("OPENSUSE", "openSUSE"), ("ARCHLINUX", "Arch Linux"),
|
||||
("LINUXMINT", "Linux Mint"), ("KALI", "Kali Linux"), ("ASTRA", "Astra Linux"), ("REDOS", "РЕД ОС"),
|
||||
("PROXMOX", "Proxmox"), ("TRUENAS", "TrueNAS"), ("FREEBSD", "FreeBSD"), ("PFSENSE", "pfSense"),
|
||||
("OPNSENSE", "OPNsense"), ("OPENWRT", "OpenWrt"),
|
||||
)
|
||||
|
||||
|
||||
def iso_system_name(volume_label: str, filename: str) -> str:
|
||||
"""«Windows 10», «Ubuntu»… или "", если систему по образу не узнать."""
|
||||
guess = guess_os_type(volume_label, filename)
|
||||
if guess:
|
||||
return "Windows 11" if guess == "windows11" else "Windows 10"
|
||||
words = set(re.sub(r"[^A-Z0-9]+", " ", f"{volume_label} {filename}".upper()).split())
|
||||
return next((title for key, title in DISTROS if key in words), "")
|
||||
|
||||
|
||||
def cloud_image(image_id: str) -> dict[str, Any] | None:
|
||||
return next((item for item in CLOUD_IMAGES if item["id"] == image_id), None)
|
||||
|
||||
|
||||
Ссылка в новой задаче
Block a user