Skip to content

Commit 9cd906e

Browse files
authored
Merge pull request kubernetes#91996 from cmluciano/cml/promotedingv1crud
ingress: promote CRUD API tests for v1 to conformance
2 parents 8815a1d + ca2b5b7 commit 9cd906e

File tree

3 files changed

+84
-48
lines changed

3 files changed

+84
-48
lines changed

test/conformance/testdata/conformance.yaml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1561,6 +1561,27 @@
15611561
DNS configuration MUST be configured in the Pod.
15621562
release: v1.17
15631563
file: test/e2e/network/dns.go
1564+
- testname: Ingress API
1565+
codename: '[sig-network] Ingress API should support creating Ingress API operations
1566+
[Conformance]'
1567+
description: ' The networking.k8s.io API group MUST exist in the /apis discovery
1568+
document. The networking.k8s.io/v1 API group/version MUST exist in the /apis/networking.k8s.io
1569+
discovery document. The ingresses resources MUST exist in the /apis/networking.k8s.io/v1
1570+
discovery document. The ingresses resource must support create, get, list, watch,
1571+
update, patch, delete, and deletecollection. The ingresses/status resource must
1572+
support update and patch'
1573+
release: v1.19
1574+
file: test/e2e/network/ingress.go
1575+
- testname: IngressClass API
1576+
codename: '[sig-network] IngressClass API should support creating IngressClass
1577+
API operations [Conformance]'
1578+
description: ' - The networking.k8s.io API group MUST exist in the /apis discovery
1579+
document. - The networking.k8s.io/v1 API group/version MUST exist in the /apis/networking.k8s.io
1580+
discovery document. - The ingressclasses resource MUST exist in the /apis/networking.k8s.io/v1
1581+
discovery document. - The ingressclass resource must support create, get, list,
1582+
watch, update, patch, delete, and deletecollection.'
1583+
release: v1.19
1584+
file: test/e2e/network/ingressclass.go
15641585
- testname: Networking, intra pod http
15651586
codename: '[sig-network] Networking Granular Checks: Pods should function for intra-pod
15661587
communication: http [NodeConformance] [Conformance]'

test/e2e/network/ingress.go

