package gke

import (
	"context"

	"github.com/tidbcloud/eks-provider/controllers/dm/task"
	"github.com/tidbcloud/infra-provider/pkg/deploy"
)

// WorkerNodePool manage lifecycle node pool for gke.
// Note: during test we found the node pool won't scale-in after dataplane-master pods is deleted
// the node pool keeps scale(in or out), but the node count won't become 0. but for tidb node pool
// using nearly same config, it DOES scale-in, not sure why. here is the diff:
// - our node version: 1.23.14-gke.1800, tidb node version: 1.24.9-gke.3200
// - tidb node pool Location policy: Balanced, our node pool don't have it.
// if we want to share node pool by spec code, need to fix this.
type WorkerNodePool struct {
	*BaseNodePool
}

func NewWorkerNodePool(ctx *task.Context) *WorkerNodePool {
	nodePoolTask := &WorkerNodePool{
		BaseNodePool: NewBaseNodePool(ctx, "WorkerNodePool", ctx.DMWorkerSpec, nil),
	}
	nodePoolTask.BaseNodePool.nodeLabels = nodePoolTask.GetWorkerNodeLabels()
	return nodePoolTask
}

func (t *WorkerNodePool) PostCreate(ctx context.Context) deploy.Result {

	result := t.BaseNodePool.PostCreate(ctx)
	if result.IsDoneState() {
		t.WorkerNodePoolReady = true
	}
	return result
}
