Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
/ingress-operator
/ingress-operator-ext-tests
/pkg/manifests/manifests

tmp/
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
[
{
"name": "[sig-network][OCPFeatureGate:GatewayAPI][Feature:Router][apigroup:gateway.networking.k8s.io] Verify Gateway API CRDs and ensure required CRDs should already be installed using OTE",
"labels": {},
"resources": {
"isolation": {}
},
"source": "openshift:payload:cluster-ingress-operator",
"lifecycle": "blocking",
"environmentSelector": {}
},
{
"name": "[sig-network][OCPFeatureGate:GatewayAPI][Feature:Router][apigroup:gateway.networking.k8s.io] Verify Gateway API CRDs and ensure existing CRDs can not be deleted using OTE",
"labels": {},
"resources": {
"isolation": {}
},
"source": "openshift:payload:cluster-ingress-operator",
"lifecycle": "blocking",
"environmentSelector": {}
},
{
"name": "[sig-network][OCPFeatureGate:GatewayAPI][Feature:Router][apigroup:gateway.networking.k8s.io] Verify Gateway API CRDs and ensure existing CRDs can not be updated using OTE",
"labels": {},
"resources": {
"isolation": {}
},
"source": "openshift:payload:cluster-ingress-operator",
"lifecycle": "blocking",
"environmentSelector": {}
},
{
"name": "[sig-network][OCPFeatureGate:GatewayAPI][Feature:Router][apigroup:gateway.networking.k8s.io] Verify Gateway API CRDs and ensure CRD of standard group can not be created using OTE",
"labels": {},
"resources": {
"isolation": {}
},
"source": "openshift:payload:cluster-ingress-operator",
"lifecycle": "blocking",
"environmentSelector": {}
},
{
"name": "[sig-network][OCPFeatureGate:GatewayAPI][Feature:Router][apigroup:gateway.networking.k8s.io] Verify Gateway API CRDs and ensure CRD of experimental group is not installed using OTE",
"labels": {},
"resources": {
"isolation": {}
},
"source": "openshift:payload:cluster-ingress-operator",
"lifecycle": "blocking",
"environmentSelector": {}
},
{
"name": "[sig-network][OCPFeatureGate:GatewayAPI][Feature:Router][apigroup:gateway.networking.k8s.io] Verify Gateway API CRDs and ensure CRD of experimental group can not be created using OTE",
"labels": {},
"resources": {
"isolation": {}
},
"source": "openshift:payload:cluster-ingress-operator",
"lifecycle": "blocking",
"environmentSelector": {}
},
{
"name": "[sig-network-edge][OCPFeatureGate:GatewayAPIController][Feature:Router][apigroup:gateway.networking.k8s.io] Ensure OSSM and OLM related resources are created after creating GatewayClass using OTE",
"labels": {},
"resources": {
"isolation": {}
},
"source": "openshift:payload:cluster-ingress-operator",
"lifecycle": "blocking",
"environmentSelector": {}
},
{
"name": "[sig-network-edge][OCPFeatureGate:GatewayAPIController][Feature:Router][apigroup:gateway.networking.k8s.io] Ensure default gatewayclass is accepted using OTE",
"labels": {},
"resources": {
"isolation": {}
},
"source": "openshift:payload:cluster-ingress-operator",
"lifecycle": "blocking",
"environmentSelector": {}
},
{
"name": "[sig-network-edge][OCPFeatureGate:GatewayAPIController][Feature:Router][apigroup:gateway.networking.k8s.io] Ensure custom gatewayclass can be accepted using OTE",
"labels": {},
"resources": {
"isolation": {}
},
"source": "openshift:payload:cluster-ingress-operator",
"lifecycle": "blocking",
"environmentSelector": {}
},
{
"name": "[sig-network-edge][OCPFeatureGate:GatewayAPIController][Feature:Router][apigroup:gateway.networking.k8s.io] Ensure LB, service, and dnsRecord are created for a Gateway object using OTE",
"labels": {},
"resources": {
"isolation": {}
},
"source": "openshift:payload:cluster-ingress-operator",
"lifecycle": "blocking",
"environmentSelector": {}
},
{
"name": "[sig-network-edge][OCPFeatureGate:GatewayAPIController][Feature:Router][apigroup:gateway.networking.k8s.io] Ensure HTTPRoute object is created using OTE",
"labels": {},
"resources": {
"isolation": {}
},
"source": "openshift:payload:cluster-ingress-operator",
"lifecycle": "blocking",
"environmentSelector": {}
},
{
"name": "[sig-network-edge][OCPFeatureGate:GatewayAPIController][Feature:Router][apigroup:gateway.networking.k8s.io] Ensure GIE is enabled after creating an inferencePool CRD using OTE",
"labels": {},
"resources": {
"isolation": {}
},
"source": "openshift:payload:cluster-ingress-operator",
"lifecycle": "blocking",
"environmentSelector": {}
}
]
4 changes: 3 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
FROM registry.ci.openshift.org/ocp/builder:rhel-9-golang-1.24-openshift-4.21 AS builder
WORKDIR /ingress-operator
COPY . .
RUN make build
RUN make build tests-ext-build && \
gzip /ingress-operator/ingress-operator-ext-tests

