package gitops

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

// ConfigProvider is the interface to access the specs managed by gitops
// Note: only part of the providers ships with gitops support, try to access machine spec for an unsupported provider
// will result an error
type ConfigProvider interface {
	GetMachineSpec(provider Provider, component cloudv1.ClusterComponent) (*cloudv1.MachineSpec, error)
	GetResourceSpec(provider Provider, component cloudv1.ClusterComponent) (*cloudv1.ResourceSpec, error)
}

type Provider interface {
	InstanceTypeProvider
	GetProviderType() string
	FindRegionZones(region string) ([]string, error)
}

type InstanceTypeProvider interface {
	GetInstanceTypes() ([]cloudv1.InstanceType, error)
	FindInstanceType(name string) (cloudv1.InstanceType, error)
}
