Skip to content

Commit

Permalink
Make a local copy of ResourceRequirements type without Claims field
Browse files Browse the repository at this point in the history
  • Loading branch information
maqiuyujoyce committed Jan 2, 2024
1 parent 4435362 commit 6cb716e
Show file tree
Hide file tree
Showing 11 changed files with 123 additions and 116 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -59,28 +59,6 @@ spec:
description: Resources specifies the resource customization
of this container. Required
properties:
claims:
description: "Claims lists the names of resources, defined
in spec.resourceClaims, that are used by this container.
\n This is an alpha field and requires enabling the DynamicResourceAllocation
feature gate. \n This field is immutable. It can only
be set for containers."
items:
description: ResourceClaim references one entry in PodSpec.ResourceClaims.
properties:
name:
description: Name must match the name of one entry
in pod.spec.resourceClaims of the Pod where this
field is used. It makes that resource available
inside a container.
type: string
required:
- name
type: object
type: array
x-kubernetes-list-map-keys:
- name
x-kubernetes-list-type: map
limits:
additionalProperties:
anyOf:
Expand Down Expand Up @@ -182,28 +160,6 @@ spec:
description: Resources specifies the resource customization
of this container. Required
properties:
claims:
description: "Claims lists the names of resources, defined
in spec.resourceClaims, that are used by this container.
\n This is an alpha field and requires enabling the DynamicResourceAllocation
feature gate. \n This field is immutable. It can only
be set for containers."
items:
description: ResourceClaim references one entry in PodSpec.ResourceClaims.
properties:
name:
description: Name must match the name of one entry
in pod.spec.resourceClaims of the Pod where this
field is used. It makes that resource available
inside a container.
type: string
required:
- name
type: object
type: array
x-kubernetes-list-map-keys:
- name
x-kubernetes-list-type: map
limits:
additionalProperties:
anyOf:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,28 +60,6 @@ spec:
description: Resources specifies the resource customization
of this container. Required
properties:
claims:
description: "Claims lists the names of resources, defined
in spec.resourceClaims, that are used by this container.
\n This is an alpha field and requires enabling the DynamicResourceAllocation
feature gate. \n This field is immutable. It can only
be set for containers."
items:
description: ResourceClaim references one entry in PodSpec.ResourceClaims.
properties:
name:
description: Name must match the name of one entry
in pod.spec.resourceClaims of the Pod where this
field is used. It makes that resource available
inside a container.
type: string
required:
- name
type: object
type: array
x-kubernetes-list-map-keys:
- name
x-kubernetes-list-type: map
limits:
additionalProperties:
anyOf:
Expand Down Expand Up @@ -181,28 +159,6 @@ spec:
description: Resources specifies the resource customization
of this container. Required
properties:
claims:
description: "Claims lists the names of resources, defined
in spec.resourceClaims, that are used by this container.
\n This is an alpha field and requires enabling the DynamicResourceAllocation
feature gate. \n This field is immutable. It can only
be set for containers."
items:
description: ResourceClaim references one entry in PodSpec.ResourceClaims.
properties:
name:
description: Name must match the name of one entry
in pod.spec.resourceClaims of the Pod where this
field is used. It makes that resource available
inside a container.
type: string
required:
- name
type: object
type: array
x-kubernetes-list-map-keys:
- name
x-kubernetes-list-type: map
limits:
additionalProperties:
anyOf:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,24 @@ type ContainerResourceSpec struct {
Name string `json:"name"`
// Resources specifies the resource customization of this container.
// Required
Resources corev1.ResourceRequirements `json:"resources"`
Resources ResourceRequirements `json:"resources"`
}

// ResourceRequirements describes the compute resource requirements that
// ContainerResourceSpec can leverage.
// It is a local copy of ResourceRequirements in k8s.io/api/core/v1 containing
// a subset of its fields.
type ResourceRequirements struct {
// Limits describes the maximum amount of compute resources allowed.
// More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
// +optional
Limits corev1.ResourceList `json:"limits,omitempty" protobuf:"bytes,1,rep,name=limits,casttype=ResourceList,castkey=ResourceName"`
// Requests describes the minimum amount of compute resources required.
// If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
// otherwise to an implementation-defined value. Requests cannot exceed Limits.
// More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
// +optional
Requests corev1.ResourceList `json:"requests,omitempty" protobuf:"bytes,2,rep,name=requests,casttype=ResourceList,castkey=ResourceName"`
}

