Skip to content

Commit f721b99

Browse files
committed
featuregates: store rendered minimum component version in featuregate accessor
Signed-off-by: Peter Hunt <pehunt@redhat.com>
1 parent 12e42eb commit f721b99

File tree

3 files changed

+27
-9
lines changed

3 files changed

+27
-9
lines changed

pkg/operator/configobserver/featuregates/featuregate.go

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,22 @@ type FeatureGate interface {
1414
Enabled(key configv1.FeatureGateName) bool
1515
// KnownFeatures returns a slice of strings describing the FeatureGate's known features.
1616
KnownFeatures() []configv1.FeatureGateName
17+
// RenderedMinimumComponentVersion returns the minimum component version that caused this set of features
18+
// to be generated.
19+
RenderedMinimumComponentVersions() []configv1.RequiredMinimumComponentVersion
1720
}
1821

1922
type featureGate struct {
20-
enabled []configv1.FeatureGateName
21-
disabled []configv1.FeatureGateName
23+
enabled []configv1.FeatureGateName
24+
disabled []configv1.FeatureGateName
25+
renderedVersion []configv1.RequiredMinimumComponentVersion
2226
}
2327

24-
func NewFeatureGate(enabled, disabled []configv1.FeatureGateName) FeatureGate {
28+
func NewFeatureGate(enabled, disabled []configv1.FeatureGateName, renderedVersion []configv1.RequiredMinimumComponentVersion) FeatureGate {
2529
return &featureGate{
26-
enabled: enabled,
27-
disabled: disabled,
30+
enabled: enabled,
31+
disabled: disabled,
32+
renderedVersion: renderedVersion,
2833
}
2934
}
3035

@@ -46,3 +51,7 @@ func (f *featureGate) KnownFeatures() []configv1.FeatureGateName {
4651

4752
return allKnown
4853
}
54+
55+
func (f *featureGate) RenderedMinimumComponentVersions() []configv1.RequiredMinimumComponentVersion {
56+
return f.renderedVersion
57+
}

pkg/operator/configobserver/featuregates/hardcoded_featuregate_reader.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,8 @@ func (c *hardcodedFeatureGateAccess) AreInitialFeatureGatesObserved() bool {
6262
}
6363

6464
func (c *hardcodedFeatureGateAccess) CurrentFeatureGates() (FeatureGate, error) {
65-
return NewFeatureGate(c.enabled, c.disabled), c.readErr
65+
// TODO FIXME not hardcoded
66+
return NewFeatureGate(c.enabled, c.disabled, nil), c.readErr
6667
}
6768

6869
// NewHardcodedFeatureGateAccessFromFeatureGate returns a FeatureGateAccess that is static and initialised from

pkg/operator/configobserver/featuregates/simple_featuregate_reader.go

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,9 @@ type FeatureGateAccess interface {
5050
}
5151

5252
type Features struct {
53-
Enabled []configv1.FeatureGateName
54-
Disabled []configv1.FeatureGateName
53+
Enabled []configv1.FeatureGateName
54+
Disabled []configv1.FeatureGateName
55+
RenderedMinimumComponentVersions []configv1.RequiredMinimumComponentVersion
5556
}
5657

5758
type FeatureChange struct {
@@ -263,10 +264,12 @@ func (c *defaultFeatureGateAccess) CurrentFeatureGates() (FeatureGate, error) {
263264
}
264265
retEnabled := make([]configv1.FeatureGateName, len(c.currentFeatures.Enabled))
265266
retDisabled := make([]configv1.FeatureGateName, len(c.currentFeatures.Disabled))
267+
retRenderedMinimumComponentVersions := make([]configv1.RequiredMinimumComponentVersion, len(c.currentFeatures.RenderedMinimumComponentVersions))
266268
copy(retEnabled, c.currentFeatures.Enabled)
267269
copy(retDisabled, c.currentFeatures.Disabled)
270+
copy(retRenderedMinimumComponentVersions, c.currentFeatures.RenderedMinimumComponentVersions)
268271

269-
return NewFeatureGate(retEnabled, retDisabled), nil
272+
return NewFeatureGate(retEnabled, retDisabled, retRenderedMinimumComponentVersions), nil
270273
}
271274

272275
func (c *defaultFeatureGateAccess) runWorker(ctx context.Context) {
@@ -310,6 +313,11 @@ func featuresFromFeatureGate(featureGate *configv1.FeatureGate, desiredVersion s
310313
break
311314
}
312315

316+
features.RenderedMinimumComponentVersions = make([]configv1.RequiredMinimumComponentVersion, 0, len(featureGate.Status.RenderedMinimumComponentVersions))
317+
for _, cv := range featureGate.Status.RenderedMinimumComponentVersions {
318+
features.RenderedMinimumComponentVersions = append(features.RenderedMinimumComponentVersions, cv)
319+
}
320+
313321
if !found {
314322
return Features{}, fmt.Errorf("missing desired version %q in featuregates.config.openshift.io/cluster", desiredVersion)
315323
}

0 commit comments

Comments
 (0)