Skip to content

Commit 74023b4

Browse files
committed
metrics: resolve versions in single module
Resolve various versions info within single module. Signed-off-by: Shachar Sharon <[email protected]>
1 parent 1cd7b79 commit 74023b4

File tree

1 file changed

+74
-0
lines changed

1 file changed

+74
-0
lines changed

internal/metrics/versions.go

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
// SPDX-License-Identifier: Apache-2.0
2+
3+
package metrics
4+
5+
import (
6+
"context"
7+
)
8+
9+
var (
10+
defaultVersions Versions
11+
)
12+
13+
type Versions struct {
14+
Version string
15+
CommitID string
16+
SambaImage string
17+
SambaVersion string
18+
CtdbVersion string
19+
}
20+
21+
// UpdateDefaultVersions assigns defaults upon init
22+
func UpdateDefaultVersions(version, commitid string) {
23+
defaultVersions.Version = version
24+
defaultVersions.CommitID = commitid
25+
}
26+
27+
// ResolveVersions is a best-effort to resolve current pod's versions info
28+
func ResolveVersions(clnt *kclient) (Versions, error) {
29+
var err error
30+
vers := Versions{
31+
Version: defaultVersions.Version,
32+
CommitID: defaultVersions.CommitID,
33+
}
34+
if clnt != nil {
35+
vers.SambaImage, err = resolveSambaImage(clnt)
36+
if err != nil {
37+
return vers, err
38+
}
39+
}
40+
vers.SambaVersion, err = resolveSambaVersion()
41+
if err != nil {
42+
return vers, err
43+
}
44+
vers.CtdbVersion, err = resolveCtdbVersion()
45+
if err != nil {
46+
return vers, err
47+
}
48+
return vers, nil
49+
}
50+
51+
func resolveSambaImage(clnt *kclient) (string, error) {
52+
pod, err := GetSelfPod(context.TODO(), clnt)
53+
if err != nil {
54+
return "", err
55+
}
56+
for _, cont := range pod.Spec.Containers {
57+
if cont.Name == "samba" {
58+
return cont.Image, nil
59+
}
60+
}
61+
return "", nil
62+
}
63+
64+
func resolveSambaVersion() (string, error) {
65+
return executeRpmQCommand("samba")
66+
}
67+
68+
func resolveCtdbVersion() (string, error) {
69+
return executeRpmQCommand("ctdb")
70+
}
71+
72+
func executeRpmQCommand(name string) (string, error) {
73+
return executeCommand("rpm", "-q", name)
74+
}

0 commit comments

Comments
 (0)