test/compatibility_lifecycle: resolve feature names from variables

Signed-off-by: Siyuan Zhang <sizhang@google.com>
This commit is contained in:
Siyuan Zhang 2026-04-24 14:50:50 -05:00
parent 8629b87211
commit a8efd27b3b
3 changed files with 47 additions and 18 deletions

View file

@ -57,7 +57,10 @@ type featureSpec struct {
}
type featureInfo struct {
Name string `yaml:"name" json:"name"`
Name string `yaml:"name" json:"name"`
// FullName is the full name of the feature, including the package name,
// used for ensuring that features are grouped by their package prefix first,
// and then sorted alphabetically within that group.
FullName string `yaml:"-" json:"-"`
VersionedSpecs []featureSpec `yaml:"versionedSpecs" json:"versionedSpecs"`
}
@ -423,9 +426,20 @@ func isFeatureSpecType(v ast.Expr, aliasMap map[string]string) bool {
}
func parseFeatureInfo(variables map[string]ast.Expr, kv *ast.KeyValueExpr) (featureInfo, error) {
name := identifierName(kv.Key, true)
fullName := identifierName(kv.Key, false)
if id, ok := kv.Key.(*ast.Ident); ok {
if varVal, ok := variables[id.Name]; ok {
if strVal, err := basicStringLiteral(varVal); err == nil {
name = strVal
}
}
}
info := featureInfo{
Name: identifierName(kv.Key, true),
FullName: identifierName(kv.Key, false),
Name: name,
FullName: fullName,
VersionedSpecs: []featureSpec{},
}
specExps := []ast.Expr{}

View file

@ -108,7 +108,7 @@ func TestVerifyOrUpdateFeatureListVersioned(t *testing.T) {
lockToDefault: false
preRelease: Beta
version: "1.30"
- name: CPUCFSQuotaPeriod
- name: CustomCPUCFSQuotaPeriod
versionedSpecs:
- default: false
lockToDefault: false
@ -136,6 +136,9 @@ import (
"k8s.io/apimachinery/pkg/util/version"
"k8s.io/component-base/featuregate"
)
const CPUCFSQuotaPeriod featuregate.Feature = "CustomCPUCFSQuotaPeriod"
var defaultVersionedKubernetesFeatureGates = map[featuregate.Feature]featuregate.VersionedSpecs{
AppArmorFields: {
{Version: version.MajorMinor(1, 30), Default: true, PreRelease: featuregate.Beta},
@ -166,6 +169,9 @@ import (
"k8s.io/apimachinery/pkg/util/version"
"k8s.io/component-base/featuregate"
)
const CPUCFSQuotaPeriod featuregate.Feature = "CustomCPUCFSQuotaPeriod"
var defaultVersionedKubernetesFeatureGates = map[featuregate.Feature]featuregate.VersionedSpecs{
AppArmorFields: {
{Version: version.MajorMinor(1, 30), Default: true, PreRelease: featuregate.Beta},
@ -196,7 +202,7 @@ var otherFeatureGates = map[featuregate.Feature]featuregate.VersionedSpecs{
lockToDefault: false
preRelease: Beta
version: "1.30"
- name: CPUCFSQuotaPeriod
- name: CustomCPUCFSQuotaPeriod
versionedSpecs:
- default: false
lockToDefault: false
@ -276,6 +282,9 @@ import (
"k8s.io/apimachinery/pkg/util/version"
"k8s.io/component-base/featuregate"
)
const CPUCFSQuotaPeriod featuregate.Feature = "CustomCPUCFSQuotaPeriod"
var defaultVersionedKubernetesFeatureGates = map[featuregate.Feature]featuregate.VersionedSpecs{
AppArmorFields: {
{Version: version.MajorMinor(1, 30), Default: true, PreRelease: featuregate.Beta},
@ -312,7 +321,7 @@ var defaultVersionedKubernetesFeatureGates = map[featuregate.Feature]featuregate
lockToDefault: false
preRelease: Beta
version: "1.30"
- name: CPUCFSQuotaPeriod
- name: CustomCPUCFSQuotaPeriod
versionedSpecs:
- default: false
lockToDefault: false
@ -333,6 +342,9 @@ import (
"k8s.io/apimachinery/pkg/util/version"
"k8s.io/component-base/featuregate"
)
const CPUCFSQuotaPeriod featuregate.Feature = "CustomCPUCFSQuotaPeriod"
var defaultVersionedKubernetesFeatureGates = map[featuregate.Feature]featuregate.VersionedSpecs{
CPUCFSQuotaPeriod: {
{Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Alpha},
@ -373,6 +385,9 @@ import (
"k8s.io/apimachinery/pkg/util/version"
"k8s.io/component-base/featuregate"
)
const CPUCFSQuotaPeriod featuregate.Feature = "CustomCPUCFSQuotaPeriod"
var defaultVersionedKubernetesFeatureGates = map[featuregate.Feature]featuregate.VersionedSpecs{
AppArmorFields: {
{Version: version.MajorMinor(1, 30), Default: true, PreRelease: featuregate.Beta},
@ -401,7 +416,7 @@ var defaultVersionedKubernetesFeatureGates = map[featuregate.Feature]featuregate
lockToDefault: false
preRelease: Beta
version: "1.30"
- name: CPUCFSQuotaPeriod
- name: CustomCPUCFSQuotaPeriod
versionedSpecs:
- default: false
lockToDefault: false

View file

@ -325,16 +325,6 @@
lockToDefault: false
preRelease: Beta
version: "1.33"
- name: CPUCFSQuotaPeriod
versionedSpecs:
- default: false
lockToDefault: false
preRelease: Alpha
version: "1.12"
- default: true
lockToDefault: false
preRelease: GA
version: "1.36"
- name: CPUManagerPolicyAlphaOptions
versionedSpecs:
- default: false
@ -413,6 +403,16 @@
lockToDefault: false
preRelease: Alpha
version: "1.21"
- name: CustomCPUCFSQuotaPeriod
versionedSpecs:
- default: false
lockToDefault: false
preRelease: Alpha
version: "1.12"
- default: true
lockToDefault: false
preRelease: GA
version: "1.36"
- name: CustomResourceFieldSelectors
versionedSpecs:
- default: false
@ -1731,7 +1731,7 @@
lockToDefault: false
preRelease: Beta
version: "1.12"
- name: RuntimeClassInImageCriAPI
- name: RuntimeClassInImageCriApi
versionedSpecs:
- default: false
lockToDefault: false