// ControllerResourceStatus defines the observed state of ControllerResource.
Expand Down
30 changes: 30 additions & 0 deletions operator/pkg/apis/core/customize/v1alpha1/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,24 @@ type ContainerResourceSpec struct {
Name string `json:"name"`
// Resources specifies the resource customization of this container.
// Required
Resources corev1.ResourceRequirements `json:"resources"`
Resources ResourceRequirements `json:"resources"`
}

// ResourceRequirements describes the compute resource requirements that
// ContainerResourceSpec can leverage.
// It is a local copy of ResourceRequirements in k8s.io/api/core/v1 containing
// a subset of its fields.
type ResourceRequirements struct {
// Limits describes the maximum amount of compute resources allowed.
// More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
// +optional
Limits corev1.ResourceList `json:"limits,omitempty" protobuf:"bytes,1,rep,name=limits,casttype=ResourceList,castkey=ResourceName"`
// Requests describes the minimum amount of compute resources required.
// If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
// otherwise to an implementation-defined value. Requests cannot exceed Limits.
// More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
// +optional
Requests corev1.ResourceList `json:"requests,omitempty" protobuf:"bytes,2,rep,name=requests,casttype=ResourceList,castkey=ResourceName"`
}

// ControllerResourceStatus defines the observed state of ControllerResource.
Expand Down
30 changes: 30 additions & 0 deletions operator/pkg/apis/core/customize/v1beta1/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -934,7 +934,7 @@ func TestConfigConnectorControllerWatchCustomizationCR(t *testing.T) {
Containers: []customizev1beta1.ContainerResourceSpec{
{
Name: "webhook",
Resources: v1.ResourceRequirements{},
Resources: customizev1beta1.ResourceRequirements{},
},
},
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -663,7 +663,7 @@ func TestConfigConnectorContextControllerWatchMultipleCustomizationCR(t *testing
Containers: []customizev1beta1.ContainerResourceSpec{
{
Name: "manager",
Resources: v1.ResourceRequirements{},
Resources: customizev1beta1.ResourceRequirements{},
},
},
},
Expand All @@ -677,7 +677,7 @@ func TestConfigConnectorContextControllerWatchMultipleCustomizationCR(t *testing
Containers: []customizev1beta1.ContainerResourceSpec{
{
Name: "manager",
Resources: v1.ResourceRequirements{},
Resources: customizev1beta1.ResourceRequirements{},
},
},
},
Expand Down
26 changes: 14 additions & 12 deletions operator/pkg/controllers/util_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,20 +17,22 @@ package controllers
import (
"testing"

customizev1beta1 "github.com/GoogleCloudPlatform/k8s-config-connector/operator/pkg/apis/core/customize/v1beta1"

v1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource"
)

func TestValidateContainerResourceCustomizationValues(t *testing.T) {
tests := []struct {
name string
containerResourceCustomization v1.ResourceRequirements
containerResourceCustomization customizev1beta1.ResourceRequirements
containerInManifest map[string]interface{}
wantErr string
}{
{
name: "valid customization - both limit and request are specified",
containerResourceCustomization: v1.ResourceRequirements{
containerResourceCustomization: customizev1beta1.ResourceRequirements{
Limits: v1.ResourceList{
v1.ResourceCPU: resource.MustParse("400m"),
v1.ResourceMemory: resource.MustParse("512Mi"),
Expand All @@ -43,7 +45,7 @@ func TestValidateContainerResourceCustomizationValues(t *testing.T) {
},
{
name: "valid customization - only request is specified",
containerResourceCustomization: v1.ResourceRequirements{
containerResourceCustomization: customizev1beta1.ResourceRequirements{
Requests: v1.ResourceList{
v1.ResourceCPU: resource.MustParse("200m"),
v1.ResourceMemory: resource.MustParse("256Mi"),
Expand All @@ -60,7 +62,7 @@ func TestValidateContainerResourceCustomizationValues(t *testing.T) {
},
{
name: "valid customization - only limit is specified",
containerResourceCustomization: v1.ResourceRequirements{
containerResourceCustomization: customizev1beta1.ResourceRequirements{
Limits: v1.ResourceList{
v1.ResourceCPU: resource.MustParse("400m"),
v1.ResourceMemory: resource.MustParse("512Mi"),
Expand All @@ -77,7 +79,7 @@ func TestValidateContainerResourceCustomizationValues(t *testing.T) {
},
{
name: "valid customization - only request is specified, limit is not found in manifest",
containerResourceCustomization: v1.ResourceRequirements{
containerResourceCustomization: customizev1beta1.ResourceRequirements{
Requests: v1.ResourceList{
v1.ResourceCPU: resource.MustParse("200m"),
v1.ResourceMemory: resource.MustParse("256Mi"),
Expand All @@ -87,7 +89,7 @@ func TestValidateContainerResourceCustomizationValues(t *testing.T) {
},
{
name: "valid customization - only limit is specified, request is not found in manifest",
containerResourceCustomization: v1.ResourceRequirements{
containerResourceCustomization: customizev1beta1.ResourceRequirements{
Limits: v1.ResourceList{
v1.ResourceCPU: resource.MustParse("400m"),
v1.ResourceMemory: resource.MustParse("512Mi"),
Expand All @@ -97,7 +99,7 @@ func TestValidateContainerResourceCustomizationValues(t *testing.T) {
},
{
name: "invalid customization - memory limit is less than memory request",
containerResourceCustomization: v1.ResourceRequirements{
containerResourceCustomization: customizev1beta1.ResourceRequirements{
Limits: v1.ResourceList{
v1.ResourceCPU: resource.MustParse("400m"),
v1.ResourceMemory: resource.MustParse("256Mi"),
Expand All @@ -111,7 +113,7 @@ func TestValidateContainerResourceCustomizationValues(t *testing.T) {
},
{
name: "invalid customization - memory limit is less than default memory request in manifest",
containerResourceCustomization: v1.ResourceRequirements{
containerResourceCustomization: customizev1beta1.ResourceRequirements{
Limits: v1.ResourceList{
v1.ResourceCPU: resource.MustParse("400m"),
v1.ResourceMemory: resource.MustParse("256Mi"),
Expand All @@ -129,7 +131,7 @@ func TestValidateContainerResourceCustomizationValues(t *testing.T) {
},
{
name: "invalid customization - the default memory limit in manifest is less than memory request",
containerResourceCustomization: v1.ResourceRequirements{
containerResourceCustomization: customizev1beta1.ResourceRequirements{
Requests: v1.ResourceList{
v1.ResourceCPU: resource.MustParse("200m"),
v1.ResourceMemory: resource.MustParse("1Gi"),
Expand All @@ -147,7 +149,7 @@ func TestValidateContainerResourceCustomizationValues(t *testing.T) {
},
{
name: "invalid customization - cpu limit is less than cpu request",
containerResourceCustomization: v1.ResourceRequirements{
containerResourceCustomization: customizev1beta1.ResourceRequirements{
Limits: v1.ResourceList{
v1.ResourceCPU: resource.MustParse("200m"),
v1.ResourceMemory: resource.MustParse("512Mi"),
Expand All @@ -161,7 +163,7 @@ func TestValidateContainerResourceCustomizationValues(t *testing.T) {
},
{
name: "invalid customization - cpu limit is less than default cpu request in manifest",
containerResourceCustomization: v1.ResourceRequirements{
containerResourceCustomization: customizev1beta1.ResourceRequirements{
Limits: v1.ResourceList{
v1.ResourceCPU: resource.MustParse("100m"),
v1.ResourceMemory: resource.MustParse("512Mi"),
Expand All @@ -179,7 +181,7 @@ func TestValidateContainerResourceCustomizationValues(t *testing.T) {
},
{
name: "invalid customization - the default cpu limit in manifest is less than cpu request",
containerResourceCustomization: v1.ResourceRequirements{
containerResourceCustomization: customizev1beta1.ResourceRequirements{
Requests: v1.ResourceList{
v1.ResourceCPU: resource.MustParse("400m"),
v1.ResourceMemory: resource.MustParse("256Mi"),
Expand Down
Loading

0 comments on commit 6cb716e

Please sign in to comment.