github.com/whatap/golib@v0.0.22/util/openstack/Openstack.go (about) 1 package openstack 2 3 import ( 4 "io/ioutil" 5 "net/http" 6 "strings" 7 "time" 8 ) 9 10 const ( 11 host = "http://169.254.169.254" 12 timeout = 1000 13 ) 14 15 func GetStringContents(url string) (string, error) { 16 client := http.Client{ 17 Timeout: timeout * time.Millisecond, 18 } 19 20 resp, err := client.Get(url) 21 if err != nil { 22 return "", err 23 } 24 defer resp.Body.Close() 25 26 data, err := ioutil.ReadAll(resp.Body) 27 if err != nil { 28 return "", err 29 } 30 31 return string(data), nil 32 } 33 34 func GetAvailabilityZone() (string, error) { 35 availability_url := "/latest/meta-data/placement/availability-zone" 36 zone, err := GetStringContents(host + availability_url) 37 return zone, err 38 } 39 40 func IsKIC() bool { 41 zone, err := GetAvailabilityZone() 42 kicPrefix := "kr-central-1" 43 if err == nil && strings.HasPrefix(zone, kicPrefix) { 44 return true 45 } else { 46 return false 47 } 48 }