From 55e584d702d490c9e748b3b64d8c6b69d2a47ab3 Mon Sep 17 00:00:00 2001 From: Vishnu Bharathi Date: Sun, 5 Mar 2023 12:51:41 +0530 Subject: [PATCH] feat(scaler.docker): handle scale down logic --- internal/scaler/docker/docker.go | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/internal/scaler/docker/docker.go b/internal/scaler/docker/docker.go index d2bc52e..59f861b 100644 --- a/internal/scaler/docker/docker.go +++ b/internal/scaler/docker/docker.go @@ -59,8 +59,9 @@ func (s *Scaler) Register(ctx context.Context) error { currentCount := len(containers) if currentCount < s.count { - fmt.Printf("scaler.%s current count: %d, desired count: %d \n", s.id, currentCount, s.count) + fmt.Printf("scaler.%s :: current count: %d, desired count: %d \n", s.id, currentCount, s.count) remainingCount := s.count - currentCount + fmt.Printf("scaler.%s :: scaling up by creating %d container(s) \n", s.id, remainingCount) for i := 0; i < remainingCount; i++ { c, err := cli.ContainerCreate(ctx, &container.Config{Image: imageFullName}, nil, nil, nil, "") @@ -77,6 +78,19 @@ func (s *Scaler) Register(ctx context.Context) error { } fmt.Printf("scaler.%s.container.started: %s \n", s.id, c.ID) } + } else if currentCount > s.count { + fmt.Printf("scaler.%s :: current count: %d, desired count: %d \n", s.id, currentCount, s.count) + deletionCount := currentCount - s.count + fmt.Printf("scaler.%s :: scaling down by removing %d container(s) \n", s.id, deletionCount) + + for i := 0; i < deletionCount; i++ { + err = cli.ContainerRemove(ctx, containers[i].ID, types.ContainerRemoveOptions{Force: true}) + if err != nil { + fmt.Printf("scaler.%s.error: %s \n", s.id, err) + return + } + fmt.Printf("scaler.%s.container.removed: %s \n", s.id, containers[i].ID) + } } fmt.Printf("scaler.%s.done \n", s.id)