Skip to content

Commit 56d7920

Browse files
authored
Merge pull request kubernetes#80764 from liyanhui1228/auth
Determine system model to get credentials for windows nodes
2 parents 9743d7f + a02289a commit 56d7920

File tree

1 file changed

+22
-5
lines changed

1 file changed

+22
-5
lines changed

pkg/credentialprovider/gcp/metadata.go

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ import (
2020
"encoding/json"
2121
"io/ioutil"
2222
"net/http"
23+
"os/exec"
24+
"runtime"
2325
"strings"
2426
"time"
2527

@@ -115,12 +117,27 @@ func init() {
115117
// Returns true if it finds a local GCE VM.
116118
// Looks at a product file that is an undocumented API.
117119
func onGCEVM() bool {
118-
data, err := ioutil.ReadFile(gceProductNameFile)
119-
if err != nil {
120-
klog.V(2).Infof("Error while reading product_name: %v", err)
121-
return false
120+
var name string
121+
122+
if runtime.GOOS == "windows" {
123+
data, err := exec.Command("wmic", "computersystem", "get", "model").Output()
124+
if err != nil {
125+
return false
126+
}
127+
fields := strings.Split(strings.TrimSpace(string(data)), "\r\n")
128+
if len(fields) != 2 {
129+
klog.V(2).Infof("Received unexpected value retrieving system model: %q", string(data))
130+
return false
131+
}
132+
name = fields[1]
133+
} else {
134+
data, err := ioutil.ReadFile(gceProductNameFile)
135+
if err != nil {
136+
klog.V(2).Infof("Error while reading product_name: %v", err)
137+
return false
138+
}
139+
name = strings.TrimSpace(string(data))
122140
}
123-
name := strings.TrimSpace(string(data))
124141
return name == "Google" || name == "Google Compute Engine"
125142
}
126143

0 commit comments

Comments
 (0)