Files
orphanage/client/facts/facts.go

41 lines
1.1 KiB
Go

package facts
import (
"net/http"
"git.dubyatp.xyz/orphanage/client/httputil"
"github.com/zcalusic/sysinfo"
)
const APIVersion string = "facts/v1alpha1"
type FactsResponse struct {
APIVersion string `json:"apiVersion"`
CPUInfo sysinfo.CPU `json:"cpu"`
BoardInfo sysinfo.Board `json:"motherboard"`
DeviceInfo sysinfo.Product `json:"device"`
ChassisInfo sysinfo.Chassis `json:"chassis"`
MemoryInfo sysinfo.Memory `json:"memory"`
NetworkInfo []sysinfo.NetworkDevice `json:"network"`
StorageInfo []sysinfo.StorageDevice `json:"storage"`
}
func GetFacts(next http.Handler) http.Handler {
var si sysinfo.SysInfo
si.GetSysInfo()
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
resp := FactsResponse{
APIVersion: APIVersion,
CPUInfo: si.CPU,
BoardInfo: si.Board,
DeviceInfo: si.Product,
ChassisInfo: si.Chassis,
MemoryInfo: si.Memory,
NetworkInfo: si.Network,
StorageInfo: si.Storage,
}
httputil.WriteJSON(w, http.StatusOK, resp)
})
}