Commit 325a8304 authored by Yannik Dällenbach's avatar Yannik Dällenbach 🤼 Committed by Yannik Dällenbach
Browse files

Stream state update of servers

parent f072f11c
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -130,6 +130,27 @@ func (g *instanceGroup) Decrease(ctx context.Context, instances []string) (succe

// Update implements provider.InstanceGroup.
func (g *instanceGroup) Update(ctx context.Context, update func(instance string, state provider.State)) error {
	servers, err := g.client.Servers.List(ctx, cloudscale.WithTagFilter(g.tagMap()))
	if err != nil {
		return fmt.Errorf("failed to get servers: %w", err)
	}

	for _, server := range servers {
		id := server.UUID
		var state provider.State

		switch server.Status {
		case string(cloudscale.ServerStopped):
			state = provider.StateDeleted
		case string(cloudscale.ServerRunning):
			state = provider.StateRunning
		case "changing":
			state = provider.StateCreating
		}

		update(id, state)
	}

	return nil
}