"""Apply a deterministic simulation seed."""

import asyncio
import json
import os

from app.config import get_settings
from app.db.pool import AsyncpgDatabase
from app.vsphere.seed import seed_vsphere_inventory


async def run() -> None:
    settings = get_settings()
    enable_pve = os.getenv("ENABLE_PVE_STUB", "false").lower() in {"1", "true", "yes"}
    proxmox_stub: dict | None = None
    if enable_pve:
        from app.simulation.seed import seed_url

        proxmox_stub = await seed_url(
            settings.database_url.get_secret_value(),
            os.getenv("SEED_PROFILE", "small"),
            large_nodes=int(os.getenv("SEED_LARGE_NODES", "10")),
            large_resources=int(os.getenv("SEED_LARGE_RESOURCES", "10000")),
        )
    database = AsyncpgDatabase(settings)
    await database.connect()
    try:
        vsphere = await seed_vsphere_inventory(
            database,
            force=True,
            profile=os.getenv("SEED_VSPHERE_PROFILE", "large"),
            large_hosts=int(os.getenv("SEED_VSPHERE_LARGE_HOSTS", "10")),
            large_vms=int(os.getenv("SEED_VSPHERE_LARGE_VMS", "1000")),
        )
    finally:
        await database.close()
    payload = {"vsphere": vsphere}
    if proxmox_stub is not None:
        payload["proxmox_stub"] = proxmox_stub
    print(json.dumps(payload, sort_keys=True))


if __name__ == "__main__":
    asyncio.run(run())
