generated from kedacore/github-template
-
Notifications
You must be signed in to change notification settings - Fork 88
/
scaledobject.go
66 lines (61 loc) · 1.65 KB
/
scaledobject.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package k8s
import (
kedav1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/utils/ptr"
"github.com/kedacore/http-add-on/operator/apis/http/v1alpha1"
)
const (
soPollingInterval = 15
soTriggerType = "external-push"
ScalerAddressKey = "scalerAddress"
HTTPScaledObjectKey = "httpScaledObject"
)
// NewScaledObject creates a new ScaledObject in memory
func NewScaledObject(
namespace string,
name string,
labels map[string]string,
annotations map[string]string,
workloadRef v1alpha1.ScaleTargetRef,
scalerAddress string,
minReplicas *int32,
maxReplicas *int32,
cooldownPeriod *int32,
) *kedav1alpha1.ScaledObject {
return &kedav1alpha1.ScaledObject{
TypeMeta: metav1.TypeMeta{
APIVersion: kedav1alpha1.SchemeGroupVersion.Identifier(),
Kind: ObjectKind(&kedav1alpha1.ScaledObject{}),
},
ObjectMeta: metav1.ObjectMeta{
Namespace: namespace,
Name: name,
Labels: labels,
Annotations: annotations,
},
Spec: kedav1alpha1.ScaledObjectSpec{
ScaleTargetRef: &kedav1alpha1.ScaleTarget{
APIVersion: workloadRef.APIVersion,
Kind: workloadRef.Kind,
Name: workloadRef.Name,
},
PollingInterval: ptr.To[int32](soPollingInterval),
CooldownPeriod: cooldownPeriod,
MinReplicaCount: minReplicas,
MaxReplicaCount: maxReplicas,
Advanced: &kedav1alpha1.AdvancedConfig{
RestoreToOriginalReplicaCount: true,
},
Triggers: []kedav1alpha1.ScaleTriggers{
{
Type: soTriggerType,
Metadata: map[string]string{
ScalerAddressKey: scalerAddress,
HTTPScaledObjectKey: name,
},
},
},
},
}
}