func()

in lib/ec2macosinit/imds.go [26:56]


func (i *IMDSConfig) getIMDSProperty(endpoint string) (value string, httpResponseCode int, err error) {
	// Check that an IMDSv2 token exists - get one if it doesn't
	if i.token == "" {
		err = i.getNewToken()
		if err != nil {
			return "", 0, fmt.Errorf("ec2macosinit: error while getting new IMDS token: %s\n", err)
		}
	}

	// Create request
	client := &http.Client{}
	req, err := http.NewRequest(http.MethodGet, imdsBase+endpoint, nil)
	if err != nil {
		return "", 0, fmt.Errorf("ec2macosinit: error while creating new HTTP request: %s\n", err)
	}
	req.Header.Set(tokenHeader, i.token) // set IMDSv2 token

	// Make request
	resp, err := client.Do(req)
	if err != nil {
		return "", 0, fmt.Errorf("ec2macosinit: error while requesting IMDS property: %s\n", err)
	}

	// Convert returned io.ReadCloser to string
	value, err = ioReadCloserToString(resp.Body)
	if err != nil {
		return "", 0, fmt.Errorf("ec2macosinit: error reading response body: %s\n", err)
	}

	return value, resp.StatusCode, nil
}