SebastianCzoch/lxc-exporter

View on GitHub
kernel/version.go

Summary

Maintainability
A
0 mins
Test Coverage
package kernel

import (
    "io/ioutil"
    "regexp"
    "strconv"
    "strings"
)

var (
    kernelVersionFile = "/proc/version"
)

// GetVersion is a function which returns version of kernel from /proc/version
func GetVersion() (string, error) {
    content, err := getVersionFile()
    if err != nil {
        return "", err
    }

    return getKernelVersionFromContent(content), nil
}

// GetMajorVersion is a function which returns version of kernel from /proc/version (only major(first) number)
func GetMajorVersion() (int, error) {
    content, err := getVersionFile()
    if err != nil {
        return 0, err
    }

    return getMajorVersionFromString(getKernelVersionFromContent(content)), nil
}

func getVersionFile() (string, error) {
    content, err := ioutil.ReadFile(kernelVersionFile)
    return string(content), err
}

func getKernelVersionFromContent(content string) string {
    pattern := regexp.MustCompile("Linux version ([0-9.])+")
    found := pattern.FindString(content)
    return strings.Replace(found, "Linux version ", "", -1)
}

func getMajorVersionFromString(version string) int {
    v, _ := strconv.Atoi(string(version[0]))
    return v
}