Enhance GPU flavor scanning and update documentation

- Introduced SCAN_POOLS configuration to specify pools for GPU flavor scanning.
- Updated the `flavors` command to scan specified pools and list available GPU flavors based on `FLAVOR_PREFERENCE`.
- Revised CLI documentation to reflect changes in the `flavors` command behavior.
- Enhanced decision documentation to include details about GPU pool scanning.
- Updated setup instructions to guide users on selecting appropriate GPU pools.
This commit is contained in:
Leonid Pershin
2026-08-21 04:03:28 +03:00
parent a563ae06c4
commit 28019d1d09
11 changed files with 299 additions and 12 deletions
+15 -3
View File
@@ -153,14 +153,25 @@ def dry_run() -> None:
@app.command()
def flavors() -> None:
"""Живой список GPU flavors по FLAVOR_PREFERENCE."""
def flavors(
scan: bool = typer.Option(True, "--scan/--no-scan", help="Скан пулов SCAN_POOLS (ru-6 multizone…)"),
) -> None:
"""GPU flavors: скан пулов + список в текущем OS_REGION_NAME."""
try:
from gpu_rent.inventory import looks_like_gpu, rank_flavors, resolve_flavor
from gpu_rent.os_client import iter_flavors
from gpu_rent.pools import format_pool_scan, scan_pools
from gpu_rent.ux import format_flavor_lines
cfg = load_config(require_auth=True)
if scan:
console.print(f"[bold]region сейчас[/bold]: {cfg.os_region_name} / AZ {cfg.gpu_rent_az}")
console.print(f"[bold]SCAN_POOLS[/bold]: {cfg.scan_pools or 'ru-6,ru-7'}")
offers = scan_pools(cfg)
for line in format_pool_scan(offers, cfg.flavor_preference):
console.print(line)
console.print("")
conn = connect(cfg)
all_f = list(iter_flavors(conn))
gpu = [f for f in all_f if looks_like_gpu(f)]
@@ -174,13 +185,14 @@ def flavors() -> None:
)
except ValueError:
picked = None
console.print(f"[bold]в пуле {cfg.os_region_name}[/bold] (то, что возьмёт up):")
for line in format_flavor_lines(ranked, picked):
console.print(line)
console.print(
f"\nspot по умолчанию: {cfg.default_spot} "
f"(обычный: gpu-rent up --no-spot)"
)
console.print("₽ в API нет — смотри панель Selectel.")
console.print("₽ в API нет — смотри панель. Серые кнопки панели ≠ disabled в Nova.")
except GpuRentError as exc:
_die(exc)