FROM registry.ci.openshift.org/ocp/4.21:base-rhel9
COPY --from=builder /ingress-operator/ingress-operator /usr/bin/
COPY --from=builder /ingress-operator/ingress-operator-ext-tests.gz /usr/bin/
COPY manifests /manifests
ENTRYPOINT ["/usr/bin/ingress-operator"]
LABEL io.openshift.release.operator="true"
Expand Down
14 changes: 14 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,20 @@ endif
build: generate
$(GO_BUILD_RECIPE)

.PHONY: tests-ext-build
tests-ext-build:
# GO_COMPLIANCE_POLICY="exempt_all" must only be used for test related binaries.
# It prevents various FIPS compliance policies from being applied to this compilation.
# Do not set globally.
GO_COMPLIANCE_POLICY="exempt_all" go build ./cmd/ingress-operator-ext-tests/...

.PHONY: tests-ext-update
tests-ext-update: tests-ext-build
./ingress-operator-ext-tests update
for f in .openshift-tests-extension/*.json; do \
jq 'map(del(.codeLocations))' "$$f" > tmpp && mv tmpp "$$f"; \
done

.PHONY: buildconfig
buildconfig:
hack/create-buildconfig.sh
Expand Down
76 changes: 76 additions & 0 deletions cmd/ingress-operator-ext-tests/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
/*
This command is used to run the OLMv1 tests extension for OpenShift.
It registers the OLMv1 tests with the OpenShift Tests Extension framework
and provides a command-line interface to execute them.

For further information, please refer to the documentation at:
https://github.com/openshift-eng/openshift-tests-extension/blob/main/cmd/example-tests/main.go
*/
package main

import (
"fmt"
"os"

"github.com/openshift-eng/openshift-tests-extension/pkg/cmd"
e "github.com/openshift-eng/openshift-tests-extension/pkg/extension"
et "github.com/openshift-eng/openshift-tests-extension/pkg/extension/extensiontests"
g "github.com/openshift-eng/openshift-tests-extension/pkg/ginkgo"
"github.com/spf13/cobra"

"github.com/openshift/cluster-ingress-operator/test/extended/framework"
_ "github.com/openshift/cluster-ingress-operator/test/extended/specs"
)

