Skip to content

Commit eaa5bec

Browse files
committed
OCPBUGS-55317: Skip GatewayAPIController tests on clusters without OLM capabilities
This ensures GatewayAPIController tests are only run on clusters where OLM and related capabilities are available.
1 parent 21ad7e1 commit eaa5bec

File tree

1 file changed

+39
-1
lines changed

1 file changed

+39
-1
lines changed

test/extended/router/gatewayapicontroller.go

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,13 @@ import (
2626
gatewayapiclientset "sigs.k8s.io/gateway-api/pkg/client/clientset/versioned"
2727
)
2828

29+
var (
30+
requiredCapabilities = []configv1.ClusterVersionCapability{
31+
configv1.ClusterVersionCapabilityMarketplace,
32+
configv1.ClusterVersionCapabilityOperatorLifecycleManager,
33+
}
34+
)
35+
2936
var _ = g.Describe("[sig-network-edge][OCPFeatureGate:GatewayAPIController][Feature:Router][apigroup:gateway.networking.k8s.io]", g.Ordered, g.Serial, func() {
3037
defer g.GinkgoRecover()
3138
var (
@@ -73,14 +80,24 @@ var _ = g.Describe("[sig-network-edge][OCPFeatureGate:GatewayAPIController][Feat
7380
g.Skip(fmt.Sprintf("Skipping on non cloud platform type %q", platformType))
7481
}
7582

83+
capsEnabled, err := requiredCapabilitiesEnabled(oc)
84+
if err != nil {
85+
e2e.Failf("Failed to check required cluster capabilities: %v", err)
86+
}
87+
if !capsEnabled {
88+
// GatewayAPIController relies on OSSM OLM operator.
89+
// Skipping on cluster which doesn't have required capabilities
90+
// to install an OLM operator.
91+
g.Skip(fmt.Sprintf("Skipping on cluster without all required capabilities: %v", requiredCapabilities))
92+
}
93+
7694
gwapiClient := gatewayapiclientset.NewForConfigOrDie(oc.AdminConfig())
7795
// create the default gatewayClass
7896
gatewayClass := buildGatewayClass(gatewayClassName, gatewayClassControllerName)
7997
_, err = gwapiClient.GatewayV1().GatewayClasses().Create(context.TODO(), gatewayClass, metav1.CreateOptions{})
8098
if err != nil && !apierrors.IsAlreadyExists(err) {
8199
e2e.Failf("Failed to create GatewayClass %q", gatewayClassName)
82100
}
83-
84101
})
85102

86103
g.AfterAll(func() {
@@ -559,3 +576,24 @@ func isOKD(oc *exutil.CLI) (bool, error) {
559576
}
560577
return false, nil
561578
}
579+
580+
// requiredCapabilitiesEnabled verifies if all the necessary capabilities
581+
// for running GatewayAPIController are enabled on the cluster.
582+
func requiredCapabilitiesEnabled(oc *exutil.CLI) (bool, error) {
583+
cv, err := exutil.GetClusterVersion(context.TODO(), oc.AdminConfig())
584+
if err != nil {
585+
return false, err
586+
}
587+
588+
capFound := 0
589+
for _, rc := range requiredCapabilities {
590+
for _, ec := range cv.Status.Capabilities.EnabledCapabilities {
591+
if rc == ec {
592+
capFound++
593+
break
594+
}
595+
}
596+
}
597+
598+
return len(requiredCapabilities) == capFound, nil
599+
}

0 commit comments

Comments
 (0)