**Language / Язык:** [English](seed-profiles.md) | [Русский](ru/seed-profiles.md)

# Seed profiles

Seeds replace the vSphere inventory **atomically** using deterministic MOIDs
so labs are reproducible. Definitions live in
[`app/vsphere/profiles.py`](../app/vsphere/profiles.py).

```bash
make seed                          # default: large (10 hosts / 1000 VMs)
VSPHERE_PROFILE=small make seed
VSPHERE_PROFILE=big make seed
```

## Profiles

| Profile | Hosts | VMs | Datastores | Networks | Folders† | Content extras |
|---|---:|---:|---:|---:|---:|---:|
| `minimal` | 3 | 5 | 1 | 1 | 8 | ×1 |
| `small` | 3 | 50 | 2 | 2 | 8 | ×1 |
| `large` (default) | 10 | 1000 | 4 | 4 | 10 | ×2 |
| `big` | 20 | 2000 | 8 | 8 | 14 | ×4 |

† Spine folders (8) plus scaled team folders for larger tiers.

`demo-cluster` remains an alias of `big`. Reset / unload loads `minimal`.

## Examples

```bash
make seed                                   # large, 10 hosts / 1000 VMs
VSPHERE_PROFILE=small make seed
VSPHERE_PROFILE=big make seed
VSPHERE_PROFILE=large VSPHERE_HOSTS=20 VSPHERE_VMS=5000 make seed

# 100% seed ↔ live inventory dump
VSPHERE_PROFILE=big make vsphere-seed-dump
```

Or run the seed CLI directly with the underlying environment variables (for
example from a non-`make` script or CI step):

```bash
SEED_VSPHERE_PROFILE=small \
  docker compose run --rm --entrypoint python simulator -m app.simulation.seed_cli
```

## Topology shape

Every profile builds the same spine (`Datacenters` → `Datacenter` → host/vm/
datastore/network folders → one `ClusterComputeResource` + `ResourcePool`),
then scales hosts, datastores, port groups, and VMs. VM MOIDs are `vm-{100+n}`;
host MOIDs are `host-{10+n}`.

## Web UI

The **DATA** panel exposes three load buttons matching these tiers. Each call
is `POST /ui/api/vsphere/seed?profile=small|large|big` (atomic reseed).

Legacy endpoints:

- `POST /ui/api/demo/load` → `big`
- `POST /ui/api/demo/unload` → `small`
