m/c/metroctl: implement add, remove role commands
This adds commands accomodating node role modification.
Change-Id: I3532081fa5e7ce521c3bd90cc4ebf46fec4bf168
Reviewed-on: https://review.monogon.dev/c/monogon/+/851
Reviewed-by: Sergiusz Bazanski <serge@monogon.tech>
Tested-by: Jenkins CI
diff --git a/metropolis/cli/metroctl/test/test.go b/metropolis/cli/metroctl/test/test.go
index 0d9b2e1..e8310d7 100644
--- a/metropolis/cli/metroctl/test/test.go
+++ b/metropolis/cli/metroctl/test/test.go
@@ -253,4 +253,45 @@
return nil
})
})
+ t.Run("set/unset role", func(t *testing.T) {
+ util.TestEventual(t, "metroctl set/unset role KubernetesWorker", ctx, 10*time.Second, func(ctx context.Context) error {
+ nid := cl.NodeIDs[1]
+ naddr := cl.Nodes[nid].ManagementAddress
+
+ // In this test we'll unset a node role, make sure that it's been in fact
+ // unset, then set it again, and check again. This exercises commands of
+ // the form "metroctl set/unset role KubernetesWorker [NodeID, ...]".
+
+ // Check that KubernetesWorker role is set initially.
+ var describeArgs []string
+ describeArgs = append(describeArgs, commonOpts...)
+ describeArgs = append(describeArgs, endpointOpts...)
+ describeArgs = append(describeArgs, "node", "describe", "--filter", fmt.Sprintf("node.status.external_address==\"%s\"", naddr))
+ if err := mctlFailIfMissing(t, ctx, describeArgs, "KubernetesWorker"); err != nil {
+ return err
+ }
+ // Remove the role.
+ var unsetArgs []string
+ unsetArgs = append(unsetArgs, commonOpts...)
+ unsetArgs = append(unsetArgs, endpointOpts...)
+ unsetArgs = append(unsetArgs, "node", "remove", "role", "KubernetesWorker", nid)
+ if err := mctlRun(t, ctx, unsetArgs); err != nil {
+ return err
+ }
+ // Check that the role is unset.
+ if err := mctlFailIfFound(t, ctx, describeArgs, "KubernetesWorker"); err != nil {
+ return err
+ }
+ // Set the role back to the initial value.
+ var setArgs []string
+ setArgs = append(setArgs, commonOpts...)
+ setArgs = append(setArgs, endpointOpts...)
+ setArgs = append(setArgs, "node", "add", "role", "KubernetesWorker", nid)
+ if err := mctlRun(t, ctx, setArgs); err != nil {
+ return err
+ }
+ // Chack that the role is set.
+ return mctlFailIfMissing(t, ctx, describeArgs, "KubernetesWorker")
+ })
+ })
}