func()

in plugins/eni/engine/engine.go [274:309]


func (engine *engine) doesMACAddressMapToIPAddress(macAddress string, addressToFind string, metatdataPathSuffix string) (bool, error) {
	// TODO Use fmt.Sprintf and wrap that in a method
	var addressesResponse string
	var err error

	attempts := 1
	for {
		addressesResponse, err = engine.metadata.GetMetadata(
			metadataNetworkInterfacesPath + macAddress + metatdataPathSuffix)
		if err == nil {
			break
		}
		log.Warnf("Error querying metadata path (attempt %d/%d) : '%s': %v",
			attempts, engine.metadataMaxRetryCount,
			metadataNetworkInterfacesPath+macAddress+metatdataPathSuffix, err)
		// It could take few seconds for the ENI's MAC address to show up in
		// instance metdata
		// Retry a few times before giving up
		if attempts >= engine.metadataMaxRetryCount {
			break
		}
		attempts++
		time.Sleep(engine.metadataDurationBetweenRetries)
	}
	if err != nil {
		return false, errors.Wrapf(err,
			"querying metadata path: '%s'",
			metadataNetworkInterfacesPath+macAddress+metatdataPathSuffix)
	}
	for _, address := range strings.Split(addressesResponse, "\n") {
		if address == addressToFind {
			return true, nil
		}
	}
	return false, nil
}