Lines changed: 36 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,13 @@ import (
2828
compute "google.golang.org/api/compute/v1"
2929

3030
v1 "k8s.io/api/core/v1"
31+
networkingv1 "k8s.io/api/networking/v1"
3132
networkingv1beta1 "k8s.io/api/networking/v1beta1"
3233
rbacv1 "k8s.io/api/rbac/v1"
3334
apierrors "k8s.io/apimachinery/pkg/api/errors"
3435
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3536
"k8s.io/apimachinery/pkg/runtime/schema"
3637
types "k8s.io/apimachinery/pkg/types"
37-
"k8s.io/apimachinery/pkg/util/intstr"
3838
"k8s.io/apimachinery/pkg/util/uuid"
3939
"k8s.io/apimachinery/pkg/util/wait"
4040
"k8s.io/apimachinery/pkg/watch"
@@ -947,50 +947,60 @@ var _ = SIGDescribe("Ingress API", func() {
947947
Testname: Ingress API
948948
Description:
949949
The networking.k8s.io API group MUST exist in the /apis discovery document.
950-
The networking.k8s.io/v1beta1 API group/version MUST exist in the /apis/networking.k8s.io discovery document.
951-
The ingresses resources MUST exist in the /apis/networking.k8s.io/v1beta1 discovery document.
950+
The networking.k8s.io/v1 API group/version MUST exist in the /apis/networking.k8s.io discovery document.
951+
The ingresses resources MUST exist in the /apis/networking.k8s.io/v1 discovery document.
952952
The ingresses resource must support create, get, list, watch, update, patch, delete, and deletecollection.
953953
The ingresses/status resource must support update and patch
954-
955954
*/
956955

957-
ginkgo.It("should support creating Ingress API operations", func() {
956+
framework.ConformanceIt("should support creating Ingress API operations", func() {
958957
// Setup
959958
ns := f.Namespace.Name
960-
ingVersion := "v1beta1"
961-
ingClient := f.ClientSet.NetworkingV1beta1().Ingresses(ns)
962-
963-
prefixPathType := networkingv1beta1.PathTypePrefix
959+
ingVersion := "v1"
960+
ingClient := f.ClientSet.NetworkingV1().Ingresses(ns)
961+
962+
prefixPathType := networkingv1.PathTypePrefix
963+
serviceBackend := &networkingv1.IngressServiceBackend{
964+
Name: "default-backend",
965+
Port: networkingv1.ServiceBackendPort{
966+
Name: "",
967+
Number: 8080,
968+
},
969+
}
970+
defaultBackend := networkingv1.IngressBackend{
971+
Service: serviceBackend,
972+
}
964973

965-
ingTemplate := &networkingv1beta1.Ingress{
974+
ingTemplate := &networkingv1.Ingress{
966975
ObjectMeta: metav1.ObjectMeta{GenerateName: "e2e-example-ing",
967976
Labels: map[string]string{
968977
"special-label": f.UniqueName,
969978
}},
970-
Spec: networkingv1beta1.IngressSpec{
971-
Backend: &networkingv1beta1.IngressBackend{
972-
ServiceName: "default-backend",
973-
ServicePort: intstr.FromInt(8080),
974-
},
975-
Rules: []networkingv1beta1.IngressRule{
979+
Spec: networkingv1.IngressSpec{
980+
DefaultBackend: &defaultBackend,
981+
Rules: []networkingv1.IngressRule{
976982
{
977983
Host: "foo.bar.com",
978-
IngressRuleValue: networkingv1beta1.IngressRuleValue{
979-
HTTP: &networkingv1beta1.HTTPIngressRuleValue{
980-
Paths: []networkingv1beta1.HTTPIngressPath{{
984+
IngressRuleValue: networkingv1.IngressRuleValue{
985+
HTTP: &networkingv1.HTTPIngressRuleValue{
986+
Paths: []networkingv1.HTTPIngressPath{{
981987
Path: "/",
982988
PathType: &prefixPathType,
983-
Backend: networkingv1beta1.IngressBackend{
984-
ServiceName: "test-backend",
985-
ServicePort: intstr.FromInt(8080),
989+
Backend: networkingv1.IngressBackend{
990+
Service: &networkingv1.IngressServiceBackend{
991+
Name: "test-backend",
992+
Port: networkingv1.ServiceBackendPort{
993+
Number: 8080,
994+
},
995+
},
986996
},
987997
}},
988998
},
989999
},
9901000
},
9911001
},
9921002
},
993-
Status: networkingv1beta1.IngressStatus{LoadBalancer: v1.LoadBalancerStatus{}},
1003+
Status: networkingv1.IngressStatus{LoadBalancer: v1.LoadBalancerStatus{}},
9941004
}
9951005
// Discovery
9961006
ginkgo.By("getting /apis")
@@ -1028,7 +1038,7 @@ var _ = SIGDescribe("Ingress API", func() {
10281038

10291039
ginkgo.By("getting /apis/networking.k8s.io" + ingVersion)
10301040
{
1031-
resources, err := f.ClientSet.Discovery().ServerResourcesForGroupVersion(networkingv1beta1.SchemeGroupVersion.String())
1041+
resources, err := f.ClientSet.Discovery().ServerResourcesForGroupVersion(networkingv1.SchemeGroupVersion.String())
10321042
framework.ExpectNoError(err)
10331043
foundIngress := false
10341044
for _, resource := range resources.APIResources {
@@ -1065,7 +1075,7 @@ var _ = SIGDescribe("Ingress API", func() {
10651075
framework.ExpectNoError(err)
10661076

10671077
// Test cluster-wide list and watch
1068-
clusterIngClient := f.ClientSet.NetworkingV1beta1().Ingresses("")
1078+
clusterIngClient := f.ClientSet.NetworkingV1().Ingresses("")
10691079
ginkgo.By("cluster-wide listing")
10701080
clusterIngs, err := clusterIngClient.List(context.TODO(), metav1.ListOptions{LabelSelector: "special-label=" + f.UniqueName})
10711081
framework.ExpectNoError(err)
@@ -1094,7 +1104,7 @@ var _ = SIGDescribe("Ingress API", func() {
10941104
case evt, ok := <-ingWatch.ResultChan():
10951105
framework.ExpectEqual(ok, true, "watch channel should not close")
10961106
framework.ExpectEqual(evt.Type, watch.Modified)
1097-
watchedIngress, isIngress := evt.Object.(*networkingv1beta1.Ingress)
1107+
watchedIngress, isIngress := evt.Object.(*networkingv1.Ingress)
10981108
framework.ExpectEqual(isIngress, true, fmt.Sprintf("expected Ingress, got %T", evt.Object))
10991109
if watchedIngress.Annotations["patched"] == "true" {
11001110
framework.Logf("saw patched and updated annotations")

test/e2e/network/ingressclass.go

Lines changed: 27 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,12 @@ import (
2222
"strings"
2323
"time"
2424

25+
networkingv1 "k8s.io/api/networking/v1"
2526
networkingv1beta1 "k8s.io/api/networking/v1beta1"
2627
apierrors "k8s.io/apimachinery/pkg/api/errors"
2728
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2829
types "k8s.io/apimachinery/pkg/types"
29-
"k8s.io/apimachinery/pkg/util/intstr"
30+
3031
"k8s.io/apimachinery/pkg/util/wait"
3132
"k8s.io/apimachinery/pkg/watch"
3233
clientset "k8s.io/client-go/kubernetes"
@@ -83,7 +84,7 @@ var _ = SIGDescribe("IngressClass [Feature:Ingress]", func() {
8384
expectedErr := "2 default IngressClasses were found, only 1 allowed"
8485
var lastErr error
8586
if err := wait.Poll(time.Second, time.Minute, func() (bool, error) {
86-
defer cs.NetworkingV1beta1().Ingresses(f.Namespace.Name).Delete(context.TODO(), "ingress1", metav1.DeleteOptions{})
87+
defer cs.NetworkingV1().Ingresses(f.Namespace.Name).Delete(context.TODO(), "ingress1", metav1.DeleteOptions{})
8788
_, err := createBasicIngress(cs, f.Namespace.Name)
8889
if err == nil {
8990
return false, nil
@@ -97,16 +98,16 @@ var _ = SIGDescribe("IngressClass [Feature:Ingress]", func() {
9798

9899
})
99100

100-
func createIngressClass(cs clientset.Interface, name string, isDefault bool, uniqueName string) (*networkingv1beta1.IngressClass, error) {
101-
ingressClass := &networkingv1beta1.IngressClass{
101+
func createIngressClass(cs clientset.Interface, name string, isDefault bool, uniqueName string) (*networkingv1.IngressClass, error) {
102+
ingressClass := &networkingv1.IngressClass{
102103
ObjectMeta: metav1.ObjectMeta{
103104
Name: name,
104105
Labels: map[string]string{
105106
"ingressclass": uniqueName,
106107
"special-label": "generic",
107108
},
108109
},
109-
Spec: networkingv1beta1.IngressClassSpec{
110+
Spec: networkingv1.IngressClassSpec{
110111
Controller: "example.com/controller",
111112
},
112113
}
@@ -115,25 +116,29 @@ func createIngressClass(cs clientset.Interface, name string, isDefault bool, uni
115116
ingressClass.Annotations = map[string]string{networkingv1beta1.AnnotationIsDefaultIngressClass: "true"}
116117
}
117118

118-
return cs.NetworkingV1beta1().IngressClasses().Create(context.TODO(), ingressClass, metav1.CreateOptions{})
119+
return cs.NetworkingV1().IngressClasses().Create(context.TODO(), ingressClass, metav1.CreateOptions{})
119120
}
120121

121-
func createBasicIngress(cs clientset.Interface, namespace string) (*networkingv1beta1.Ingress, error) {
122-
return cs.NetworkingV1beta1().Ingresses(namespace).Create(context.TODO(), &networkingv1beta1.Ingress{
122+
func createBasicIngress(cs clientset.Interface, namespace string) (*networkingv1.Ingress, error) {
123+
return cs.NetworkingV1().Ingresses(namespace).Create(context.TODO(), &networkingv1.Ingress{
123124
ObjectMeta: metav1.ObjectMeta{
124125
Name: "ingress1",
125126
},
126-
Spec: networkingv1beta1.IngressSpec{
127-
Backend: &networkingv1beta1.IngressBackend{
128-
ServiceName: "default-backend",
129-
ServicePort: intstr.FromInt(80),
127+
Spec: networkingv1.IngressSpec{
128+
DefaultBackend: &networkingv1.IngressBackend{
129+
Service: &networkingv1.IngressServiceBackend{
130+
Name: "defaultbackend",
131+
Port: networkingv1.ServiceBackendPort{
132+
Number: 80,
133+
},
134+
},
130135
},
131136
},
132137
}, metav1.CreateOptions{})
133138
}
134139

135140
func deleteIngressClass(cs clientset.Interface, name string) {
136-
err := cs.NetworkingV1beta1().IngressClasses().Delete(context.TODO(), name, metav1.DeleteOptions{})
141+
err := cs.NetworkingV1().IngressClasses().Delete(context.TODO(), name, metav1.DeleteOptions{})
137142
framework.ExpectNoError(err)
138143
}
139144

@@ -148,15 +153,15 @@ var _ = SIGDescribe("IngressClass API", func() {
148153
Testname: IngressClass API
149154
Description:
150155
- The networking.k8s.io API group MUST exist in the /apis discovery document.
151-
- The networking.k8s.io/v1beta1 API group/version MUST exist in the /apis/networking.k8s.io discovery document.
152-
- The IngressClasses resources MUST exist in the /apis/networking.k8s.io/v1beta1 discovery document.
153-
- The IngressClass resource must support create, get, list, watch, update, patch, delete, and deletecollection.
156+
- The networking.k8s.io/v1 API group/version MUST exist in the /apis/networking.k8s.io discovery document.
157+
- The ingressclasses resource MUST exist in the /apis/networking.k8s.io/v1 discovery document.
158+
- The ingressclass resource must support create, get, list, watch, update, patch, delete, and deletecollection.
154159
*/
155-
ginkgo.It(" should support creating IngressClass API operations", func() {
160+
framework.ConformanceIt(" should support creating IngressClass API operations", func() {
156161

157162
// Setup
158-
icClient := f.ClientSet.NetworkingV1beta1().IngressClasses()
159-
icVersion := "v1beta1"
163+
icClient := f.ClientSet.NetworkingV1().IngressClasses()
164+
icVersion := "v1"
160165

161166
// Discovery
162167
ginkgo.By("getting /apis")
@@ -165,7 +170,7 @@ var _ = SIGDescribe("IngressClass API", func() {
165170
framework.ExpectNoError(err)
166171
found := false
167172
for _, group := range discoveryGroups.Groups {
168-
if group.Name == networkingv1beta1.GroupName {
173+
if group.Name == networkingv1.GroupName {
169174
for _, version := range group.Versions {
170175
if version.Version == icVersion {
171176
found = true
@@ -193,7 +198,7 @@ var _ = SIGDescribe("IngressClass API", func() {
193198

194199
ginkgo.By("getting /apis/networking.k8s.io" + icVersion)
195200
{
196-
resources, err := f.ClientSet.Discovery().ServerResourcesForGroupVersion(networkingv1beta1.SchemeGroupVersion.String())
201+
resources, err := f.ClientSet.Discovery().ServerResourcesForGroupVersion(networkingv1.SchemeGroupVersion.String())
197202
framework.ExpectNoError(err)
198203
foundIC := false
199204
for _, resource := range resources.APIResources {
@@ -248,7 +253,7 @@ var _ = SIGDescribe("IngressClass API", func() {
248253
case evt, ok := <-icWatch.ResultChan():
249254
framework.ExpectEqual(ok, true, "watch channel should not close")
250255
framework.ExpectEqual(evt.Type, watch.Modified)
251-
watchedIngress, isIngress := evt.Object.(*networkingv1beta1.IngressClass)
256+
watchedIngress, isIngress := evt.Object.(*networkingv1.IngressClass)
252257
framework.ExpectEqual(isIngress, true, fmt.Sprintf("expected Ingress, got %T", evt.Object))
253258
if watchedIngress.Annotations["patched"] == "true" {
254259
framework.Logf("saw patched and updated annotations")

0 commit comments

Comments
 (0)