Skip to content

Commit dfd25fc

Browse files
init commit
1 parent e8eb63f commit dfd25fc

11 files changed

+886
-586
lines changed

internal/openmetrics-exporter/arrays_space_collector.go

Lines changed: 108 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -23,95 +23,126 @@ func (c *ArraySpaceCollector) Collect(ch chan<- prometheus.Metric) {
2323
return
2424
}
2525
a := arrays.Items[0]
26-
ch <- prometheus.MustNewConstMetric(
27-
c.ReductionDesc,
28-
prometheus.GaugeValue,
29-
a.Space.DataReduction,
30-
)
26+
27+
if a.Space.DataReduction != nil {
28+
ch <- prometheus.MustNewConstMetric(
29+
c.ReductionDesc,
30+
prometheus.GaugeValue,
31+
*a.Space.DataReduction,
32+
)
33+
}
3134
ch <- prometheus.MustNewConstMetric(
3235
c.SpaceDesc,
3336
prometheus.GaugeValue,
3437
a.Capacity, "capacity",
3538
)
39+
if a.Space.Shared != nil {
40+
ch <- prometheus.MustNewConstMetric(
41+
c.SpaceDesc,
42+
prometheus.GaugeValue,
43+
float64(*a.Space.Shared), "shared",
44+
)
45+
}
46+
if a.Space.Snapshots != nil {
47+
ch <- prometheus.MustNewConstMetric(
48+
c.SpaceDesc,
49+
prometheus.GaugeValue,
50+
float64(*a.Space.Snapshots), "snapshots",
51+
)
52+
}
53+
if a.Space.System != nil {
54+
ch <- prometheus.MustNewConstMetric(
55+
c.SpaceDesc,
56+
prometheus.GaugeValue,
57+
float64(*a.Space.System), "system",
58+
)
59+
}
60+
if a.Space.ThinProvisioning != nil {
61+
ch <- prometheus.MustNewConstMetric(
62+
c.SpaceDesc,
63+
prometheus.GaugeValue,
64+
*a.Space.ThinProvisioning, "thin_provisioning",
65+
)
66+
}
67+
if a.Space.TotalPhysical != nil {
68+
ch <- prometheus.MustNewConstMetric(
69+
c.SpaceDesc,
70+
prometheus.GaugeValue,
71+
float64(*a.Space.TotalPhysical), "total_physical",
72+
)
73+
}
74+
if a.Space.TotalProvisioned != nil {
75+
ch <- prometheus.MustNewConstMetric(
76+
c.SpaceDesc,
77+
prometheus.GaugeValue,
78+
float64(*a.Space.TotalProvisioned), "total_provisioned",
79+
)
80+
}
81+
if a.Space.TotalReduction != nil {
82+
ch <- prometheus.MustNewConstMetric(
83+
c.SpaceDesc,
84+
prometheus.GaugeValue,
85+
*a.Space.TotalReduction, "total_reduction",
86+
)
87+
}
88+
if a.Space.Unique != nil {
89+
ch <- prometheus.MustNewConstMetric(
90+
c.SpaceDesc,
91+
prometheus.GaugeValue,
92+
float64(*a.Space.Unique), "unique",
93+
)
94+
}
95+
if a.Space.Virtual != nil {
96+
ch <- prometheus.MustNewConstMetric(
97+
c.SpaceDesc,
98+
prometheus.GaugeValue,
99+
float64(*a.Space.Virtual), "virtual",
100+
)
101+
}
102+
if a.Space.Replication != nil {
103+
ch <- prometheus.MustNewConstMetric(
104+
c.SpaceDesc,
105+
prometheus.GaugeValue,
106+
float64(*a.Space.Replication), "replication",
107+
)
108+
}
109+
if a.Space.SharedEffective != nil {
110+
ch <- prometheus.MustNewConstMetric(
111+
c.SpaceDesc,
112+
prometheus.GaugeValue,
113+
float64(*a.Space.SharedEffective), "shared_effective",
114+
)
115+
}
116+
if a.Space.SnapshotsEffective != nil {
117+
ch <- prometheus.MustNewConstMetric(
118+
c.SpaceDesc,
119+
prometheus.GaugeValue,
120+
float64(*a.Space.SnapshotsEffective), "snapshots_effective",
121+
)
122+
}
123+
if a.Space.UniqueEffective != nil {
124+
ch <- prometheus.MustNewConstMetric(
125+
c.SpaceDesc,
126+
prometheus.GaugeValue,
127+
float64(*a.Space.UniqueEffective), "unique_effective",
128+
)
129+
}
130+
if a.Space.TotalEffective != nil {
131+
ch <- prometheus.MustNewConstMetric(
132+
c.SpaceDesc,
133+
prometheus.GaugeValue,
134+
float64(*a.Space.TotalEffective), "total_effective",
135+
)
136+
}
36137
ch <- prometheus.MustNewConstMetric(
37138
c.SpaceDesc,
38139
prometheus.GaugeValue,
39-
a.Space.Shared, "shared",
40-
)
41-
ch <- prometheus.MustNewConstMetric(
42-
c.SpaceDesc,
43-
prometheus.GaugeValue,
44-
a.Space.Snapshots, "snapshots",
45-
)
46-
ch <- prometheus.MustNewConstMetric(
47-
c.SpaceDesc,
48-
prometheus.GaugeValue,
49-
a.Space.System, "system",
50-
)
51-
ch <- prometheus.MustNewConstMetric(
52-
c.SpaceDesc,
53-
prometheus.GaugeValue,
54-
a.Space.ThinProvisioning, "thin_provisioning",
55-
)
56-
ch <- prometheus.MustNewConstMetric(
57-
c.SpaceDesc,
58-
prometheus.GaugeValue,
59-
a.Space.TotalPhysical, "total_physical",
60-
)
61-
ch <- prometheus.MustNewConstMetric(
62-
c.SpaceDesc,
63-
prometheus.GaugeValue,
64-
a.Space.TotalProvisioned, "total_provisioned",
65-
)
66-
ch <- prometheus.MustNewConstMetric(
67-
c.SpaceDesc,
68-
prometheus.GaugeValue,
69-
a.Space.TotalReduction, "total_reduction",
70-
)
71-
ch <- prometheus.MustNewConstMetric(
72-
c.SpaceDesc,
73-
prometheus.GaugeValue,
74-
a.Space.Unique, "unique",
75-
)
76-
ch <- prometheus.MustNewConstMetric(
77-
c.SpaceDesc,
78-
prometheus.GaugeValue,
79-
a.Space.Virtual, "virtual",
80-
)
81-
ch <- prometheus.MustNewConstMetric(
82-
c.SpaceDesc,
83-
prometheus.GaugeValue,
84-
a.Space.Replication, "replication",
85-
)
86-
ch <- prometheus.MustNewConstMetric(
87-
c.SpaceDesc,
88-
prometheus.GaugeValue,
89-
a.Space.SharedEffective, "shared_effective",
90-
)
91-
ch <- prometheus.MustNewConstMetric(
92-
c.SpaceDesc,
93-
prometheus.GaugeValue,
94-
a.Space.SnapshotsEffective, "snapshots_effective",
95-
)
96-
ch <- prometheus.MustNewConstMetric(
97-
c.SpaceDesc,
98-
prometheus.GaugeValue,
99-
a.Space.UniqueEffective, "unique_effective",
100-
)
101-
ch <- prometheus.MustNewConstMetric(
102-
c.SpaceDesc,
103-
prometheus.GaugeValue,
104-
a.Space.TotalEffective, "total_effective",
105-
)
106-
ch <- prometheus.MustNewConstMetric(
107-
c.SpaceDesc,
108-
prometheus.GaugeValue,
109-
a.Capacity-a.Space.System-a.Space.Replication-a.Space.Shared-a.Space.Snapshots-a.Space.Unique, "empty",
140+
a.Capacity-(float64(*a.Space.System)+float64(*a.Space.Replication)+float64(*a.Space.Shared)+float64(*a.Space.Snapshots)+float64(*a.Space.Unique)), "empty",
110141
)
111142
ch <- prometheus.MustNewConstMetric(
112143
c.UtilizationDesc,
113144
prometheus.GaugeValue,
114-
(a.Space.System+a.Space.Replication+a.Space.Shared+a.Space.Snapshots+a.Space.Unique)/a.Capacity*100,
145+
(float64(*a.Space.System)+float64(*a.Space.Replication)+float64(*a.Space.Shared)+float64(*a.Space.Snapshots)+float64(*a.Space.Unique))/a.Capacity*100,
115146
)
116147
}
117148

