...
1
16
17 package kernel
18
19 import (
20 "fmt"
21 "os"
22 "strings"
23
24 "k8s.io/apimachinery/pkg/util/version"
25 )
26
27 type readFileFunc func(string) ([]byte, error)
28
29
30 func GetVersion() (*version.Version, error) {
31 return getVersion(os.ReadFile)
32 }
33
34
35 func getVersion(readFile readFileFunc) (*version.Version, error) {
36 kernelVersionFile := "/proc/sys/kernel/osrelease"
37 fileContent, err := readFile(kernelVersionFile)
38 if err != nil {
39 return nil, fmt.Errorf("failed to read os-release file: %s", err.Error())
40 }
41
42 kernelVersion, err := version.ParseGeneric(strings.TrimSpace(string(fileContent)))
43 if err != nil {
44 return nil, fmt.Errorf("failed to parse kernel version: %s", err.Error())
45 }
46
47 return kernelVersion, nil
48 }
49
View as plain text