From fe06d6ebd42bad622d8a5cd12de5dc8ad65a6c85 Mon Sep 17 00:00:00 2001 From: Devin Trejo Date: Tue, 29 Jan 2019 12:02:23 -0500 Subject: [PATCH] Fix Amazon VM detection on EC2 Nitro generation. --- utils/cloudinfo/aws.go | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/utils/cloudinfo/aws.go b/utils/cloudinfo/aws.go index fadadd71..f3cdfb31 100644 --- a/utils/cloudinfo/aws.go +++ b/utils/cloudinfo/aws.go @@ -19,6 +19,7 @@ import ( "github.com/aws/aws-sdk-go/aws/ec2metadata" "github.com/aws/aws-sdk-go/aws/session" "io/ioutil" + "os" "strings" info "github.com/google/cadvisor/info/v1" @@ -26,15 +27,28 @@ import ( const ( ProductVerFileName = "/sys/class/dmi/id/product_version" + BiosVerFileName = "/sys/class/dmi/id/bios_vendor" Amazon = "amazon" ) func onAWS() bool { - data, err := ioutil.ReadFile(ProductVerFileName) - if err != nil { - return false + var dataProduct []byte + var dataBios []byte + if _, err := os.Stat(ProductVerFileName); err == nil { + dataProduct, err = ioutil.ReadFile(ProductVerFileName) + if err != nil { + return false + } } - return strings.Contains(string(data), Amazon) + + if _, err := os.Stat(BiosVerFileName); err == nil { + dataBios, err = ioutil.ReadFile(BiosVerFileName) + if err != nil { + return false + } + } + + return strings.Contains(string(dataProduct), Amazon) || strings.Contains(strings.ToLower(string(dataBios)), Amazon) } func getAwsMetadata(name string) string {