package dataplane

import (
	"k8s.io/client-go/rest"
	"sigs.k8s.io/controller-runtime/pkg/client"
)

// Manager is an interface for managing k8s clients
// name is the k8s cluster name
type Manager interface {
	// Check whether config is registered
	// isRegistered(name string) bool

	// Register rest.Config so that users can get client.
	// Nothing will happen if "name" is registered multiple times.
	// register(name string, cfg *rest.Config) error

	// Deregister the name to stop client cache
	// deregister(name string)

	// GetNodeGroup k8s client from cache
	// It should be called after "Register"
	GetClient(name string) (client.Client, error)

	// GetNodeGroup rest config from cache
	// It should be called after "Register"
	GetRestConfig(name string) (*rest.Config, error)
}

const (
	LocalName = "local"
)
