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  }