internal/openmetrics-exporter/arrays_space_collector_test.go

Lines changed: 47 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -37,24 +37,54 @@ func TestArraySpaceCollector(t *testing.T) {
3737
want := make(map[string]bool)
3838
a := arrs.Items[0]
3939
sp := arrs.Items[0].Space
40-
want[fmt.Sprintf("gauge:{value:%g}", sp.DataReduction)] = true
40+
if sp.DataReduction != nil {
41+
want[fmt.Sprintf("gauge:{value:%g}", *sp.DataReduction)] = true
42+
}
4143
want[fmt.Sprintf("label:{name:\"space\" value:\"capacity\"} gauge:{value:%g}", a.Capacity)] = true
42-
want[fmt.Sprintf("label:{name:\"space\" value:\"shared\"} gauge:{value:%g}", sp.Shared)] = true
43-
want[fmt.Sprintf("label:{name:\"space\" value:\"snapshots\"} gauge:{value:%g}", sp.Snapshots)] = true
44-
want[fmt.Sprintf("label:{name:\"space\" value:\"system\"} gauge:{value:%g}", sp.System)] = true
45-
want[fmt.Sprintf("label:{name:\"space\" value:\"thin_provisioning\"} gauge:{value:%g}", sp.ThinProvisioning)] = true
46-
want[fmt.Sprintf("label:{name:\"space\" value:\"total_physical\"} gauge:{value:%g}", sp.TotalPhysical)] = true
47-
want[fmt.Sprintf("label:{name:\"space\" value:\"total_provisioned\"} gauge:{value:%g}", sp.TotalProvisioned)] = true
48-
want[fmt.Sprintf("label:{name:\"space\" value:\"total_reduction\"} gauge:{value:%g}", sp.TotalReduction)] = true
49-
want[fmt.Sprintf("label:{name:\"space\" value:\"unique\"} gauge:{value:%g}", sp.Unique)] = true
50-
want[fmt.Sprintf("label:{name:\"space\" value:\"virtual\"} gauge:{value:%g}", sp.Virtual)] = true
51-
want[fmt.Sprintf("label:{name:\"space\" value:\"replication\"} gauge:{value:%g}", sp.Replication)] = true
52-
want[fmt.Sprintf("label:{name:\"space\" value:\"shared_effective\"} gauge:{value:%g}", sp.SharedEffective)] = true
53-
want[fmt.Sprintf("label:{name:\"space\" value:\"snapshots_effective\"} gauge:{value:%g}", sp.SnapshotsEffective)] = true
54-
want[fmt.Sprintf("label:{name:\"space\" value:\"unique_effective\"} gauge:{value:%g}", sp.UniqueEffective)] = true
55-
want[fmt.Sprintf("label:{name:\"space\" value:\"total_effective\"} gauge:{value:%g}", sp.TotalEffective)] = true
56-
want[fmt.Sprintf("label:{name:\"space\" value:\"empty\"} gauge:{value:%g}", a.Capacity-a.Space.System-a.Space.Replication-a.Space.Shared-a.Space.Snapshots-a.Space.Unique)] = true
57-
want[fmt.Sprintf("gauge:{value:%g}", (a.Space.System+a.Space.Replication+a.Space.Shared+a.Space.Snapshots+a.Space.Unique)/a.Capacity*100)] = true
44+
if sp.Shared != nil {
45+
want[fmt.Sprintf("label:{name:\"space\" value:\"shared\"} gauge:{value:%g}", float64(*sp.Shared))] = true
46+
}
47+
if sp.Snapshots != nil {
48+
want[fmt.Sprintf("label:{name:\"space\" value:\"snapshots\"} gauge:{value:%g}", float64(*sp.Snapshots))] = true
49+
}
50+
if sp.System != nil {
51+
want[fmt.Sprintf("label:{name:\"space\" value:\"system\"} gauge:{value:%g}", float64(*sp.System))] = true
52+
}
53+
if sp.ThinProvisioning != nil {
54+
want[fmt.Sprintf("label:{name:\"space\" value:\"thin_provisioning\"} gauge:{value:%g}", *sp.ThinProvisioning)] = true
55+
}
56+
if sp.TotalPhysical != nil {
57+
want[fmt.Sprintf("label:{name:\"space\" value:\"total_physical\"} gauge:{value:%g}", float64(*sp.TotalPhysical))] = true
58+
}
59+
if sp.TotalProvisioned != nil {
60+
want[fmt.Sprintf("label:{name:\"space\" value:\"total_provisioned\"} gauge:{value:%g}", float64(*sp.TotalProvisioned))] = true
61+
}
62+
if sp.TotalReduction != nil {
63+
want[fmt.Sprintf("label:{name:\"space\" value:\"total_reduction\"} gauge:{value:%g}", *sp.TotalReduction)] = true
64+
}
65+
if sp.Unique != nil {
66+
want[fmt.Sprintf("label:{name:\"space\" value:\"unique\"} gauge:{value:%g}", float64(*sp.Unique))] = true
67+
}
68+
if sp.Virtual != nil {
69+
want[fmt.Sprintf("label:{name:\"space\" value:\"virtual\"} gauge:{value:%g}", float64(*sp.Virtual))] = true
70+
}
71+
if sp.Replication != nil {
72+
want[fmt.Sprintf("label:{name:\"space\" value:\"replication\"} gauge:{value:%g}", float64(*sp.Replication))] = true
73+
}
74+
if sp.SharedEffective != nil {
75+
want[fmt.Sprintf("label:{name:\"space\" value:\"shared_effective\"} gauge:{value:%g}", float64(*sp.SharedEffective))] = true
76+
}
77+
if sp.SnapshotsEffective != nil {
78+
want[fmt.Sprintf("label:{name:\"space\" value:\"snapshots_effective\"} gauge:{value:%g}", float64(*sp.SnapshotsEffective))] = true
79+
}
80+
if sp.UniqueEffective != nil {
81+
want[fmt.Sprintf("label:{name:\"space\" value:\"unique_effective\"} gauge:{value:%g}", float64(*sp.UniqueEffective))] = true
82+
}
83+
if sp.TotalEffective != nil {
84+
want[fmt.Sprintf("label:{name:\"space\" value:\"total_effective\"} gauge:{value:%g}", float64(*sp.TotalEffective))] = true
85+
}
86+
want[fmt.Sprintf("label:{name:\"space\" value:\"empty\"} gauge:{value:%g}", a.Capacity-(float64(*a.Space.System)+float64(*a.Space.Replication)+float64(*a.Space.Shared)+float64(*a.Space.Snapshots)+float64(*a.Space.Unique)))] = true
87+
want[fmt.Sprintf("gauge:{value:%g}", (float64(*a.Space.System)+float64(*a.Space.Replication)+float64(*a.Space.Shared)+float64(*a.Space.Snapshots)+float64(*a.Space.Unique))/a.Capacity*100)] = true
5888
defer server.Close()
5989
c := client.NewRestClient(e, "fake-api-token", "latest", "test-user-agent-string", false)
6090
ac := NewArraySpaceCollector(c)

0 commit comments

Comments
 (0)