package framework

import (
	"fmt"
)

type ClusterScalerType string

// this version is the golang-interface version,
// for example: `ClusterScalerInterfaceV1` in this package
type ClusterScalerInterfaceVersion string

type UnattachedScalerMeta struct {
	Type             ClusterScalerType
	InterfaceVersion ClusterScalerInterfaceVersion
}

func (this *UnattachedScalerMeta) String() string {
	return fmt.Sprintf("Type:%s;InterfaceVersion:%s", this.Type, this.InterfaceVersion)
}

type ClusterScalerMeta struct {
	ScalerMeta UnattachedScalerMeta
	InputMeta  InputProviderMeta
	OutputMeta OutputMeta
}

func (this *ClusterScalerMeta) String() string {
	return fmt.Sprintf("ScalerMeta:%s;InputMeta:%s;OutputMeta:%s",
		this.ScalerMeta.String(), this.InputMeta.String(), this.OutputMeta.String())
}
