diff --git a/detect.go b/detect.go index bfe5738..9ac1c6d 100644 --- a/detect.go +++ b/detect.go @@ -20,6 +20,7 @@ func Detect() string { detectDigitalOcean, detectGCE, detectOracle, + detectIBMCloud, detectOpenStack, detectSoftlayer, detectVultr, diff --git a/ibmcloud.go b/ibmcloud.go new file mode 100644 index 0000000..68cc92b --- /dev/null +++ b/ibmcloud.go @@ -0,0 +1,28 @@ +package libdetectcloud + +import "net/http" + +func detectIBMCloud() string { + req, err := http.NewRequest("PUT", "http://api.metadata.cloud.ibm.com/instance_identity/v1/token", nil) + if err != nil { + return "" + } + + resp, err := hc.Do(req) + if err != nil { + req, err = http.NewRequest("PUT", "https://api.metadata.cloud.ibm.com/instance_identity/v1/token", nil) + if err != nil { + return "" + } + resp, err = hc.Do(req) + if err != nil { + return "" + } + } + + defer resp.Body.Close() + if resp.StatusCode == http.StatusOK { + return "IBM Cloud" + } + return "" +}