sequenceDiagram
    participant User
    participant Controller
    participant InfraBP as InfraBlueprint
    participant ProviderBP as Harvester/Vsphere BP
    participant Strategy
    participant Builder as MasterBuilder
    participant Helm

    User->>Controller: Create ClusterBlueprint
    Controller->>InfraBP: 1. Get Infra & Quota
    InfraBP-->>Controller: ProviderRef (Kind="HarvesterBlueprint")

    note over Controller: Dynamic Switching Logic

    alt Kind is Harvester
        Controller->>ProviderBP: 2. Get Harvester Config
        Controller->>Strategy: 3. Init HarvesterStrategy
    else Kind is Vsphere
        Controller->>ProviderBP: 2. Get Vsphere Config
        Controller->>Strategy: 3. Init VsphereStrategy
    end

    Controller->>Builder: 4. Build(Strategy)
    Builder->>Strategy: GenerateNodePools()
    Strategy-->>Builder: [Pool A, Pool B]
    Builder-->>Controller: map[values]

    Controller->>Helm: 5. Apply(values)