@@ -8,12 +8,6 @@ import (
8
8
configv1 "github.com/openshift/api/config/v1"
9
9
)
10
10
11
- const (
12
- CapabilityAnnotation = "capability.openshift.io/name"
13
-
14
- DefaultCapabilitySet = configv1 .ClusterVersionCapabilitySetCurrent
15
- )
16
-
17
11
type ClusterCapabilities struct {
18
12
KnownCapabilities map [configv1.ClusterVersionCapability ]struct {}
19
13
EnabledCapabilities map [configv1.ClusterVersionCapability ]struct {}
@@ -34,18 +28,20 @@ func (caps capabilitiesSort) Len() int { return len(caps) }
34
28
func (caps capabilitiesSort ) Swap (i , j int ) { caps [i ], caps [j ] = caps [j ], caps [i ] }
35
29
func (caps capabilitiesSort ) Less (i , j int ) bool { return string (caps [i ]) < string (caps [j ]) }
36
30
37
- // SetCapabilities populates and returns cluster capabilities from ClusterVersion capabilities spec. This method also
38
- // ensures that no previously enabled capability is now disabled and returns any such implicitly enabled capabilities.
31
+ // SetCapabilities populates and returns cluster capabilities from ClusterVersion's capabilities specification and a
32
+ // collection of capabilities that are enabled including implicitly enabled.
33
+ // It ensures that each capability in the collection is still enabled in the returned cluster capabilities
34
+ // and recognizes all implicitly enabled ones.
39
35
func SetCapabilities (config * configv1.ClusterVersion ,
40
- existingEnabled , alwaysEnabled map [ configv1.ClusterVersionCapability ] struct {} ) ClusterCapabilities {
36
+ capabilities [] configv1.ClusterVersionCapability ) ClusterCapabilities {
41
37
42
- var capabilities ClusterCapabilities
43
- capabilities .KnownCapabilities = setKnownCapabilities ( )
38
+ var clusterCapabilities ClusterCapabilities
39
+ clusterCapabilities .KnownCapabilities = GetCapabilitiesAsMap ( configv1 . KnownClusterVersionCapabilities )
44
40
45
- capabilities .EnabledCapabilities , capabilities .ImplicitlyEnabledCapabilities = setEnabledCapabilities ( config . Spec . Capabilities ,
46
- existingEnabled , alwaysEnabled )
41
+ clusterCapabilities .EnabledCapabilities , clusterCapabilities .ImplicitlyEnabledCapabilities =
42
+ categorizeEnabledCapabilities ( config . Spec . Capabilities , capabilities )
47
43
48
- return capabilities
44
+ return clusterCapabilities
49
45
}
50
46
51
47
// GetCapabilitiesAsMap returns the slice of capabilities as a map with default values.
@@ -72,17 +68,6 @@ func SetFromImplicitlyEnabledCapabilities(implicitlyEnabled []configv1.ClusterVe
72
68
return capabilities
73
69
}
74
70
75
- // GetKnownCapabilities returns all known capabilities as defined in ClusterVersion.
76
- func GetKnownCapabilities () []configv1.ClusterVersionCapability {
77
- var known []configv1.ClusterVersionCapability
78
-
79
- for _ , v := range configv1 .ClusterVersionCapabilitySets {
80
- known = append (known , v ... )
81
- }
82
- sort .Sort (capabilitiesSort (known ))
83
- return known
84
- }
85
-
86
71
// GetCapabilitiesStatus populates and returns ClusterVersion capabilities status from given capabilities.
87
72
func GetCapabilitiesStatus (capabilities ClusterCapabilities ) configv1.ClusterVersionCapabilitiesStatus {
88
73
var status configv1.ClusterVersionCapabilitiesStatus
@@ -131,31 +116,13 @@ func Contains(caps []configv1.ClusterVersionCapability, capability configv1.Clus
131
116
return found
132
117
}
133
118
134
- // setKnownCapabilities populates a map keyed by capability from all known capabilities as defined in ClusterVersion.
135
- func setKnownCapabilities () map [configv1.ClusterVersionCapability ]struct {} {
136
- known := make (map [configv1.ClusterVersionCapability ]struct {})
137
-
138
- for _ , v := range configv1 .ClusterVersionCapabilitySets {
139
- for _ , capability := range v {
140
- if _ , ok := known [capability ]; ok {
141
- continue
142
- }
143
- known [capability ] = struct {}{}
144
- }
145
- }
146
- return known
147
- }
148
-
149
- // setEnabledCapabilities populates a map keyed by capability from all enabled capabilities as defined in ClusterVersion.
150
- // DefaultCapabilitySet is used if a baseline capability set is not defined by ClusterVersion. A check is then made to
151
- // ensure that no previously enabled capability is now disabled and if any such capabilities are found each is enabled,
152
- // saved, and returned.
153
- // The required capabilities are added to the implicitly enabled.
154
- func setEnabledCapabilities (capabilitiesSpec * configv1.ClusterVersionCapabilitiesSpec ,
155
- priorEnabled , alwaysEnabled map [configv1.ClusterVersionCapability ]struct {}) (map [configv1.ClusterVersionCapability ]struct {},
119
+ // categorizeEnabledCapabilities categorizes enabled capabilities by implicitness from cluster version's
120
+ // capabilities specification and a collection of capabilities that are enabled including implicitly enabled.
121
+ func categorizeEnabledCapabilities (capabilitiesSpec * configv1.ClusterVersionCapabilitiesSpec ,
122
+ capabilities []configv1.ClusterVersionCapability ) (map [configv1.ClusterVersionCapability ]struct {},
156
123
[]configv1.ClusterVersionCapability ) {
157
124
158
- capSet := DefaultCapabilitySet
125
+ capSet := configv1 . ClusterVersionCapabilitySetCurrent
159
126
160
127
if capabilitiesSpec != nil && len (capabilitiesSpec .BaselineCapabilitySet ) > 0 {
161
128
capSet = capabilitiesSpec .BaselineCapabilitySet
@@ -171,13 +138,7 @@ func setEnabledCapabilities(capabilitiesSpec *configv1.ClusterVersionCapabilitie
171
138
}
172
139
}
173
140
var implicitlyEnabled []configv1.ClusterVersionCapability
174
- for k := range priorEnabled {
175
- if _ , ok := enabled [k ]; ! ok {
176
- implicitlyEnabled = append (implicitlyEnabled , k )
177
- enabled [k ] = struct {}{}
178
- }
179
- }
180
- for k := range alwaysEnabled {
141
+ for _ , k := range capabilities {
181
142
if _ , ok := enabled [k ]; ! ok {
182
143
implicitlyEnabled = append (implicitlyEnabled , k )
183
144
enabled [k ] = struct {}{}
0 commit comments