rd create and rg create / rg modify validate a layer stack case-insensitively but store it exactly as the caller spelled it. Some readers compare exactly: the satellite controller's rdNeedsDRBD checks slices.Contains(stack, "DRBD"), and pkg/store/k8s/resources.go has another exact comparison. A definition created with --layer-list drbd,storage is then treated as one without DRBD for allocation, waits and requeues, while the satellite apply path still brings DRBD up.
#190 normalizes layer_list to canonical case on the clone door. The same validate.NormalizeLayerStack call is needed on rd create and on rg create / rg modify, or the exact readers have to fold case.
Found by Codex while reviewing #190; present on main.
rd createandrg create/rg modifyvalidate a layer stack case-insensitively but store it exactly as the caller spelled it. Some readers compare exactly: the satellite controller'srdNeedsDRBDchecksslices.Contains(stack, "DRBD"), and pkg/store/k8s/resources.go has another exact comparison. A definition created with--layer-list drbd,storageis then treated as one without DRBD for allocation, waits and requeues, while the satellite apply path still brings DRBD up.#190 normalizes
layer_listto canonical case on the clone door. The samevalidate.NormalizeLayerStackcall is needed onrd createand onrg create/rg modify, or the exact readers have to fold case.Found by Codex while reviewing #190; present on main.