package gke

import (
	"hash/fnv"

	"github.com/tidbcloud/infra-provider/regional-server/api/v1alpha1"
	"github.com/tidbcloud/infra-provider/regional-server/pkg/config"
)

func configuredZones(vpc *v1alpha1.VPC, cfg config.RootConfig) []string {
	if vpc != nil && len(vpc.Spec.Zones) > 0 {
		return append([]string(nil), vpc.Spec.Zones...)
	}
	return append([]string(nil), cfg.RegionConfig.Zones...)
}

func stableZone(zones []string, key string) string {
	if len(zones) == 0 {
		return ""
	}

	h := fnv.New32a()
	_, _ = h.Write([]byte(key))
	return zones[int(h.Sum32()%uint32(len(zones)))]
}
