package k8s

import (
	"context"
	"fmt"

	"helm.sh/helm/v3/pkg/action"
	"sigs.k8s.io/controller-runtime/pkg/client"

	cloudv1 "github.com/tidbcloud/infra-api/api/v1"
)

const (
	// Namespace for Helm to store data.
	HelmNamespace = "helm"
)

type ClientGetter interface {
	GetClient(context.Context) (client.Client, error)
	GetHelmConfig(context.Context) (*action.Configuration, error)
}

type ClusterMetaGetter interface {
	client.Object
	GetClusterName() string
	GetRegion() string
	GetProvider() string
	GetNetwork() *cloudv1.Network
}

type EmptyGetter struct{}

var _ ClientGetter = &EmptyGetter{}

func (g *EmptyGetter) GetClient(context.Context) (client.Client, error) {
	return nil, fmt.Errorf("empty getter")
}
func (g *EmptyGetter) GetHelmConfig(context.Context) (*action.Configuration, error) {
	return nil, fmt.Errorf("empty getter")
}
