mirror of
https://github.com/optim-enterprises-bv/kubernetes.git
synced 2025-11-02 03:08:15 +00:00
api: add resource claims to core API
The resource.k8s.io/ClaimTemplate only gets referenced by name, therefore the changes to the core API are limited.
This commit is contained in:
@@ -784,6 +784,165 @@ func TestDropAppArmor(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestDropDynamicResourceAllocation(t *testing.T) {
|
||||
resourceClaimName := "external-claim"
|
||||
|
||||
podWithClaims := &api.Pod{
|
||||
Spec: api.PodSpec{
|
||||
Containers: []api.Container{
|
||||
{
|
||||
Resources: api.ResourceRequirements{
|
||||
Claims: []api.ResourceClaim{{Name: "my-claim"}},
|
||||
},
|
||||
},
|
||||
},
|
||||
InitContainers: []api.Container{
|
||||
{
|
||||
Resources: api.ResourceRequirements{
|
||||
Claims: []api.ResourceClaim{{Name: "my-claim"}},
|
||||
},
|
||||
},
|
||||
},
|
||||
EphemeralContainers: []api.EphemeralContainer{
|
||||
{
|
||||
EphemeralContainerCommon: api.EphemeralContainerCommon{
|
||||
Resources: api.ResourceRequirements{
|
||||
Claims: []api.ResourceClaim{{Name: "my-claim"}},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
ResourceClaims: []api.PodResourceClaim{
|
||||
{
|
||||
Name: "my-claim",
|
||||
Source: api.ClaimSource{
|
||||
ResourceClaimName: &resourceClaimName,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
podWithoutClaims := &api.Pod{
|
||||
Spec: api.PodSpec{
|
||||
Containers: []api.Container{{}},
|
||||
InitContainers: []api.Container{{}},
|
||||
EphemeralContainers: []api.EphemeralContainer{{}},
|
||||
},
|
||||
}
|
||||
|
||||
var noPod *api.Pod
|
||||
|
||||
testcases := []struct {
|
||||
description string
|
||||
enabled bool
|
||||
oldPod *api.Pod
|
||||
newPod *api.Pod
|
||||
wantPod *api.Pod
|
||||
}{
|
||||
{
|
||||
description: "old with claims / new with claims / disabled",
|
||||
oldPod: podWithClaims,
|
||||
newPod: podWithClaims,
|
||||
wantPod: podWithClaims,
|
||||
},
|
||||
{
|
||||
description: "old without claims / new with claims / disabled",
|
||||
oldPod: podWithoutClaims,
|
||||
newPod: podWithClaims,
|
||||
wantPod: podWithoutClaims,
|
||||
},
|
||||
{
|
||||
description: "no old pod/ new with claims / disabled",
|
||||
oldPod: noPod,
|
||||
newPod: podWithClaims,
|
||||
wantPod: podWithoutClaims,
|
||||
},
|
||||
|
||||
{
|
||||
description: "old with claims / new without claims / disabled",
|
||||
oldPod: podWithClaims,
|
||||
newPod: podWithoutClaims,
|
||||
wantPod: podWithoutClaims,
|
||||
},
|
||||
{
|
||||
description: "old without claims / new without claims / disabled",
|
||||
oldPod: podWithoutClaims,
|
||||
newPod: podWithoutClaims,
|
||||
wantPod: podWithoutClaims,
|
||||
},
|
||||
{
|
||||
description: "no old pod/ new without claims / disabled",
|
||||
oldPod: noPod,
|
||||
newPod: podWithoutClaims,
|
||||
wantPod: podWithoutClaims,
|
||||
},
|
||||
|
||||
{
|
||||
description: "old with claims / new with claims / enabled",
|
||||
enabled: true,
|
||||
oldPod: podWithClaims,
|
||||
newPod: podWithClaims,
|
||||
wantPod: podWithClaims,
|
||||
},
|
||||
{
|
||||
description: "old without claims / new with claims / enabled",
|
||||
enabled: true,
|
||||
oldPod: podWithoutClaims,
|
||||
newPod: podWithClaims,
|
||||
wantPod: podWithClaims,
|
||||
},
|
||||
{
|
||||
description: "no old pod/ new with claims / enabled",
|
||||
enabled: true,
|
||||
oldPod: noPod,
|
||||
newPod: podWithClaims,
|
||||
wantPod: podWithClaims,
|
||||
},
|
||||
|
||||
{
|
||||
description: "old with claims / new without claims / enabled",
|
||||
enabled: true,
|
||||
oldPod: podWithClaims,
|
||||
newPod: podWithoutClaims,
|
||||
wantPod: podWithoutClaims,
|
||||
},
|
||||
{
|
||||
description: "old without claims / new without claims / enabled",
|
||||
enabled: true,
|
||||
oldPod: podWithoutClaims,
|
||||
newPod: podWithoutClaims,
|
||||
wantPod: podWithoutClaims,
|
||||
},
|
||||
{
|
||||
description: "no old pod/ new without claims / enabled",
|
||||
enabled: true,
|
||||
oldPod: noPod,
|
||||
newPod: podWithoutClaims,
|
||||
wantPod: podWithoutClaims,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range testcases {
|
||||
t.Run(tc.description, func(t *testing.T) {
|
||||
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.DynamicResourceAllocation, tc.enabled)()
|
||||
|
||||
oldPod := tc.oldPod.DeepCopy()
|
||||
newPod := tc.newPod.DeepCopy()
|
||||
wantPod := tc.wantPod
|
||||
DropDisabledPodFields(newPod, oldPod)
|
||||
|
||||
// old pod should never be changed
|
||||
if diff := cmp.Diff(oldPod, tc.oldPod); diff != "" {
|
||||
t.Errorf("old pod changed: %s", diff)
|
||||
}
|
||||
|
||||
if diff := cmp.Diff(wantPod, newPod); diff != "" {
|
||||
t.Errorf("new pod changed (- want, + got): %s", diff)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestDropProbeGracePeriod(t *testing.T) {
|
||||
podWithProbeGracePeriod := func() *api.Pod {
|
||||
livenessGracePeriod := int64(10)
|
||||
|
||||
Reference in New Issue
Block a user