|
@@ -1,7 +1,9 @@
|
|
|
package metadata
|
|
package metadata
|
|
|
|
|
|
|
|
import (
|
|
import (
|
|
|
|
|
+ "fmt"
|
|
|
"k8s.io/klog/v2"
|
|
"k8s.io/klog/v2"
|
|
|
|
|
+ "net/http"
|
|
|
"os"
|
|
"os"
|
|
|
"strings"
|
|
"strings"
|
|
|
"time"
|
|
"time"
|
|
@@ -15,6 +17,7 @@ const (
|
|
|
CloudProviderAWS CloudProvider = "AWS"
|
|
CloudProviderAWS CloudProvider = "AWS"
|
|
|
CloudProviderGCP CloudProvider = "GCP"
|
|
CloudProviderGCP CloudProvider = "GCP"
|
|
|
CloudProviderAzure CloudProvider = "Azure"
|
|
CloudProviderAzure CloudProvider = "Azure"
|
|
|
|
|
+ CloudProviderHetzner CloudProvider = "Hetzner"
|
|
|
CloudProviderUnknown CloudProvider = ""
|
|
CloudProviderUnknown CloudProvider = ""
|
|
|
)
|
|
)
|
|
|
|
|
|
|
@@ -47,6 +50,11 @@ func getCloudProvider() CloudProvider {
|
|
|
return CloudProviderAzure
|
|
return CloudProviderAzure
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ if vendor, err := os.ReadFile("/sys/class/dmi/id/sys_vendor"); err == nil {
|
|
|
|
|
+ if strings.TrimSpace(string(vendor)) == "Hetzner" {
|
|
|
|
|
+ return CloudProviderHetzner
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
return CloudProviderUnknown
|
|
return CloudProviderUnknown
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -60,6 +68,22 @@ func GetInstanceMetadata() *CloudMetadata {
|
|
|
return getGcpMetadata()
|
|
return getGcpMetadata()
|
|
|
case CloudProviderAzure:
|
|
case CloudProviderAzure:
|
|
|
return getAzureMetadata()
|
|
return getAzureMetadata()
|
|
|
|
|
+ case CloudProviderHetzner:
|
|
|
|
|
+ return getHetznerMetadata()
|
|
|
}
|
|
}
|
|
|
return nil
|
|
return nil
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+func httpGetWithTimeout(r *http.Request) (*http.Response, error) {
|
|
|
|
|
+ client := http.DefaultClient
|
|
|
|
|
+ client.Timeout = metadataServiceTimeout
|
|
|
|
|
+ resp, err := client.Do(r)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ return nil, err
|
|
|
|
|
+ }
|
|
|
|
|
+ if resp.StatusCode != 200 {
|
|
|
|
|
+ klog.Errorln()
|
|
|
|
|
+ return nil, fmt.Errorf("metadata service response: %s", resp.Status)
|
|
|
|
|
+ }
|
|
|
|
|
+ return resp, nil
|
|
|
|
|
+}
|