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
}