From 3bd61d8c7f27574a611e682a6288cf10a343d603 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Wed, 28 Feb 2024 00:22:34 -0500 Subject: [PATCH] feat: add command to add or remove auth configurations --- plugins/scheduler-k3s/Makefile | 2 +- .../scheduler-k3s/src/commands/commands.go | 1 + .../src/subcommands/subcommands.go | 8 ++++++ plugins/scheduler-k3s/subcommands.go | 28 +++++++++++++++++++ 4 files changed, 38 insertions(+), 1 deletion(-) diff --git a/plugins/scheduler-k3s/Makefile b/plugins/scheduler-k3s/Makefile index c150d6aa1..0fcac0b5a 100644 --- a/plugins/scheduler-k3s/Makefile +++ b/plugins/scheduler-k3s/Makefile @@ -1,4 +1,4 @@ -SUBCOMMANDS = subcommands/annotations:set subcommands/cluster-add subcommands/cluster-list subcommands/cluster-remove subcommands/initialize subcommands/labels:set subcommands/report subcommands/set subcommands/show-kubeconfig subcommands/uninstall +SUBCOMMANDS = subcommands/annotations:set subcommands/autoscaling-auth:set subcommands/cluster-add subcommands/cluster-list subcommands/cluster-remove subcommands/initialize subcommands/labels:set subcommands/report subcommands/set subcommands/show-kubeconfig subcommands/uninstall TRIGGERS = triggers/install triggers/post-app-clone-setup triggers/post-app-rename-setup triggers/post-delete triggers/report triggers/scheduler-deploy triggers/scheduler-enter triggers/scheduler-logs triggers/scheduler-post-delete triggers/scheduler-run triggers/scheduler-run-list triggers/scheduler-stop BUILD = commands subcommands triggers PLUGIN_NAME = scheduler-k3s diff --git a/plugins/scheduler-k3s/src/commands/commands.go b/plugins/scheduler-k3s/src/commands/commands.go index 6eb64640a..0339c43ea 100644 --- a/plugins/scheduler-k3s/src/commands/commands.go +++ b/plugins/scheduler-k3s/src/commands/commands.go @@ -17,6 +17,7 @@ Manage scheduler-k3s settings for an app Additional commands:` helpContent = ` + scheduler-k3s:autoscaling-auth:set [<--metadata key=value>...], Set or clear a scheduler-k3s autoscaling keda trigger authentication object for an app scheduler-k3s:annotations:set () [--process-type PROCESS_TYPE] <--resource-type RESOURCE_TYPE>, Set or clear an annotation for a given app/process-type/resource-type combination scheduler-k3s:cluster-add [--insecure-allow-unknown-hosts] [--server-ip SERVER_IP] [--taint-scheduling] , Adds a server node to a Dokku-managed cluster scheduler-k3s:cluster-list [--format json|stdout], Lists all nodes in a Dokku-managed cluster diff --git a/plugins/scheduler-k3s/src/subcommands/subcommands.go b/plugins/scheduler-k3s/src/subcommands/subcommands.go index 4685d0834..138d68c2f 100644 --- a/plugins/scheduler-k3s/src/subcommands/subcommands.go +++ b/plugins/scheduler-k3s/src/subcommands/subcommands.go @@ -34,6 +34,14 @@ func main() { } err = scheduler_k3s.CommandAnnotationsSet(appName, *processType, *resourceType, property, value) + case "autoscaling-auth:set": + args := flag.NewFlagSet("scheduler-k3s:autoscaling-auth:set", flag.ExitOnError) + global := args.Bool("global", false, "--global: set a global property") + metadata := args.StringToString("metadata", map[string]string{}, "--metadata: a key=value map of parameter metadata") + args.Parse(os.Args[2:]) + appName := args.Arg(0) + trigger := args.Arg(1) + err = scheduler_k3s.CommandAutoscalingAuthSet(appName, trigger, *metadata, *global) case "cluster-add": args := flag.NewFlagSet("scheduler-k3s:cluster-add", flag.ExitOnError) allowUknownHosts := args.Bool("insecure-allow-unknown-hosts", false, "insecure-allow-unknown-hosts: allow unknown hosts") diff --git a/plugins/scheduler-k3s/subcommands.go b/plugins/scheduler-k3s/subcommands.go index 681e426ae..a4e445d96 100644 --- a/plugins/scheduler-k3s/subcommands.go +++ b/plugins/scheduler-k3s/subcommands.go @@ -58,6 +58,34 @@ func CommandAnnotationsSet(appName string, processType string, resourceType stri return nil } +// CommandAutoscalingAuthSet set or clear a scheduler-k3s autoscaling keda trigger authentication object for an app +func CommandAutoscalingAuthSet(appName string, trigger string, metadata map[string]string, global bool) error { + if global { + appName = "--global" + } + + if len(metadata) == 0 { + properties, err := common.PropertyGetAllByPrefix("scheduler-k3s", appName, fmt.Sprintf("trigger-auth.%s.", trigger)) + if err != nil { + return fmt.Errorf("Unable to get property list: %w", err) + } + + for key := range properties { + if err := common.PropertyDelete("scheduler-k3s", appName, key); err != nil { + return fmt.Errorf("Unable to delete property: %w", err) + } + } + return nil + } + + for key, value := range metadata { + if err := common.PropertyWrite("scheduler-k3s", appName, fmt.Sprintf("trigger-auth.%s.%s", trigger, key), value); err != nil { + return fmt.Errorf("Unable to set property: %w", err) + } + } + return nil +} + // CommandInitialize initializes a k3s cluster on the local server func CommandInitialize(ingressClass string, serverIP string, taintScheduling bool) error { if ingressClass != "nginx" && ingressClass != "traefik" {