in local-container-endpoints/handlers/metadata.go [309:349]
func filterContainersByMyNetworks(filteredContainerList []types.Container, allContainers []types.Container, callerIP string) []types.Container {
// find endpoints containers
var endpointContainer *types.Container
shortID := os.Getenv("HOSTNAME")
for _, container := range allContainers {
if strings.HasPrefix(container.ID, shortID) {
endpointContainer = &container
}
}
if endpointContainer == nil || endpointContainer.NetworkSettings == nil {
logrus.Warn("Failed to find endpoints container among running containers")
// Return the list we were given, since we can't filter it any further
return filteredContainerList
}
var finalList []types.Container
// containers can only make request to the endpoint container from within one of its networks
var networksToSearch []string
for network, settings := range endpointContainer.NetworkSettings.Networks {
networksToSearch = append(networksToSearch, network)
if settings != nil {
networksToSearch = append(networksToSearch, settings.Aliases...)
}
}
for _, container := range filteredContainerList {
if container.NetworkSettings == nil {
continue
}
for network, settings := range container.NetworkSettings.Networks {
if settings != nil && networkMatches(network, settings.Aliases, networksToSearch) && settings.IPAddress == callerIP {
// This container is in one of the right networks and has the caller IP in that network
finalList = append(finalList, container)
}
}
}
return finalList
}