diff --git a/helper/hostutil/hostinfo.go b/helper/hostutil/hostinfo.go index 5244b1810f..f2b4f9ce22 100644 --- a/helper/hostutil/hostinfo.go +++ b/helper/hostutil/hostinfo.go @@ -88,3 +88,17 @@ func CollectHostInfo(ctx context.Context) (*HostInfo, error) { return info, retErr.ErrorOrNil() } + +func CollectHostMemory(ctx context.Context) (*VirtualMemoryStat, error) { + m, err := mem.VirtualMemoryWithContext(ctx) + if err != nil { + return nil, err + } + + return &VirtualMemoryStat{ + Total: m.Total, + Available: m.Available, + Used: m.Used, + UsedPercent: m.UsedPercent, + }, nil +} diff --git a/helper/hostutil/hostinfo_openbsd.go b/helper/hostutil/hostinfo_openbsd.go index b092d9b6ad..9e58428760 100644 --- a/helper/hostutil/hostinfo_openbsd.go +++ b/helper/hostutil/hostinfo_openbsd.go @@ -20,3 +20,7 @@ type HostInfo struct { func CollectHostInfo(ctx context.Context) (*HostInfo, error) { return nil, fmt.Errorf("host info not supported on this platform") } + +func CollectHostMemory(ctx context.Context) (*VirtualMemoryStat, error) { + return nil, fmt.Errorf("host info not supported on this platform") +} diff --git a/helper/hostutil/hostinfo_util.go b/helper/hostutil/hostinfo_util.go new file mode 100644 index 0000000000..114f596f9a --- /dev/null +++ b/helper/hostutil/hostinfo_util.go @@ -0,0 +1,24 @@ +package hostutil + +// VirutalMemoryStat holds commonly used memory measurements. We must have a +// local type here in order to avoid building the gopsutil library on certain +// arch types. +type VirtualMemoryStat struct { + // Total amount of RAM on this system + Total uint64 + + // RAM available for programs to allocate + // + // This value is computed from the kernel specific values. + Available uint64 + + // RAM used by programs + // + // This value is computed from the kernel specific values. + Used uint64 + + // Percentage of RAM used by programs + // + // This value is computed from the kernel specific values. + UsedPercent float64 +}