Files
inecs f8d3cbdd59 Initial commit: VMware vSphere API simulator scaffold.
Add the FastAPI app, PostgreSQL migrations, Docker/Helm packaging, API
contracts, docs, client examples, and the unit/integration/compatibility
test suite for local client and tooling labs without a real vCenter.
2026-07-18 04:42:11 +03:00

45 lines
1.4 KiB
Python

"""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())