feat: manage distributed node operations from Owner panel
This commit is contained in:
33 files changed
+2417
-26
No files matched your search
@@ -0,0 +1,40 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"felis.lolicon.best/internal/nodecontrol"
|
||||
"felis.lolicon.best/internal/platform"
|
||||
appsv1 "k8s.io/api/apps/v1"
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/client-go/kubernetes/fake"
|
||||
)
|
||||
|
||||
func TestNodeControlTopologyAndBootstrapID(t *testing.T) {
|
||||
node := corev1.Node{ObjectMeta: metav1.ObjectMeta{Name: "controller", Labels: map[string]string{"node-role.kubernetes.io/control-plane": "true"}}, Status: corev1.NodeStatus{Conditions: []corev1.NodeCondition{{Type: corev1.NodeReady, Status: corev1.ConditionTrue}}, Addresses: []corev1.NodeAddress{{Type: corev1.NodeInternalIP, Address: "192.0.2.1"}}}}
|
||||
controller, peers, err := nodeController([]corev1.Node{node}, "192.0.2.2", []string{"192.0.2.1/32"})
|
||||
if err != nil || controller.Name != "controller" || strings.Join(peers, ",") != "192.0.2.1/32,192.0.2.2/32" {
|
||||
t.Fatal(controller, peers, err)
|
||||
}
|
||||
duplicate := node
|
||||
duplicate.Name = "second"
|
||||
if _, _, err = nodeController([]corev1.Node{node, duplicate}, "", nil); err == nil {
|
||||
t.Fatal("multiple controllers accepted")
|
||||
}
|
||||
for _, token := range []string{"abcdef.0123456789abcdef", "K10hash::abcdef.0123456789abcdef\n"} {
|
||||
if bootstrapTokenID(token) != "abcdef" {
|
||||
t.Fatal("token secret passed to revocation")
|
||||
}
|
||||
}
|
||||
}
|
||||
func TestNodeControlRejectsActiveWorkloadsBeforeHostCommands(t *testing.T) {
|
||||
replicas := int32(1)
|
||||
set := &appsv1.StatefulSet{ObjectMeta: metav1.ObjectMeta{Name: "survival", Namespace: "minecraft"}, Spec: appsv1.StatefulSetSpec{Replicas: &replicas}}
|
||||
executor := nodeExecutor{cs: fake.NewSimpleClientset(set), namespace: platform.DefaultMinecraftNamespace}
|
||||
if err := executor.requireStopped(context.Background(), nodecontrol.Request{Action: "enable"}); err == nil {
|
||||
t.Fatal("host changes permitted with active worlds")
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user