Skip to content

Commit 2fdc7e1

Browse files
author
jennybuckley
committed
add test to verify fix
1 parent f9e5774 commit 2fdc7e1

File tree

2 files changed

+105
-0
lines changed

2 files changed

+105
-0
lines changed

test/integration/apiserver/apply/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ go_test(
1515
"//pkg/master:go_default_library",
1616
"//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library",
1717
"//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library",
18+
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
1819
"//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
1920
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
2021
"//staging/src/k8s.io/apiserver/pkg/features:go_default_library",

test/integration/apiserver/apply/apply_test.go

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424

2525
"k8s.io/apimachinery/pkg/api/errors"
2626
"k8s.io/apimachinery/pkg/api/meta"
27+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2728
"k8s.io/apimachinery/pkg/runtime/schema"
2829
"k8s.io/apimachinery/pkg/types"
2930
genericfeatures "k8s.io/apiserver/pkg/features"
@@ -438,3 +439,106 @@ func TestApplyRequiresFieldManager(t *testing.T) {
438439
t.Fatalf("Apply failed to create with fieldManager: %v", err)
439440
}
440441
}
442+
443+
// TestApplyRemoveContainerPort removes a container port from a deployment
444+
func TestApplyRemoveContainerPort(t *testing.T) {
445+
defer utilfeaturetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, genericfeatures.ServerSideApply, true)()
446+
447+
_, client, closeFn := setup(t)
448+
defer closeFn()
449+
450+
obj := []byte(`{
451+
"apiVersion": "extensions/v1beta1",
452+
"kind": "Deployment",
453+
"metadata": {
454+
"name": "deployment",
455+
"labels": {"app": "nginx"}
456+
},
457+
"spec": {
458+
"replicas": 3,
459+
"selector": {
460+
"matchLabels": {
461+
"app": "nginx"
462+
}
463+
},
464+
"template": {
465+
"metadata": {
466+
"labels": {
467+
"app": "nginx"
468+
}
469+
},
470+
"spec": {
471+
"containers": [{
472+
"name": "nginx",
473+
"image": "nginx:latest",
474+
"ports": [{
475+
"containerPort": 80,
476+
"protocol": "TCP"
477+
}]
478+
}]
479+
}
480+
}
481+
}
482+
}`)
483+
484+
_, err := client.CoreV1().RESTClient().Patch(types.ApplyPatchType).
485+
AbsPath("/apis/extensions/v1beta1").
486+
Namespace("default").
487+
Resource("deployments").
488+
Name("deployment").
489+
Param("fieldManager", "apply_test").
490+
Body(obj).Do().Get()
491+
if err != nil {
492+
t.Fatalf("Failed to create object using Apply patch: %v", err)
493+
}
494+
495+
obj = []byte(`{
496+
"apiVersion": "apps/v1",
497+
"kind": "Deployment",
498+
"metadata": {
499+
"name": "deployment",
500+
"labels": {"app": "nginx"}
501+
},
502+
"spec": {
503+
"replicas": 3,
504+
"selector": {
505+
"matchLabels": {
506+
"app": "nginx"
507+
}
508+
},
509+
"template": {
510+
"metadata": {
511+
"labels": {
512+
"app": "nginx"
513+
}
514+
},
515+
"spec": {
516+
"containers": [{
517+
"name": "nginx",
518+
"image": "nginx:latest"
519+
}]
520+
}
521+
}
522+
}
523+
}`)
524+
525+
_, err = client.CoreV1().RESTClient().Patch(types.ApplyPatchType).
526+
AbsPath("/apis/apps/v1").
527+
Namespace("default").
528+
Resource("deployments").
529+
Name("deployment").
530+
Param("fieldManager", "apply_test").
531+
Body(obj).Do().Get()
532+
if err != nil {
533+
t.Fatalf("Failed to remove container port using Apply patch: %v", err)
534+
}
535+
536+
deployment, err := client.AppsV1().Deployments("default").Get("deployment", metav1.GetOptions{})
537+
if err != nil {
538+
t.Fatalf("Failed to retrieve object: %v", err)
539+
}
540+
541+
if len(deployment.Spec.Template.Spec.Containers[0].Ports) > 0 {
542+
t.Fatalf("Expected no container ports but got: %v", deployment.Spec.Template.Spec.Containers[0].Ports)
543+
}
544+
}

0 commit comments

Comments
 (0)