Updating kubelet on Windows to query uuid from registry

This commit is contained in:
Mark Rossetti 2024-07-10 11:36:15 -07:00
parent 1608dc2b09
commit 26ef4e42e5
No known key found for this signature in database
GPG Key ID: 3188D8FC849D8762
2 changed files with 25 additions and 9 deletions

View File

@ -20,10 +20,7 @@ limitations under the License.
package winstats
import (
"errors"
"fmt"
"os"
"os/exec"
"runtime"
"strconv"
"strings"
@ -33,6 +30,7 @@ import (
"unsafe"
cadvisorapi "github.com/google/cadvisor/info/v1"
"github.com/pkg/errors"
"golang.org/x/sys/windows"
"golang.org/x/sys/windows/registry"
"k8s.io/apimachinery/pkg/util/wait"
@ -256,15 +254,21 @@ func (p *perfCounterNodeStatsClient) getCPUUsageNanoCores() uint64 {
}
func getSystemUUID() (string, error) {
result, err := exec.Command("wmic", "csproduct", "get", "UUID").Output()
k, err := registry.OpenKey(registry.LOCAL_MACHINE, `SYSTEM\HardwareConfig`, registry.QUERY_VALUE)
if err != nil {
return "", err
return "", errors.Wrap(err, "failed to open registry key HKLM\\SYSTEM\\HardwareConfig")
}
fields := strings.Fields(string(result))
if len(fields) != 2 {
return "", fmt.Errorf("received unexpected value retrieving vm uuid: %q", string(result))
defer k.Close()
uuid, _, err := k.GetStringValue("LastConfig")
if err != nil {
return "", errors.Wrap(err, "failed to read registry value LastConfig from key HKLM\\SYSTEM\\HardwareConfig")
}
return fields[1], nil
uuid = strings.Trim(uuid, "{")
uuid = strings.Trim(uuid, "}")
uuid = strings.ToUpper(uuid)
return uuid, nil
}
func getPhysicallyInstalledSystemMemoryBytes() (uint64, error) {

View File

@ -21,7 +21,9 @@ package winstats
import (
"os"
"os/exec"
"strconv"
"strings"
"testing"
"time"
@ -188,3 +190,13 @@ func testGetPhysicallyInstalledSystemMemoryBytes(t *testing.T) {
assert.NoError(t, err)
assert.NotZero(t, totalMemory)
}
func TestGetSystemUUID(t *testing.T) {
uuidFromRegistry, err := getSystemUUID()
assert.NoError(t, err)
uuidFromWmi, err := exec.Command("powershell.exe", "Get-WmiObject", "Win32_ComputerSystemProduct", "|", "Select-Object", "-ExpandProperty UUID").Output()
assert.NoError(t, err)
uuidFromWmiString := strings.Trim(string(uuidFromWmi), "\r\n")
assert.Equal(t, uuidFromWmiString, uuidFromRegistry)
}