116 lines
3.7 KiB
Go
116 lines
3.7 KiB
Go
package configmanager
|
|
|
|
import (
|
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
|
|
|
configv1alpha1 "github.com/karmada-io/karmada/pkg/apis/config/v1alpha1"
|
|
)
|
|
|
|
// CustomConfiguration provides base information about custom interpreter configuration
|
|
type CustomConfiguration interface {
|
|
Name() string
|
|
TargetResource() schema.GroupVersionKind
|
|
}
|
|
|
|
// LuaScriptAccessor provides a common interface to get custom interpreter lua script
|
|
type LuaScriptAccessor interface {
|
|
CustomConfiguration
|
|
|
|
GetRetentionLuaScript() string
|
|
GetReplicaResourceLuaScript() string
|
|
GetReplicaRevisionLuaScript() string
|
|
GetStatusReflectionLuaScript() string
|
|
GetStatusAggregationLuaScript() string
|
|
GetHealthInterpretationLuaScript() string
|
|
GetDependencyInterpretationLuaScript() string
|
|
}
|
|
|
|
// CustomAccessor provides a common interface to get custom interpreter configuration.
|
|
type CustomAccessor interface {
|
|
LuaScriptAccessor
|
|
}
|
|
|
|
type resourceCustomAccessor struct {
|
|
retention *configv1alpha1.LocalValueRetention
|
|
replicaResource *configv1alpha1.ReplicaResourceRequirement
|
|
replicaRevision *configv1alpha1.ReplicaRevision
|
|
statusReflection *configv1alpha1.StatusReflection
|
|
statusAggregation *configv1alpha1.StatusAggregation
|
|
healthInterpretation *configv1alpha1.HealthInterpretation
|
|
dependencyInterpretation *configv1alpha1.DependencyInterpretation
|
|
configurationName string
|
|
configurationTargetGVK schema.GroupVersionKind
|
|
}
|
|
|
|
// NewResourceCustomAccessorAccessor creates an accessor for resource interpreter customization
|
|
func NewResourceCustomAccessorAccessor(customization *configv1alpha1.ResourceInterpreterCustomization) CustomAccessor {
|
|
return &resourceCustomAccessor{
|
|
retention: customization.Spec.Customizations.Retention,
|
|
replicaResource: customization.Spec.Customizations.ReplicaResource,
|
|
replicaRevision: customization.Spec.Customizations.ReplicaRevision,
|
|
statusReflection: customization.Spec.Customizations.StatusReflection,
|
|
statusAggregation: customization.Spec.Customizations.StatusAggregation,
|
|
healthInterpretation: customization.Spec.Customizations.HealthInterpretation,
|
|
dependencyInterpretation: customization.Spec.Customizations.DependencyInterpretation,
|
|
configurationName: customization.Name,
|
|
configurationTargetGVK: schema.FromAPIVersionAndKind(customization.Spec.Target.APIVersion, customization.Spec.Target.Kind),
|
|
}
|
|
}
|
|
|
|
func (a *resourceCustomAccessor) GetRetentionLuaScript() string {
|
|
if a.retention == nil {
|
|
return ""
|
|
}
|
|
return a.retention.LuaScript
|
|
}
|
|
|
|
func (a *resourceCustomAccessor) GetReplicaResourceLuaScript() string {
|
|
if a.replicaResource == nil {
|
|
return ""
|
|
}
|
|
return a.replicaResource.LuaScript
|
|
}
|
|
|
|
func (a *resourceCustomAccessor) GetReplicaRevisionLuaScript() string {
|
|
if a.replicaRevision == nil {
|
|
return ""
|
|
}
|
|
return a.replicaRevision.LuaScript
|
|
}
|
|
|
|
func (a *resourceCustomAccessor) GetStatusReflectionLuaScript() string {
|
|
if a.statusReflection == nil {
|
|
return ""
|
|
}
|
|
return a.statusReflection.LuaScript
|
|
}
|
|
|
|
func (a *resourceCustomAccessor) GetStatusAggregationLuaScript() string {
|
|
if a.statusAggregation == nil {
|
|
return ""
|
|
}
|
|
return a.statusAggregation.LuaScript
|
|
}
|
|
|
|
func (a *resourceCustomAccessor) GetHealthInterpretationLuaScript() string {
|
|
if a.healthInterpretation == nil {
|
|
return ""
|
|
}
|
|
return a.healthInterpretation.LuaScript
|
|
}
|
|
|
|
func (a *resourceCustomAccessor) GetDependencyInterpretationLuaScript() string {
|
|
if a.dependencyInterpretation == nil {
|
|
return ""
|
|
}
|
|
return a.dependencyInterpretation.LuaScript
|
|
}
|
|
|
|
func (a *resourceCustomAccessor) Name() string {
|
|
return a.configurationName
|
|
}
|
|
|
|
func (a *resourceCustomAccessor) TargetResource() schema.GroupVersionKind {
|
|
return a.configurationTargetGVK
|
|
}
|