From bbaa89d4c24b2b58d9bd3f39a2f48d688dbfb7c1 Mon Sep 17 00:00:00 2001 From: Tobias Trabelsi Date: Wed, 8 Nov 2023 20:42:20 +0100 Subject: [PATCH] handle empty queue --- cmd/woodpecker-autoscaler.go | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/cmd/woodpecker-autoscaler.go b/cmd/woodpecker-autoscaler.go index bee1321..8ba8f1b 100644 --- a/cmd/woodpecker-autoscaler.go +++ b/cmd/woodpecker-autoscaler.go @@ -86,23 +86,29 @@ func main() { "Caller": "Main", }).Fatal(fmt.Sprintf("Error checking woodpecker queue: %s", err.Error())) } - if runningTasks <= len(ownedNodes) { + if runningTasks <= len(ownedNodes) && runningTasks != 0 { log.WithFields(log.Fields{ "Caller": "Main", }).Info("Still found running tasks. No agent to be removed") } else { - log.WithFields(log.Fields{ - "Caller": "Main", - }).Info("No tasks running. Will remove agents") - for _, server := range ownedNodes { - hetzner.DecomNode(cfg, &server) - agentId, err := woodpecker.GetAgentIdByName(cfg, server.Name) - if err != nil { - log.WithFields(log.Fields{ - "Caller": "Main", - }).Warnf("Could not find agent %s in woodpecker. Assuming it was never added", server.Name) - } else { - woodpecker.DecomAgent(cfg, agentId) + if len(ownedNodes) == 0 { + log.WithFields(log.Fields{ + "Caller": "Main", + }).Infof("Nothing running and not owning any nodes. Recheck in %d", cfg.CheckInterval) + } else { + log.WithFields(log.Fields{ + "Caller": "Main", + }).Info("No tasks running. Will remove agents") + for _, server := range ownedNodes { + hetzner.DecomNode(cfg, &server) + agentId, err := woodpecker.GetAgentIdByName(cfg, server.Name) + if err != nil { + log.WithFields(log.Fields{ + "Caller": "Main", + }).Warnf("Could not find agent %s in woodpecker. Assuming it was never added", server.Name) + } else { + woodpecker.DecomAgent(cfg, agentId) + } } } }