package gke

import (
	"context"

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

// MasterNodePool 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 MasterNodePool struct {
	*BaseNodePool
}

func NewMasterNodePool(ctx *task.Context) *MasterNodePool {
	nodePoolTask := &MasterNodePool{
		BaseNodePool: NewBaseNodePool(ctx, "MasterNodePool", ctx.DMMasterSpec, nil),
	}
	nodePoolTask.BaseNodePool.nodeLabels = nodePoolTask.GetMasterNodeLabels()
	return nodePoolTask
}

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

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