Self-hosted macOS/Windows order drops NodeLinks
Bug found while removing the superseded `POST /api/nodes/self-hosted` door (the order path is now the only creator).
An order's NodeLink list (`NODELINKS_PARAM`, read by `nodelinks_of`) reaches a node only at placement, through `vnodes.place_virtual_node` (apps/api/app/node_orders.py, the two `nodelinks=nodelinks_of(order)` call sites). `_start_self_hosted` never forwards them: it calls `register_self_hosted_row` with no NodeLinks (line ~562-566). For an Ubuntu order that is fine, the host row is placed later and the vnode gets them. For a self-hosted macOS or Windows order, `host_shape` is false, the registered machine IS the node, no placement follows, and the NodeLinks the person picked in the Add-node wizard are silently never attached. The same shape should be checked on the cloud path (`_start_cloud`, line ~465-485) for a non-host-shaped OS.
Ask: make a non-host-shaped self-hosted (and, if affected, cloud) order attach the order's NodeLinks to the node it registers, the way placement does for a vnode, or refuse the NodeLink choice in the wizard for an OS that cannot take it. Pin it with a test in apps/api/tests/test_node_orders.py beside `test_a_cloud_orders_nodelinks_survive_its_params_rewrite_to_the_first_node`.
Out of scope: the NodeLink mount mechanics on the node (`nodelink_converge`), the wizard's NodeLink picker UI beyond a refusal message if that is the chosen fix, and any change to `register_self_hosted_row`'s signature beyond what the attach needs.
Done means:
- A self-hosted macOS or Windows order filed with NodeLinks ends with those NodeLinks attached to the registered node (or the wizard refuses the choice with a sentence naming the OS), proven by a test in apps/api/tests/test_node_orders.py.
- `./dc check quick` green; `./dc test tests/test_node_orders.py tests/test_virtual_nodes.py` green.
Required checks: quick gate, node order tests
Outcome
Self-hosted macOS/Windows and Windows cloud orders now attach the order's NodeLinks to the registered node (proven by a test that fails before the fix). Quick gate green, 178 node-order/vnode tests pass. PR #7746 queued to the merge lane. Memory: none applied.
Artifacts
Activity
- Created
- Run
- Runner started
- Runner ended (done)