set AllocatedResourcesStatus in the Pod Status
This commit is contained in:
@@ -8209,11 +8209,10 @@ func validateContainerStatusNoAllocatedResourcesStatus(containerStatuses []core.
|
||||
allErrors := field.ErrorList{}
|
||||
|
||||
for i, containerStatus := range containerStatuses {
|
||||
if containerStatus.AllocatedResourcesStatus == nil {
|
||||
if len(containerStatus.AllocatedResourcesStatus) == 0 {
|
||||
continue
|
||||
} else {
|
||||
allErrors = append(allErrors, field.Forbidden(fldPath.Index(i).Child("allocatedResourcesStatus"), "cannot be set for a container status"))
|
||||
}
|
||||
allErrors = append(allErrors, field.Forbidden(fldPath.Index(i).Child("allocatedResourcesStatus"), "must not be specified in container status"))
|
||||
}
|
||||
|
||||
return allErrors
|
||||
@@ -8263,12 +8262,18 @@ func validateContainerStatusAllocatedResourcesStatus(containerStatuses []core.Co
|
||||
uniqueResources := sets.New[core.ResourceID]()
|
||||
// check resource IDs are unique
|
||||
for k, r := range allocatedResource.Resources {
|
||||
if r.Health != core.ResourceHealthStatusHealthy && r.Health != core.ResourceHealthStatusUnhealthy && r.Health != core.ResourceHealthStatusUnknown {
|
||||
allErrors = append(allErrors, field.Invalid(fldPath.Index(i).Child("allocatedResourcesStatus").Index(j).Child("resources").Index(k).Child("health"), r.Health, "must be one of Healthy, Unhealthy, Unknown"))
|
||||
|
||||
var supportedResourceHealthValues = sets.New(
|
||||
core.ResourceHealthStatusHealthy,
|
||||
core.ResourceHealthStatusUnhealthy,
|
||||
core.ResourceHealthStatusUnknown)
|
||||
|
||||
if !supportedResourceHealthValues.Has(r.Health) {
|
||||
allErrors = append(allErrors, field.NotSupported(fldPath.Index(i).Child("allocatedResourcesStatus").Index(j).Child("resources").Index(k).Child("health"), r.Health, sets.List(supportedResourceHealthValues)))
|
||||
}
|
||||
|
||||
if uniqueResources.Has(r.ResourceID) {
|
||||
allErrors = append(allErrors, field.Invalid(fldPath.Index(i).Child("allocatedResourcesStatus").Index(j).Child("resources").Index(k).Child("resourceID"), r.ResourceID, "must be unique"))
|
||||
allErrors = append(allErrors, field.Duplicate(fldPath.Index(i).Child("allocatedResourcesStatus").Index(j).Child("resources").Index(k).Child("resourceID"), r.ResourceID))
|
||||
} else {
|
||||
uniqueResources.Insert(r.ResourceID)
|
||||
}
|
||||
|
||||
@@ -24457,11 +24457,11 @@ func TestValidateContainerStatusNoAllocatedResourcesStatus(t *testing.T) {
|
||||
|
||||
errs := validateContainerStatusNoAllocatedResourcesStatus(containerStatuses, fldPath)
|
||||
|
||||
assert.Equal(t, 2, len(errs))
|
||||
assert.Len(t, errs, 2)
|
||||
assert.Equal(t, "spec.containers[1].allocatedResourcesStatus", errs[0].Field)
|
||||
assert.Equal(t, "cannot be set for a container status", errs[0].Detail)
|
||||
assert.Equal(t, "must not be specified in container status", errs[0].Detail)
|
||||
assert.Equal(t, "spec.containers[2].allocatedResourcesStatus", errs[1].Field)
|
||||
assert.Equal(t, "cannot be set for a container status", errs[1].Detail)
|
||||
assert.Equal(t, "must not be specified in container status", errs[1].Detail)
|
||||
}
|
||||
|
||||
func TestValidateContainerStatusAllocatedResourcesStatus(t *testing.T) {
|
||||
@@ -24580,7 +24580,7 @@ func TestValidateContainerStatusAllocatedResourcesStatus(t *testing.T) {
|
||||
},
|
||||
},
|
||||
wantFieldErrors: field.ErrorList{
|
||||
field.Invalid(fldPath.Index(0).Child("allocatedResourcesStatus").Index(0).Child("resources").Index(1).Child("resourceID"), core.ResourceID("resource-1"), "must be unique"),
|
||||
field.Duplicate(fldPath.Index(0).Child("allocatedResourcesStatus").Index(0).Child("resources").Index(1).Child("resourceID"), core.ResourceID("resource-1")),
|
||||
},
|
||||
},
|
||||
|
||||
@@ -24619,6 +24619,38 @@ func TestValidateContainerStatusAllocatedResourcesStatus(t *testing.T) {
|
||||
field.Invalid(fldPath.Index(0).Child("allocatedResourcesStatus").Index(1).Child("name"), core.ResourceName("test.device/test2"), "must match one of the container's resource requirements"),
|
||||
},
|
||||
},
|
||||
|
||||
"don't allow health status outside the known values": {
|
||||
containers: []core.Container{
|
||||
{
|
||||
Name: "container-1",
|
||||
Resources: core.ResourceRequirements{
|
||||
Requests: core.ResourceList{
|
||||
"test.device/test": resource.MustParse("1"),
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
containerStatuses: []core.ContainerStatus{
|
||||
{
|
||||
Name: "container-1",
|
||||
AllocatedResourcesStatus: []core.ResourceStatus{
|
||||
{
|
||||
Name: "test.device/test",
|
||||
Resources: []core.ResourceHealth{
|
||||
{
|
||||
ResourceID: "resource-1",
|
||||
Health: "invalid-health-value",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
wantFieldErrors: field.ErrorList{
|
||||
field.NotSupported(fldPath.Index(0).Child("allocatedResourcesStatus").Index(0).Child("resources").Index(0).Child("health"), core.ResourceHealthStatus("invalid-health-value"), []string{"Healthy", "Unhealthy", "Unknown"}),
|
||||
},
|
||||
},
|
||||
}
|
||||
for name, tt := range testCases {
|
||||
t.Run(name, func(t *testing.T) {
|
||||
|
||||
Reference in New Issue
Block a user