package framework

import (
	"context"
	"fmt"
)

type ScalingTaskExecutorName string

type ScalingTaskExecutorMeta struct {
	ScalerType             ClusterScalerType
	ScalerInterfaceVersion ClusterScalerInterfaceVersion
	InputInterfaceVersion  InputInterfaceVersion
	OutputInterfaceVersion OutputInterfaceVersion
	ExecutorName           ScalingTaskExecutorName
}

func (this *ScalingTaskExecutorMeta) String() string {
	return fmt.Sprintf(
		"ScalerType:%s;ScalerInterfaceVersion:%s;InputInterfaceVersion:%s;OutputInterfaceVersion:%s;ExecutorName:%s",
		this.ScalerType,
		this.ScalerInterfaceVersion,
		this.InputInterfaceVersion,
		this.OutputInterfaceVersion,
		this.ExecutorName)
}

type ScalingTaskExecutor interface {
	Run(ctx context.Context) error
}
