55 lines
1.4 KiB
Go
55 lines
1.4 KiB
Go
package config
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"metis/pkg/inventory"
|
|
)
|
|
|
|
func TestBuildUsesNodeOverridesAndDefaultFilesystem(t *testing.T) {
|
|
inv := inventory.Inventory{
|
|
Classes: []inventory.NodeClass{{
|
|
Name: "c1",
|
|
Arch: "arm64",
|
|
OS: "linux",
|
|
Image: "file:///tmp/base.img",
|
|
K3sVersion: "v1.30.0+k3s1",
|
|
DefaultLabels: map[string]string{"role": "worker"},
|
|
}},
|
|
Nodes: []inventory.NodeSpec{{
|
|
Name: "n1",
|
|
Class: "c1",
|
|
Hostname: "n1",
|
|
IP: "1.1.1.1",
|
|
K3sRole: "server",
|
|
K3sVersion: "v1.31.5+k3s1",
|
|
SSHUser: "atlas",
|
|
SSHAuthorized: []string{"key"},
|
|
LonghornDisks: []inventory.LonghornDisk{{Mountpoint: "/mnt/data", UUID: "uuid-1"}},
|
|
}},
|
|
}
|
|
cfg, err := Build(&inv, "n1")
|
|
if err != nil {
|
|
t.Fatalf("Build: %v", err)
|
|
}
|
|
if got, want := cfg.K3s.Version, "v1.31.5+k3s1"; got != want {
|
|
t.Fatalf("k3s version = %q, want %q", got, want)
|
|
}
|
|
if got := cfg.Fstab[0].FS; got != "ext4" {
|
|
t.Fatalf("expected default filesystem ext4, got %q", got)
|
|
}
|
|
if got := cfg.Labels["role"]; got != "worker" {
|
|
t.Fatalf("label merge lost default label: %q", got)
|
|
}
|
|
if cfg.K3s.Role != "server" {
|
|
t.Fatalf("expected server role, got %q", cfg.K3s.Role)
|
|
}
|
|
}
|
|
|
|
func TestBuildReturnsErrorForMissingNode(t *testing.T) {
|
|
inv := inventory.Inventory{}
|
|
if _, err := Build(&inv, "missing"); err == nil {
|
|
t.Fatal("expected missing node error")
|
|
}
|
|
}
|