Skip to content

Commit 5913e68

Browse files
ConsolePlugin metrics must no longer be grouped by the vendor
1 parent b2ce9af commit 5913e68

2 files changed

Lines changed: 69 additions & 68 deletions

File tree

pkg/serverconfig/metrics.go

Lines changed: 43 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,10 @@ type Metrics struct {
2828
perspectivesInfo *prometheus.GaugeVec
2929
pluginsInfo *prometheus.GaugeVec
3030
// Keep the last info so that it is possible to report zero for removed ConsolePlugins.
31-
lastPluginInfo *map[PluginVendor]map[PluginState]int
31+
lastPluginInfo *map[MappedPluginName]map[PluginState]int
3232
}
3333

34-
// Reduce cardinality by grouping all perspectives by a 'group name' or a vendor.
34+
// Reduce cardinality by grouping all perspectives by a 'group name'.
3535
type PerspectiveGroup string
3636

3737
const (
@@ -58,34 +58,31 @@ const (
5858
PerspectiveMetricStateCustomPermissions PerspectiveMetricState = "custom-permissions"
5959
)
6060

61-
// Reduce cardinality by mapping known plugin names to a vendor name.
62-
type PluginVendor string
61+
// Reduce cardinality by mapping known plugin names, everything else is reported as "unknown".
62+
type MappedPluginName string
6363

64-
const (
65-
PluginVendorRedHat PluginVendor = "redhat"
66-
PluginVendorDemo PluginVendor = "demo"
67-
PluginVendorOther PluginVendor = "other"
68-
)
69-
70-
var knownPluginVendors = map[string]PluginVendor{
64+
var knownPluginNames = map[string]MappedPluginName{
7165
// Red Hat maintained plugins
7266
// https://docs.google.com/spreadsheets/d/1wcCdc1s4ewzxtUJ42VdRhAJ9wFA8UwoTajGSftrr5fM/edit
73-
"acm": PluginVendorRedHat,
74-
"console-telemetry-plugin": PluginVendorRedHat,
75-
"crane-ui-plugin": PluginVendorRedHat,
76-
"forklift-console-plugin": PluginVendorRedHat,
77-
"kubevirt-plugin": PluginVendorRedHat,
78-
"logging-view-plugin": PluginVendorRedHat,
79-
"mce": PluginVendorRedHat,
80-
"netobserv-plugin": PluginVendorRedHat,
81-
"nmstate-console-plugin": PluginVendorRedHat,
82-
"node-remediation-console-plugin": PluginVendorRedHat,
83-
"odf-console": PluginVendorRedHat,
84-
"odf-multicluster-console": PluginVendorRedHat,
67+
"acm": "acm",
68+
"console-telemetry-plugin": "telemetry",
69+
"crane-ui-plugin": "crane",
70+
"forklift-console-plugin": "forklift",
71+
"gitops-plugin": "gitops",
72+
"kubevirt-plugin": "kubevirt",
73+
"logging-view-plugin": "logging-view",
74+
"mce": "mce",
75+
"monitoring-plugin": "monitoring",
76+
"netobserv-plugin": "netobserv",
77+
"nmstate-console-plugin": "nmstate",
78+
"node-remediation-console-plugin": "node-remediation",
79+
"odf-console": "odf",
80+
"odf-multicluster-console": "odf-multicluster",
81+
"pipeline-console-plugin": "pipelines",
8582

8683
// Unchanged template name from https://github.com/openshift/console-plugin-template
87-
"console-plugin-template": PluginVendorDemo,
88-
"my-plugin": PluginVendorDemo,
84+
"console-plugin-template": "demo",
85+
"my-plugin": "demo",
8986
}
9087

9188
type PluginState string
@@ -153,9 +150,9 @@ func (m *Metrics) updatePluginMetric(
153150
time.Since(startTime),
154151
)
155152

156-
for vendor, states := range *pluginInfo {
153+
for mappedPluginName, states := range *pluginInfo {
157154
for state, value := range states {
158-
if gauge, err := m.pluginsInfo.GetMetricWithLabelValues(string(vendor), string(state)); gauge != nil && err == nil {
155+
if gauge, err := m.pluginsInfo.GetMetricWithLabelValues(string(mappedPluginName), string(state)); gauge != nil && err == nil {
159156
gauge.Set(float64(value))
160157
}
161158
}
@@ -187,17 +184,17 @@ func (m *Metrics) getConsolePlugins(
187184
// Create a new plugin info map that is based on the last report to report also removed ConsolePlugins.
188185
func (m *Metrics) calculatePluginInfo(
189186
consolePlugins *[]unstructured.Unstructured,
190-
lastPluginInfo *map[PluginVendor]map[PluginState]int,
191-
) *map[PluginVendor]map[PluginState]int {
192-
pluginInfo := make(map[PluginVendor]map[PluginState]int)
187+
lastPluginInfo *map[MappedPluginName]map[PluginState]int,
188+
) *map[MappedPluginName]map[PluginState]int {
189+
pluginInfo := make(map[MappedPluginName]map[PluginState]int)
193190

194191
if lastPluginInfo != nil {
195-
for lastPluginVendor, lastPluginStates := range *lastPluginInfo {
192+
for lastPluginName, lastPluginStates := range *lastPluginInfo {
196193
for lastPluginState := range lastPluginStates {
197-
if pluginInfo[lastPluginVendor] == nil {
198-
pluginInfo[lastPluginVendor] = make(map[PluginState]int)
194+
if pluginInfo[lastPluginName] == nil {
195+
pluginInfo[lastPluginName] = make(map[PluginState]int)
199196
}
200-
pluginInfo[lastPluginVendor][lastPluginState] = 0
197+
pluginInfo[lastPluginName][lastPluginState] = 0
201198
}
202199
}
203200
}
@@ -207,36 +204,36 @@ func (m *Metrics) calculatePluginInfo(
207204
if consolePlugins != nil {
208205
for _, consolePlugin := range *consolePlugins {
209206
pluginName := consolePlugin.GetName()
210-
vendor := knownPluginVendors[pluginName]
211-
if vendor == "" {
212-
vendor = PluginVendorOther
207+
mappedPluginName := knownPluginNames[pluginName]
208+
if mappedPluginName == "" {
209+
mappedPluginName = "unknown"
213210
}
214211
state := PluginStateDisabled
215212
if m.config != nil && m.config.Plugins != nil {
216213
if _, found := m.config.Plugins[pluginName]; found {
217214
state = PluginStateEnabled
218215
}
219216
}
220-
if pluginInfo[vendor] == nil {
221-
pluginInfo[vendor] = make(map[PluginState]int)
217+
if pluginInfo[mappedPluginName] == nil {
218+
pluginInfo[mappedPluginName] = make(map[PluginState]int)
222219
}
223-
pluginInfo[vendor][state]++
220+
pluginInfo[mappedPluginName][state]++
224221
consolePluginNames[pluginName] = true
225222
}
226223
}
227224

228225
if m.config != nil && m.config.Plugins != nil {
229226
for pluginName := range m.config.Plugins {
230227
if found := consolePluginNames[pluginName]; !found {
231-
vendor := knownPluginVendors[pluginName]
232-
if vendor == "" {
233-
vendor = PluginVendorOther
228+
mappedPluginName := knownPluginNames[pluginName]
229+
if mappedPluginName == "" {
230+
mappedPluginName = "unknown"
234231
}
235232
state := PluginStateNotFound
236-
if pluginInfo[vendor] == nil {
237-
pluginInfo[vendor] = make(map[PluginState]int)
233+
if pluginInfo[mappedPluginName] == nil {
234+
pluginInfo[mappedPluginName] = make(map[PluginState]int)
238235
}
239-
pluginInfo[vendor][state]++
236+
pluginInfo[mappedPluginName][state]++
240237
}
241238
}
242239
}

pkg/serverconfig/metrics_test.go

Lines changed: 26 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,9 @@ func TestPluginMetrics(t *testing.T) {
7171
configuredPlugins: []string{"acm", "kubevirt-plugin", "my-plugin"},
7272
consolePlugins: []string{"acm", "kubevirt-plugin", "my-plugin"},
7373
expectedMetrics: `
74+
console_plugins_info{name="acm",state="enabled"} 1
7475
console_plugins_info{name="demo",state="enabled"} 1
75-
console_plugins_info{name="redhat",state="enabled"} 2
76+
console_plugins_info{name="kubevirt",state="enabled"} 1
7677
`,
7778
},
7879

@@ -82,7 +83,7 @@ func TestPluginMetrics(t *testing.T) {
8283
configuredPlugins: []string{"an-enabled-plugin", "another-enabled-plugin"},
8384
consolePlugins: []string{"an-enabled-plugin", "another-enabled-plugin"},
8485
expectedMetrics: `
85-
console_plugins_info{name="other",state="enabled"} 2
86+
console_plugins_info{name="unknown",state="enabled"} 2
8687
`,
8788
},
8889

@@ -92,7 +93,7 @@ func TestPluginMetrics(t *testing.T) {
9293
configuredPlugins: []string{},
9394
consolePlugins: []string{"a-disabed-plugin", "another-disabed-plugin"},
9495
expectedMetrics: `
95-
console_plugins_info{name="other",state="disabled"} 2
96+
console_plugins_info{name="unknown",state="disabled"} 2
9697
`,
9798
},
9899

@@ -102,7 +103,7 @@ func TestPluginMetrics(t *testing.T) {
102103
configuredPlugins: []string{"a-missing-plugin", "another-missing-plugin"},
103104
consolePlugins: []string{},
104105
expectedMetrics: `
105-
console_plugins_info{name="other",state="notfound"} 2
106+
console_plugins_info{name="unknown",state="notfound"} 2
106107
`,
107108
},
108109
}
@@ -156,14 +157,17 @@ func TestPluginMetricsRunningTwice(t *testing.T) {
156157
consolePluginsInitially: []string{"acm", "kubevirt-plugin", "my-plugin"},
157158
consolePluginsUpdated: []string{},
158159
expectedMetricsInitially: `
160+
console_plugins_info{name="acm",state="enabled"} 1
159161
console_plugins_info{name="demo",state="enabled"} 1
160-
console_plugins_info{name="redhat",state="enabled"} 2
162+
console_plugins_info{name="kubevirt",state="enabled"} 1
161163
`,
162164
expectedMetricsAfterUpdate: `
165+
console_plugins_info{name="acm",state="enabled"} 0
166+
console_plugins_info{name="acm",state="notfound"} 1
163167
console_plugins_info{name="demo",state="enabled"} 0
164168
console_plugins_info{name="demo",state="notfound"} 1
165-
console_plugins_info{name="redhat",state="enabled"} 0
166-
console_plugins_info{name="redhat",state="notfound"} 2
169+
console_plugins_info{name="kubevirt",state="enabled"} 0
170+
console_plugins_info{name="kubevirt",state="notfound"} 1
167171
`,
168172
},
169173

@@ -173,11 +177,11 @@ func TestPluginMetricsRunningTwice(t *testing.T) {
173177
consolePluginsInitially: []string{"an-enabled-plugin", "another-enabled-plugin"},
174178
consolePluginsUpdated: []string{"an-enabled-plugin"},
175179
expectedMetricsInitially: `
176-
console_plugins_info{name="other",state="enabled"} 2
180+
console_plugins_info{name="unknown",state="enabled"} 2
177181
`,
178182
expectedMetricsAfterUpdate: `
179-
console_plugins_info{name="other",state="enabled"} 1
180-
console_plugins_info{name="other",state="notfound"} 1
183+
console_plugins_info{name="unknown",state="enabled"} 1
184+
console_plugins_info{name="unknown",state="notfound"} 1
181185
`,
182186
},
183187

@@ -187,10 +191,10 @@ func TestPluginMetricsRunningTwice(t *testing.T) {
187191
consolePluginsInitially: []string{"a-disabed-plugin", "another-disabed-plugin"},
188192
consolePluginsUpdated: []string{"a-disabed-plugin"},
189193
expectedMetricsInitially: `
190-
console_plugins_info{name="other",state="disabled"} 2
194+
console_plugins_info{name="unknown",state="disabled"} 2
191195
`,
192196
expectedMetricsAfterUpdate: `
193-
console_plugins_info{name="other",state="disabled"} 1
197+
console_plugins_info{name="unknown",state="disabled"} 1
194198
`,
195199
},
196200

@@ -200,11 +204,11 @@ func TestPluginMetricsRunningTwice(t *testing.T) {
200204
consolePluginsInitially: []string{},
201205
consolePluginsUpdated: []string{"another-plugin"},
202206
expectedMetricsInitially: `
203-
console_plugins_info{name="other",state="notfound"} 2
207+
console_plugins_info{name="unknown",state="notfound"} 2
204208
`,
205209
expectedMetricsAfterUpdate: `
206-
console_plugins_info{name="other",state="enabled"} 1
207-
console_plugins_info{name="other",state="notfound"} 1
210+
console_plugins_info{name="unknown",state="enabled"} 1
211+
console_plugins_info{name="unknown",state="notfound"} 1
208212
`,
209213
},
210214

@@ -214,16 +218,16 @@ func TestPluginMetricsRunningTwice(t *testing.T) {
214218
consolePluginsInitially: []string{"an-first-enabled-plugin", "acm", "another-disabled-plugin"},
215219
consolePluginsUpdated: []string{"another-disabled-plugin", "acm", "my-plugin"},
216220
expectedMetricsInitially: `
217-
console_plugins_info{name="other",state="disabled"} 1
218-
console_plugins_info{name="other",state="enabled"} 1
219-
console_plugins_info{name="redhat",state="enabled"} 1
221+
console_plugins_info{name="acm",state="enabled"} 1
222+
console_plugins_info{name="unknown",state="disabled"} 1
223+
console_plugins_info{name="unknown",state="enabled"} 1
220224
`,
221225
expectedMetricsAfterUpdate: `
226+
console_plugins_info{name="acm",state="enabled"} 1
222227
console_plugins_info{name="demo",state="disabled"} 1
223-
console_plugins_info{name="other",state="disabled"} 1
224-
console_plugins_info{name="other",state="enabled"} 0
225-
console_plugins_info{name="other",state="notfound"} 1
226-
console_plugins_info{name="redhat",state="enabled"} 1
228+
console_plugins_info{name="unknown",state="disabled"} 1
229+
console_plugins_info{name="unknown",state="enabled"} 0
230+
console_plugins_info{name="unknown",state="notfound"} 1
227231
`,
228232
},
229233
}

0 commit comments

Comments
 (0)