Initial working version

This commit is contained in:
Philip Henning 2026-03-08 18:32:25 +01:00
parent 34a0627e76
commit b6886cb34a
61 changed files with 4475 additions and 6 deletions

View file

@ -0,0 +1,59 @@
from __future__ import annotations
import pytest
from pve_vm_setup.services.factory import ProxmoxServiceFactory
from pve_vm_setup.settings import AppSettings
def _load_live_settings_or_skip() -> AppSettings:
settings = AppSettings.from_env()
try:
settings.validate_live_requirements()
except Exception as exc: # pragma: no cover - only hit outside configured environments
pytest.skip(f"Live environment is not configured: {exc}")
return settings
@pytest.mark.live
def test_live_read_only_reference_loading() -> None:
settings = _load_live_settings_or_skip()
service = ProxmoxServiceFactory.create(settings)
assert service.mode == "live"
assert service.check_connectivity()
assert service.check_api_base()
realms = service.load_realms()
assert realms
service.login(
settings.proxmox_user or "",
settings.proxmox_password or "",
settings.proxmox_realm or "",
)
nodes = service.load_nodes()
assert nodes
pools = service.load_pools()
assert isinstance(pools, list)
tags = service.load_existing_tags()
assert isinstance(tags, list)
probe_node = settings.safety_policy.test_node or nodes[0].name
storages = service.load_storages(probe_node)
assert isinstance(storages, list)
iso_storages = [storage for storage in storages if "iso" in storage.content]
if iso_storages:
isos = service.load_isos(probe_node, iso_storages[0].storage)
assert isinstance(isos, list)
@pytest.mark.live_create
def test_live_create_path_requires_explicit_opt_in() -> None:
settings = _load_live_settings_or_skip()
if not settings.safety_policy.allow_create:
pytest.skip("Set PROXMOX_PREVENT_CREATE=false to enable live create tests.")
if settings.safety_policy.enable_test_mode:
assert settings.safety_policy.test_node