diff --git a/api/datadoghq/common/datadogpodautoscaler_types.go b/api/datadoghq/common/datadogpodautoscaler_types.go index 782a784ae..33e8d3d6c 100644 --- a/api/datadoghq/common/datadogpodautoscaler_types.go +++ b/api/datadoghq/common/datadogpodautoscaler_types.go @@ -115,36 +115,36 @@ type DatadogPodAutoscalerScalingRule struct { PeriodSeconds int32 `json:"periodSeconds"` } -// DatadogPodAutoscalerTargetType defines the type of the target. +// DatadogPodAutoscalerObjectiveType defines the type of the target. // +kubebuilder:validation:Enum:=PodResource;ContainerResource -type DatadogPodAutoscalerTargetType string +type DatadogPodAutoscalerObjectiveType string const ( - // DatadogPodAutoscalerPodResourceTargetType allows to set pod-level resource targets. - DatadogPodAutoscalerPodResourceTargetType DatadogPodAutoscalerTargetType = "PodResource" + // DatadogPodAutoscalerPodResourceObjectiveType allows to set pod-level resource targets. + DatadogPodAutoscalerPodResourceObjectiveType DatadogPodAutoscalerObjectiveType = "PodResource" - // DatadogPodAutoscalerContainerResourceTargetType allows to set container-level resource targets. - DatadogPodAutoscalerContainerResourceTargetType DatadogPodAutoscalerTargetType = "ContainerResource" + // DatadogPodAutoscalerContainerResourceObjectiveType allows to set container-level resource targets. + DatadogPodAutoscalerContainerResourceObjectiveType DatadogPodAutoscalerObjectiveType = "ContainerResource" ) // DatadogPodAutoscalerObjective defines the objectives to reach and maintain for the target resource. // +kubebuilder:object:generate=true type DatadogPodAutoscalerObjective struct { // Type sets the type of the target. - Type DatadogPodAutoscalerTargetType `json:"type"` + Type DatadogPodAutoscalerObjectiveType `json:"type"` // PodResource allows to set a pod-level resource target. - PodResource *DatadogPodAutoscalerResourceTarget `json:"podResource,omitempty"` + PodResource *DatadogPodAutoscalerPodResourceObjective `json:"podResource,omitempty"` // ContainerResource allows to set a container-level resource target. - ContainerResource *DatadogPodAutoscalerContainerResourceTarget `json:"containerResource,omitempty"` + ContainerResource *DatadogPodAutoscalerContainerResourceObjective `json:"containerResource,omitempty"` } -// DatadogPodAutoscalerResourceTarget defines a pod-level resource target (for instance, CPU Utilization at 80%) +// DatadogPodAutoscalerPodResourceObjective defines a pod-level resource target (for instance, CPU Utilization at 80%) // For pod-level targets, resources are the sum of all containers resources. // Utilization is computed from sum(usage) / sum(requests). // +kubebuilder:object:generate=true -type DatadogPodAutoscalerResourceTarget struct { +type DatadogPodAutoscalerPodResourceObjective struct { // Name is the name of the resource. // +kubebuilder:validation:Enum:=cpu Name corev1.ResourceName `json:"name"` @@ -153,9 +153,9 @@ type DatadogPodAutoscalerResourceTarget struct { Value DatadogPodAutoscalerTargetValue `json:"value"` } -// DatadogPodAutoscalerContainerResourceTarget defines a container-level resource target (for instance, CPU Utilization for container named "foo" at 80%) +// DatadogPodAutoscalerContainerResourceObjective defines a container-level resource target (for instance, CPU Utilization for container named "foo" at 80%) // +kubebuilder:object:generate=true -type DatadogPodAutoscalerContainerResourceTarget struct { +type DatadogPodAutoscalerContainerResourceObjective struct { // Name is the name of the resource. // +kubebuilder:validation:Enum:=cpu Name corev1.ResourceName `json:"name"` diff --git a/api/datadoghq/common/zz_generated.deepcopy.go b/api/datadoghq/common/zz_generated.deepcopy.go index 524aa1a7d..cc9cf3c2f 100644 --- a/api/datadoghq/common/zz_generated.deepcopy.go +++ b/api/datadoghq/common/zz_generated.deepcopy.go @@ -112,17 +112,17 @@ func (in *DatadogPodAutoscalerContainerResourceConstraints) DeepCopy() *DatadogP } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *DatadogPodAutoscalerContainerResourceTarget) DeepCopyInto(out *DatadogPodAutoscalerContainerResourceTarget) { +func (in *DatadogPodAutoscalerContainerResourceObjective) DeepCopyInto(out *DatadogPodAutoscalerContainerResourceObjective) { *out = *in in.Value.DeepCopyInto(&out.Value) } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DatadogPodAutoscalerContainerResourceTarget. -func (in *DatadogPodAutoscalerContainerResourceTarget) DeepCopy() *DatadogPodAutoscalerContainerResourceTarget { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DatadogPodAutoscalerContainerResourceObjective. +func (in *DatadogPodAutoscalerContainerResourceObjective) DeepCopy() *DatadogPodAutoscalerContainerResourceObjective { if in == nil { return nil } - out := new(DatadogPodAutoscalerContainerResourceTarget) + out := new(DatadogPodAutoscalerContainerResourceObjective) in.DeepCopyInto(out) return out } @@ -230,12 +230,12 @@ func (in *DatadogPodAutoscalerObjective) DeepCopyInto(out *DatadogPodAutoscalerO *out = *in if in.PodResource != nil { in, out := &in.PodResource, &out.PodResource - *out = new(DatadogPodAutoscalerResourceTarget) + *out = new(DatadogPodAutoscalerPodResourceObjective) (*in).DeepCopyInto(*out) } if in.ContainerResource != nil { in, out := &in.ContainerResource, &out.ContainerResource - *out = new(DatadogPodAutoscalerContainerResourceTarget) + *out = new(DatadogPodAutoscalerContainerResourceObjective) (*in).DeepCopyInto(*out) } } @@ -251,17 +251,17 @@ func (in *DatadogPodAutoscalerObjective) DeepCopy() *DatadogPodAutoscalerObjecti } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *DatadogPodAutoscalerResourceTarget) DeepCopyInto(out *DatadogPodAutoscalerResourceTarget) { +func (in *DatadogPodAutoscalerPodResourceObjective) DeepCopyInto(out *DatadogPodAutoscalerPodResourceObjective) { *out = *in in.Value.DeepCopyInto(&out.Value) } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DatadogPodAutoscalerResourceTarget. -func (in *DatadogPodAutoscalerResourceTarget) DeepCopy() *DatadogPodAutoscalerResourceTarget { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DatadogPodAutoscalerPodResourceObjective. +func (in *DatadogPodAutoscalerPodResourceObjective) DeepCopy() *DatadogPodAutoscalerPodResourceObjective { if in == nil { return nil } - out := new(DatadogPodAutoscalerResourceTarget) + out := new(DatadogPodAutoscalerPodResourceObjective) in.DeepCopyInto(out) return out } diff --git a/api/datadoghq/v1alpha2/datadogpodautoscaler_conversion.go b/api/datadoghq/v1alpha2/datadogpodautoscaler_conversion.go index c52c03c3c..ccde57b15 100644 --- a/api/datadoghq/v1alpha2/datadogpodautoscaler_conversion.go +++ b/api/datadoghq/v1alpha2/datadogpodautoscaler_conversion.go @@ -6,6 +6,8 @@ package v1alpha2 import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "github.com/DataDog/datadog-operator/api/datadoghq/v1alpha1" ) @@ -17,7 +19,10 @@ func NewDatadogPodAutoscalerFromV1Alpha1(in *v1alpha1.DatadogPodAutoscaler) *Dat // As many types are shared, we'll assign the deep copied value to the new object in = in.DeepCopy() out := &DatadogPodAutoscaler{ - TypeMeta: in.TypeMeta, + TypeMeta: metav1.TypeMeta{ + Kind: "DatadogPodAutoscaler", + APIVersion: "datadoghq.com/v1alpha2", + }, ObjectMeta: in.ObjectMeta, Spec: ConvertDatadogPodAutoscalerSpecFromV1Alpha1(in.Spec), Status: in.Status, @@ -61,7 +66,10 @@ func NewDatadogPodAutoscalerToV1Alpha1(in *DatadogPodAutoscaler) *v1alpha1.Datad // As many types are shared, we'll assign the deep copied value to the new object in = in.DeepCopy() out := &v1alpha1.DatadogPodAutoscaler{ - TypeMeta: in.TypeMeta, + TypeMeta: metav1.TypeMeta{ + Kind: "DatadogPodAutoscaler", + APIVersion: "datadoghq.com/v1alpha1", + }, ObjectMeta: in.ObjectMeta, Spec: ConvertDatadogPodAutoscalerSpecToV1Alpha1(in.Spec), Status: in.Status, diff --git a/api/datadoghq/v1alpha2/datadogpodautoscaler_conversion_test.go b/api/datadoghq/v1alpha2/datadogpodautoscaler_conversion_test.go index 5ac694ff0..462452579 100644 --- a/api/datadoghq/v1alpha2/datadogpodautoscaler_conversion_test.go +++ b/api/datadoghq/v1alpha2/datadogpodautoscaler_conversion_test.go @@ -3,15 +3,17 @@ package v1alpha2 import ( "testing" - "github.com/DataDog/datadog-operator/api/datadoghq/common" - "github.com/DataDog/datadog-operator/api/datadoghq/v1alpha1" - "github.com/DataDog/datadog-operator/api/utils" "github.com/google/go-cmp/cmp" "github.com/stretchr/testify/assert" - v2 "k8s.io/api/autoscaling/v2" - v1 "k8s.io/api/core/v1" + + autoscalingv2 "k8s.io/api/autoscaling/v2" + corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + + "github.com/DataDog/datadog-operator/api/datadoghq/common" + "github.com/DataDog/datadog-operator/api/datadoghq/v1alpha1" + "github.com/DataDog/datadog-operator/api/utils" ) func TestNewDatadogPodAutoscalerFromV1Alpha1(t *testing.T) { @@ -25,7 +27,7 @@ func TestNewDatadogPodAutoscalerFromV1Alpha1(t *testing.T) { Namespace: "default", }, Spec: v1alpha1.DatadogPodAutoscalerSpec{ - TargetRef: v2.CrossVersionObjectReference{ + TargetRef: autoscalingv2.CrossVersionObjectReference{ Kind: "Deployment", Name: "test-deployment", APIVersion: "apps/v1", @@ -34,9 +36,9 @@ func TestNewDatadogPodAutoscalerFromV1Alpha1(t *testing.T) { RemoteVersion: utils.NewPointer[uint64](10), Targets: []common.DatadogPodAutoscalerObjective{ { - Type: common.DatadogPodAutoscalerContainerResourceTargetType, - PodResource: &common.DatadogPodAutoscalerResourceTarget{ - Name: v1.ResourceCPU, + Type: common.DatadogPodAutoscalerContainerResourceObjectiveType, + PodResource: &common.DatadogPodAutoscalerPodResourceObjective{ + Name: corev1.ResourceCPU, Value: common.DatadogPodAutoscalerTargetValue{ Type: common.DatadogPodAutoscalerUtilizationTargetValueType, Utilization: utils.NewPointer[int32](80), @@ -44,9 +46,9 @@ func TestNewDatadogPodAutoscalerFromV1Alpha1(t *testing.T) { }, }, { - Type: common.DatadogPodAutoscalerPodResourceTargetType, - PodResource: &common.DatadogPodAutoscalerResourceTarget{ - Name: v1.ResourceMemory, + Type: common.DatadogPodAutoscalerPodResourceObjectiveType, + PodResource: &common.DatadogPodAutoscalerPodResourceObjective{ + Name: corev1.ResourceMemory, Value: common.DatadogPodAutoscalerTargetValue{ Type: common.DatadogPodAutoscalerUtilizationTargetValueType, Utilization: utils.NewPointer[int32](80), @@ -62,13 +64,13 @@ func TestNewDatadogPodAutoscalerFromV1Alpha1(t *testing.T) { Name: "foo", Enabled: utils.NewPointer[bool](true), Requests: &common.DatadogPodAutoscalerContainerResourceConstraints{ - MinAllowed: v1.ResourceList{ - v1.ResourceCPU: resource.MustParse("100m"), - v1.ResourceMemory: resource.MustParse("100Mi"), + MinAllowed: corev1.ResourceList{ + corev1.ResourceCPU: resource.MustParse("100m"), + corev1.ResourceMemory: resource.MustParse("100Mi"), }, - MaxAllowed: v1.ResourceList{ - v1.ResourceCPU: resource.MustParse("100m"), - v1.ResourceMemory: resource.MustParse("100Mi"), + MaxAllowed: corev1.ResourceList{ + corev1.ResourceCPU: resource.MustParse("100m"), + corev1.ResourceMemory: resource.MustParse("100Mi"), }, }, }, @@ -86,14 +88,14 @@ func TestNewDatadogPodAutoscalerFromV1Alpha1(t *testing.T) { expected := &DatadogPodAutoscaler{ TypeMeta: metav1.TypeMeta{ Kind: "DatadogPodAutoscaler", - APIVersion: "datadoghq.com/v1alpha1", + APIVersion: "datadoghq.com/v1alpha2", }, ObjectMeta: metav1.ObjectMeta{ Name: "test-dpa", Namespace: "default", }, Spec: DatadogPodAutoscalerSpec{ - TargetRef: v2.CrossVersionObjectReference{ + TargetRef: autoscalingv2.CrossVersionObjectReference{ Kind: "Deployment", Name: "test-deployment", APIVersion: "apps/v1", @@ -102,9 +104,9 @@ func TestNewDatadogPodAutoscalerFromV1Alpha1(t *testing.T) { RemoteVersion: utils.NewPointer[uint64](10), Objectives: []common.DatadogPodAutoscalerObjective{ { - Type: common.DatadogPodAutoscalerContainerResourceTargetType, - PodResource: &common.DatadogPodAutoscalerResourceTarget{ - Name: v1.ResourceCPU, + Type: common.DatadogPodAutoscalerContainerResourceObjectiveType, + PodResource: &common.DatadogPodAutoscalerPodResourceObjective{ + Name: corev1.ResourceCPU, Value: common.DatadogPodAutoscalerTargetValue{ Type: common.DatadogPodAutoscalerUtilizationTargetValueType, Utilization: utils.NewPointer[int32](80), @@ -112,9 +114,9 @@ func TestNewDatadogPodAutoscalerFromV1Alpha1(t *testing.T) { }, }, { - Type: common.DatadogPodAutoscalerPodResourceTargetType, - PodResource: &common.DatadogPodAutoscalerResourceTarget{ - Name: v1.ResourceMemory, + Type: common.DatadogPodAutoscalerPodResourceObjectiveType, + PodResource: &common.DatadogPodAutoscalerPodResourceObjective{ + Name: corev1.ResourceMemory, Value: common.DatadogPodAutoscalerTargetValue{ Type: common.DatadogPodAutoscalerUtilizationTargetValueType, Utilization: utils.NewPointer[int32](80), @@ -130,13 +132,13 @@ func TestNewDatadogPodAutoscalerFromV1Alpha1(t *testing.T) { Name: "foo", Enabled: utils.NewPointer[bool](true), Requests: &common.DatadogPodAutoscalerContainerResourceConstraints{ - MinAllowed: v1.ResourceList{ - v1.ResourceCPU: resource.MustParse("100m"), - v1.ResourceMemory: resource.MustParse("100Mi"), + MinAllowed: corev1.ResourceList{ + corev1.ResourceCPU: resource.MustParse("100m"), + corev1.ResourceMemory: resource.MustParse("100Mi"), }, - MaxAllowed: v1.ResourceList{ - v1.ResourceCPU: resource.MustParse("100m"), - v1.ResourceMemory: resource.MustParse("100Mi"), + MaxAllowed: corev1.ResourceList{ + corev1.ResourceCPU: resource.MustParse("100m"), + corev1.ResourceMemory: resource.MustParse("100Mi"), }, }, }, @@ -166,7 +168,7 @@ func TestNewDatadogPodAutoscalerToV1Alpha1(t *testing.T) { Namespace: "default", }, Spec: DatadogPodAutoscalerSpec{ - TargetRef: v2.CrossVersionObjectReference{ + TargetRef: autoscalingv2.CrossVersionObjectReference{ Kind: "Deployment", Name: "test-deployment", APIVersion: "apps/v1", @@ -175,9 +177,9 @@ func TestNewDatadogPodAutoscalerToV1Alpha1(t *testing.T) { RemoteVersion: utils.NewPointer[uint64](10), Objectives: []common.DatadogPodAutoscalerObjective{ { - Type: common.DatadogPodAutoscalerContainerResourceTargetType, - PodResource: &common.DatadogPodAutoscalerResourceTarget{ - Name: v1.ResourceCPU, + Type: common.DatadogPodAutoscalerContainerResourceObjectiveType, + PodResource: &common.DatadogPodAutoscalerPodResourceObjective{ + Name: corev1.ResourceCPU, Value: common.DatadogPodAutoscalerTargetValue{ Type: common.DatadogPodAutoscalerUtilizationTargetValueType, Utilization: utils.NewPointer[int32](80), @@ -185,9 +187,9 @@ func TestNewDatadogPodAutoscalerToV1Alpha1(t *testing.T) { }, }, { - Type: common.DatadogPodAutoscalerPodResourceTargetType, - PodResource: &common.DatadogPodAutoscalerResourceTarget{ - Name: v1.ResourceMemory, + Type: common.DatadogPodAutoscalerPodResourceObjectiveType, + PodResource: &common.DatadogPodAutoscalerPodResourceObjective{ + Name: corev1.ResourceMemory, Value: common.DatadogPodAutoscalerTargetValue{ Type: common.DatadogPodAutoscalerUtilizationTargetValueType, Utilization: utils.NewPointer[int32](80), @@ -203,13 +205,13 @@ func TestNewDatadogPodAutoscalerToV1Alpha1(t *testing.T) { Name: "foo", Enabled: utils.NewPointer[bool](true), Requests: &common.DatadogPodAutoscalerContainerResourceConstraints{ - MinAllowed: v1.ResourceList{ - v1.ResourceCPU: resource.MustParse("100m"), - v1.ResourceMemory: resource.MustParse("100Mi"), + MinAllowed: corev1.ResourceList{ + corev1.ResourceCPU: resource.MustParse("100m"), + corev1.ResourceMemory: resource.MustParse("100Mi"), }, - MaxAllowed: v1.ResourceList{ - v1.ResourceCPU: resource.MustParse("100m"), - v1.ResourceMemory: resource.MustParse("100Mi"), + MaxAllowed: corev1.ResourceList{ + corev1.ResourceCPU: resource.MustParse("100m"), + corev1.ResourceMemory: resource.MustParse("100Mi"), }, }, }, @@ -234,7 +236,7 @@ func TestNewDatadogPodAutoscalerToV1Alpha1(t *testing.T) { Namespace: "default", }, Spec: v1alpha1.DatadogPodAutoscalerSpec{ - TargetRef: v2.CrossVersionObjectReference{ + TargetRef: autoscalingv2.CrossVersionObjectReference{ Kind: "Deployment", Name: "test-deployment", APIVersion: "apps/v1", @@ -243,9 +245,9 @@ func TestNewDatadogPodAutoscalerToV1Alpha1(t *testing.T) { RemoteVersion: utils.NewPointer[uint64](10), Targets: []common.DatadogPodAutoscalerObjective{ { - Type: common.DatadogPodAutoscalerContainerResourceTargetType, - PodResource: &common.DatadogPodAutoscalerResourceTarget{ - Name: v1.ResourceCPU, + Type: common.DatadogPodAutoscalerContainerResourceObjectiveType, + PodResource: &common.DatadogPodAutoscalerPodResourceObjective{ + Name: corev1.ResourceCPU, Value: common.DatadogPodAutoscalerTargetValue{ Type: common.DatadogPodAutoscalerUtilizationTargetValueType, Utilization: utils.NewPointer[int32](80), @@ -253,9 +255,9 @@ func TestNewDatadogPodAutoscalerToV1Alpha1(t *testing.T) { }, }, { - Type: common.DatadogPodAutoscalerPodResourceTargetType, - PodResource: &common.DatadogPodAutoscalerResourceTarget{ - Name: v1.ResourceMemory, + Type: common.DatadogPodAutoscalerPodResourceObjectiveType, + PodResource: &common.DatadogPodAutoscalerPodResourceObjective{ + Name: corev1.ResourceMemory, Value: common.DatadogPodAutoscalerTargetValue{ Type: common.DatadogPodAutoscalerUtilizationTargetValueType, Utilization: utils.NewPointer[int32](80), @@ -271,13 +273,13 @@ func TestNewDatadogPodAutoscalerToV1Alpha1(t *testing.T) { Name: "foo", Enabled: utils.NewPointer[bool](true), Requests: &common.DatadogPodAutoscalerContainerResourceConstraints{ - MinAllowed: v1.ResourceList{ - v1.ResourceCPU: resource.MustParse("100m"), - v1.ResourceMemory: resource.MustParse("100Mi"), + MinAllowed: corev1.ResourceList{ + corev1.ResourceCPU: resource.MustParse("100m"), + corev1.ResourceMemory: resource.MustParse("100Mi"), }, - MaxAllowed: v1.ResourceList{ - v1.ResourceCPU: resource.MustParse("100m"), - v1.ResourceMemory: resource.MustParse("100Mi"), + MaxAllowed: corev1.ResourceList{ + corev1.ResourceCPU: resource.MustParse("100m"), + corev1.ResourceMemory: resource.MustParse("100Mi"), }, }, },