Skip to content
Closed
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
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion features.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,6 @@
| GCPDualStackInstall| | | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | | | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> |
| GatewayAPIWithoutOLM| | | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | | | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> |
| HyperShiftOnlyDynamicResourceAllocation| <span style="background-color: #519450">Enabled</span> | | <span style="background-color: #519450">Enabled</span> | | <span style="background-color: #519450">Enabled</span> | | <span style="background-color: #519450">Enabled</span> | |
| ImageModeStatusReporting| | | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | | | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> |
| IngressControllerDynamicConfigurationManager| | | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | | | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> |
| IrreconcilableMachineConfig| | | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | | | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> |
| KMSEncryption| | | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | | | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> |
Expand Down Expand Up @@ -101,6 +100,7 @@
| ExternalOIDC| <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> |
| ExternalOIDCWithUIDAndExtraClaimMappings| <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> |
| GCPClusterHostedDNSInstall| <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> |
| ImageModeStatusReporting| <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> |
| ImageStreamImportMode| <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> |
| InsightsConfig| <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> |
| InsightsOnDemandDataGather| <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> | <span style="background-color: #519450">Enabled</span> |
Expand Down
2 changes: 1 addition & 1 deletion features/features.go
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,7 @@ var (
contactPerson("ijanssen").
productScope(ocpSpecific).
enhancementPR("https://github.com/openshift/enhancements/pull/1809").
enable(inTechPreviewNoUpgrade(), inDevPreviewNoUpgrade()).
enable(inDefault(), inOKD(), inTechPreviewNoUpgrade(), inDevPreviewNoUpgrade()).
mustRegister()

FeatureGateClusterAPIInstall = newFeatureGate("ClusterAPIInstall").
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -173,9 +173,6 @@
{
"name": "GatewayAPIWithoutOLM"
},
{
"name": "ImageModeStatusReporting"
},
{
"name": "IngressControllerDynamicConfigurationManager"
},
Expand Down Expand Up @@ -319,6 +316,9 @@
{
"name": "HyperShiftOnlyDynamicResourceAllocation"
},
{
"name": "ImageModeStatusReporting"
},
{
"name": "ImageStreamImportMode"
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -175,9 +175,6 @@
{
"name": "GatewayAPIWithoutOLM"
},
{
"name": "ImageModeStatusReporting"
},
{
"name": "IngressControllerDynamicConfigurationManager"
},
Expand Down Expand Up @@ -321,6 +318,9 @@
{
"name": "HyperShiftOnlyDynamicResourceAllocation"
},
{
"name": "ImageModeStatusReporting"
},
{
"name": "ImageStreamImportMode"
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -173,9 +173,6 @@
{
"name": "HyperShiftOnlyDynamicResourceAllocation"
},
{
"name": "ImageModeStatusReporting"
},
{
"name": "IngressControllerDynamicConfigurationManager"
},
Expand Down Expand Up @@ -313,6 +310,9 @@
{
"name": "GCPClusterHostedDNSInstall"
},
{
"name": "ImageModeStatusReporting"
},
{
"name": "ImageStreamImportMode"
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -175,9 +175,6 @@
{
"name": "HyperShiftOnlyDynamicResourceAllocation"
},
{
"name": "ImageModeStatusReporting"
},
{
"name": "IngressControllerDynamicConfigurationManager"
},
Expand Down Expand Up @@ -315,6 +312,9 @@
{
"name": "GCPClusterHostedDNSInstall"
},
{
"name": "ImageModeStatusReporting"
},
{
"name": "ImageStreamImportMode"
},
Expand Down
4 changes: 2 additions & 2 deletions tools/codegen/cmd/featuregate-test-analyzer.go
Original file line number Diff line number Diff line change
Expand Up @@ -618,7 +618,7 @@ type JobVariant struct {
Topology string
NetworkStack string
OS string
JobTiers string // Comma-separated tiers (e.g., "standard,informing,blocking"). If empty, defaults to "standard,informing,blocking"
JobTiers string // Comma-separated tiers (e.g., "standard,informing,blocking"). If empty, defaults to "standard,informing,blocking,candidate"
Optional bool // If true, validation failures for this variant are non-blocking warnings
}

Expand Down Expand Up @@ -680,7 +680,7 @@ func testResultByName(results []TestResults, testName string) *TestResults {

func validateJobTiers(jobVariant JobVariant) error {
if jobVariant.JobTiers == "" {
return nil // Empty is valid - will default to standard,informing,blocking
return nil // Empty is valid - will default to standard,informing,blocking,candidate
}

validTiers := map[string]bool{
Expand Down
41 changes: 41 additions & 0 deletions tools/codegen/cmd/featuregate-test-analyzer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ import (
"testing"

"k8s.io/apimachinery/pkg/util/sets"

"github.com/openshift/api/tools/codegen/pkg/sippy"
)

func Test_listTestResultFor(t *testing.T) {
Expand Down Expand Up @@ -475,3 +477,42 @@ func Test_checkIfTestingIsSufficient_OptionalVariants(t *testing.T) {
})
}
}

func Test_defaultQueriesIncludeCandidateTier(t *testing.T) {
// When JobTiers is empty, QueriesFor should generate queries for all tiers
// including candidate. This test is added to prevent regressions for candidate-tier
// jobs being excluded, like we had for MCO TP jobs.
queries := sippy.QueriesFor("vsphere", "amd64", "ha", "", "", "", "FeatureGate:TestGate]")

tierNames := sets.New[string]()
for _, q := range queries {
tierNames.Insert(q.TierName)
}

expectedTiers := []string{"standard", "informing", "blocking", "candidate"}
for _, tier := range expectedTiers {
if !tierNames.Has(tier) {
t.Errorf("default queries missing tier %q - got tiers: %v", tier, sets.List(tierNames))
}
}
}

func Test_allRequiredVariantsQueryCandidateTier(t *testing.T) {
// Verify that all required variant definitions will query for the candidate
// tier, either explicitly via JobTiers or via the default.
allVariants := append(append([]JobVariant{}, requiredSelfManagedJobVariants...), requiredHypershiftJobVariants...)

for _, variant := range allVariants {
queries := sippy.QueriesFor(variant.Cloud, variant.Architecture, variant.Topology, variant.NetworkStack, variant.OS, variant.JobTiers, "FeatureGate:Test]")
hasCandidateQuery := false
for _, q := range queries {
if q.TierName == "candidate" {
hasCandidateQuery = true
break
}
}
if !hasCandidateQuery {
t.Errorf("variant %+v does not query candidate tier - some platforms only run TechPreview tests in candidate-tier jobs", variant)
}
}
}
6 changes: 3 additions & 3 deletions tools/codegen/pkg/sippy/json_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -101,10 +101,10 @@ func QueriesFor(cloud, architecture, topology, networkStack, os, jobTiers, testP
})
}

// Parse JobTiers - comma-separated string, default to standard/informing/blocking if empty
// Parse JobTiers - comma-separated string, default to standard/informing/blocking/candidate if empty
var jobTiersList []string
if jobTiers == "" {
jobTiersList = []string{"standard", "informing", "blocking"}
jobTiersList = []string{"standard", "informing", "blocking", "candidate"}
} else {
// Split by comma, trim whitespace, and deduplicate using sets
tierSet := sets.New[string]()
Expand All @@ -115,7 +115,7 @@ func QueriesFor(cloud, architecture, topology, networkStack, os, jobTiers, testP
}
// If all tiers were whitespace/empty after trimming, use defaults
if tierSet.Len() == 0 {
jobTiersList = []string{"standard", "informing", "blocking"}
jobTiersList = []string{"standard", "informing", "blocking", "candidate"}
} else {
jobTiersList = sets.List(tierSet)
}
Expand Down