func main() {
registry := e.NewRegistry()
ext := e.NewExtension("openshift", "payload", "cluster-ingress-operator")

ext.AddSuite(
e.Suite{
Name: "cluster-ingress-operator/parallel",
Parents: []string{"openshift/conformance/parallel"},
Qualifiers: []string{
`!(name.contains("[Serial]") || name.contains("[Slow]"))`,
},
})

ext.AddSuite(
e.Suite{
Name: "cluster-ingress-operator/serial",
Parents: []string{"openshift/conformance/serial"},
Qualifiers: []string{
`(name.contains("[Serial]") || name.contains("[Slow]"))`,
},
})

specs, err := g.BuildExtensionTestSpecsFromOpenShiftGinkgoSuite()
if err != nil {
panic(fmt.Sprintf("couldn't build extension test specs from ginkgo: %+v", err.Error()))
}

// Initialize the environment before running any tests.
specs.AddBeforeAll(func() {
framework.Init()
})

// TODO: Remove this, it is just to verify that openshift-origin is able to fetch OTE tests
specs = specs.Walk(func(spec *et.ExtensionTestSpec) {
spec.Name = spec.Name + " using OTE"
})
Comment on lines +58 to +60
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove, was just added to flag the test and show on openshift/origin execution


ext.AddSpecs(specs)
registry.Register(ext)

root := &cobra.Command{
Long: "Cluster Ingress Operator Tests Extension",
}

root.AddCommand(cmd.DefaultExtensionCommands(registry)...)

if err := func() error {
return root.Execute()
}(); err != nil {
os.Exit(1)
}
}
35 changes: 25 additions & 10 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,18 @@ require (
github.com/IBM/go-sdk-core/v5 v5.17.4
github.com/IBM/networking-go-sdk v0.26.0
github.com/aws/aws-sdk-go v1.38.49
github.com/blang/semver/v4 v4.0.0
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc
github.com/florianl/go-nfqueue v1.3.2
github.com/go-logr/logr v1.4.2
github.com/go-logr/logr v1.4.3
github.com/go-logr/zapr v1.3.0
github.com/google/go-cmp v0.7.0
github.com/google/gopacket v1.1.19
github.com/google/uuid v1.6.0
github.com/istio-ecosystem/sail-operator v0.0.0-20250513111011-30be83268d6b
github.com/onsi/ginkgo/v2 v2.25.1
github.com/onsi/gomega v1.38.2
github.com/openshift-eng/openshift-tests-extension v0.0.0-20250916161632-d81c09058835
github.com/openshift/api v0.0.0-20250710004639-926605d3338b
github.com/openshift/client-go v0.0.0-20250710075018-396b36f983ee
github.com/openshift/library-go v0.0.0-20250812160438-378de074fe7b
Expand All @@ -42,12 +47,14 @@ require (
k8s.io/apimachinery v0.33.4
k8s.io/apiserver v0.33.4
k8s.io/client-go v0.33.4
k8s.io/pod-security-admission v0.33.4
k8s.io/utils v0.0.0-20250502105355-0f33e8f1c979
sigs.k8s.io/controller-runtime v0.21.0
sigs.k8s.io/gateway-api v1.2.1
)

require (
cel.dev/expr v0.23.1 // indirect
cloud.google.com/go/compute/metadata v0.6.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azsecrets v1.3.1 // indirect
Expand All @@ -61,7 +68,6 @@ require (
github.com/antlr4-go/antlr/v4 v4.13.1 // indirect
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/blang/semver/v4 v4.0.0 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42 // indirect
github.com/emicklei/go-restful/v3 v3.12.2 // indirect
Expand All @@ -79,15 +85,17 @@ require (
github.com/go-playground/locales v0.14.1 // indirect
github.com/go-playground/universal-translator v0.18.1 // indirect
github.com/go-playground/validator/v10 v10.19.0 // indirect
github.com/go-task/slim-sprig/v3 v3.0.0 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang-jwt/jwt/v4 v4.5.2 // indirect
github.com/golang-jwt/jwt/v5 v5.2.1 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/golang/protobuf v1.5.4 // indirect
github.com/google/btree v1.1.3 // indirect
github.com/google/cel-go v0.25.0 // indirect
github.com/google/gnostic-models v0.6.9 // indirect
github.com/google/pprof v0.0.0-20250501235452-c0086092b71a // indirect
github.com/google/s2a-go v0.1.4 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect
github.com/googleapis/gax-go/v2 v2.10.0 // indirect
github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 // indirect
Expand Down Expand Up @@ -120,24 +128,28 @@ require (
github.com/robfig/cron v1.2.0 // indirect
github.com/sirupsen/logrus v1.9.3 // indirect
github.com/spf13/pflag v1.0.6 // indirect
github.com/stoewer/go-strcase v1.3.0 // indirect
github.com/x448/float16 v0.8.4 // indirect
go.mongodb.org/mongo-driver v1.14.0 // indirect
go.opencensus.io v0.24.0 // indirect
go.opentelemetry.io/otel v1.35.0 // indirect
go.opentelemetry.io/otel/trace v1.35.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
golang.org/x/crypto v0.38.0 // indirect
go.yaml.in/yaml/v3 v3.0.4 // indirect
golang.org/x/crypto v0.41.0 // indirect
golang.org/x/exp v0.0.0-20250506013437-ce4c2cf36ca6 // indirect
golang.org/x/net v0.40.0 // indirect
golang.org/x/net v0.43.0 // indirect
golang.org/x/oauth2 v0.30.0 // indirect
golang.org/x/sync v0.14.0 // indirect
golang.org/x/sys v0.33.0 // indirect
golang.org/x/term v0.32.0 // indirect
golang.org/x/text v0.25.0 // indirect
golang.org/x/sync v0.16.0 // indirect
golang.org/x/sys v0.35.0 // indirect
golang.org/x/term v0.34.0 // indirect
golang.org/x/text v0.28.0 // indirect
golang.org/x/tools v0.36.0 // indirect
gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect
google.golang.org/appengine v1.6.8 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20250505200425-f936aa4a68b2 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20250505200425-f936aa4a68b2 // indirect
google.golang.org/protobuf v1.36.6 // indirect
google.golang.org/protobuf v1.36.7 // indirect
gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
Expand All @@ -155,3 +167,6 @@ require (
// This replace stanza is necessary to import
// github.com/istio-ecosystem/sail-operator.
replace github.com/imdario/mergo => github.com/imdario/mergo v0.3.5

// Required replacement for OTE
replace github.com/onsi/ginkgo/v2 => github.com/openshift/onsi-ginkgo/v2 v2.6.1-0.20241205171354-8006f302fd12
Loading