From 12b30648075898dcd6b73b7c5a0946abae25233f Mon Sep 17 00:00:00 2001 From: Valery Bitsoev Date: Thu, 3 Apr 2025 15:48:07 +0200 Subject: [PATCH] Add method to get hostengine build info --- pkg/dcgm/api.go | 6 ++++++ pkg/dcgm/hostengine_status.go | 14 ++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/pkg/dcgm/api.go b/pkg/dcgm/api.go index 901cb7b..8d140df 100644 --- a/pkg/dcgm/api.go +++ b/pkg/dcgm/api.go @@ -70,6 +70,12 @@ func GetAllDeviceCount() (uint, error) { return getAllDeviceCount() } +// GetHostEngineBuildInfo returns DCGM Host Engine build information including +// version number, build date, and build flags +func GetHostEngineBuildInfo() (string, error) { + return getHostEngineBuildInfo() +} + // GetEntityGroupEntities returns all entities of the specified group type func GetEntityGroupEntities(entityGroup Field_Entity_Group) ([]uint, error) { return getEntityGroupEntities(entityGroup) diff --git a/pkg/dcgm/hostengine_status.go b/pkg/dcgm/hostengine_status.go index 89d366a..2d6bce3 100644 --- a/pkg/dcgm/hostengine_status.go +++ b/pkg/dcgm/hostengine_status.go @@ -8,6 +8,7 @@ package dcgm import "C" import ( + "fmt" "unsafe" ) @@ -19,6 +20,19 @@ type Status struct { CPU float64 } +func getHostEngineBuildInfo() (string, error) { + var versionInfo C.dcgmVersionInfo_v2 + versionInfo.version = makeVersion2(unsafe.Sizeof(versionInfo)) + + result := C.dcgmHostengineVersionInfo(handle.handle, &versionInfo) + if err := errorString(result); err != nil { + return "", fmt.Errorf("error getting hostengine version: %s", err) + } + + versionStr := C.GoString(&versionInfo.rawBuildInfoString[0]) // no need for stringPtr + return versionStr, nil +} + func introspect() (engine Status, err error) { var memory C.dcgmIntrospectMemory_t memory.version = makeVersion1(unsafe.Sizeof(memory))