Skip to content

Discovery

Discovery

There are several ways a machine is discovered. This diagram provides a high-level description of how these occur.

```d2 layout=elk ...@docs/assets/classes/all

endpoint: { direction: down label: Endpoint class: endpoint

Pref: {
    class: prefs

    Default Workflow
    Default Stage
    Default BootEnv
    Unknown BootEnv
}

Subnet: {
    class: subnet
}

}

ipmi: { label: IPMI Scan class: work_order }

ipmi -> endpoint: MACs endpoint -> ipmi: Create

machine: { label: Machine class: machine

PXE Boot
Sledgehammer.class: bootenv
Whoami.class: task

PXE Boot -> Sledgehammer: boots
Sledgehammer -> whoami

}

machine.whoami -> endpoint endpoint -> machine.whoami: machine object endpoint <-> machine.whoami: create

runner: { class: runner

universal-discover.class: workflow

universal-discover: {
    start-callback.class: task
    pre-flexiflow.class: task
    inventory.class: task
    post-flexiflow.class: task
    classify.class: task
    validation.class: task
    complete-callback.class: task
    workflow-chain.class: task

    start-callback -> pre-flexiflow -> inventory -> post-flexiflow -> classify -> validation -> complete-callback -> workflow-chain
}

}

machine -> runner ```