Let operators manage ordered action groups on each host, run them manually or on a schedule over SSH, and inspect disk-backed JSON run logs from a node detail UI.
54 lines
1.3 KiB
Go
54 lines
1.3 KiB
Go
package runner
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"codeberg.org/SquidSE/ClusterCanvas/service/internal/settings"
|
|
)
|
|
|
|
func TestResolveItemLibraryAndLocal(t *testing.T) {
|
|
library := []settings.Action{
|
|
{
|
|
ID: settings.BuiltinActionUptimeID,
|
|
Name: "Uptime",
|
|
Kind: settings.ActionKindShell,
|
|
Body: "uptime",
|
|
Env: []settings.ActionEnvVar{},
|
|
},
|
|
}
|
|
|
|
resolved, err := ResolveItem(settings.NodeActionItem{
|
|
ID: "i1",
|
|
Source: settings.ActionItemSourceLibrary,
|
|
LibraryActionID: settings.BuiltinActionUptimeID,
|
|
}, library)
|
|
if err != nil {
|
|
t.Fatalf("ResolveItem library: %v", err)
|
|
}
|
|
if resolved.Name != "Uptime" || resolved.Body != "uptime" {
|
|
t.Fatalf("resolved = %#v", resolved)
|
|
}
|
|
|
|
local, err := ResolveItem(settings.NodeActionItem{
|
|
ID: "i2",
|
|
Source: settings.ActionItemSourceLocal,
|
|
Name: "Echo",
|
|
Kind: settings.ActionKindShell,
|
|
Body: "echo hi",
|
|
Env: []settings.ActionEnvVar{},
|
|
}, library)
|
|
if err != nil {
|
|
t.Fatalf("ResolveItem local: %v", err)
|
|
}
|
|
if local.Name != "Echo" {
|
|
t.Fatalf("local = %#v", local)
|
|
}
|
|
|
|
if _, err := ResolveItem(settings.NodeActionItem{
|
|
Source: settings.ActionItemSourceLibrary,
|
|
LibraryActionID: "missing",
|
|
}, library); err == nil {
|
|
t.Fatal("expected missing library action error")
|
|
}
|
|
}
|