in sfintegration/Controllers/v1.cs [297:341]
public IActionResult GetHosts(string routeConfig)
{
List<EnvoyHost> ret = new List<EnvoyHost>();
var nameSegements = routeConfig.Split('|');
// Deal with service name cluster as opposed to a partition cluster
if (nameSegements[2] == "-2")
{
if (!SF_Services.services_.ContainsKey(routeConfig))
{
return Ok(new { hosts = ret });
}
var service = SF_Services.services_[routeConfig];
foreach (var partition in service.Partitions)
{
string routeConfigForPartition = partition.ToString() + "|" + service.EndpointIndex.ToString() + "|0";
var pId = partition;
var info = SF_Services.EnvoyInformationForPartition(pId);
foreach (var serviceInfo in info)
{
if (serviceInfo.cluster.name != routeConfigForPartition)
{
continue;
}
ret.AddRange(serviceInfo.hosts);
}
}
}
else
{
Guid pId = new Guid(nameSegements[0]);
var info = SF_Services.EnvoyInformationForPartition(pId);
foreach (var service in info)
{
if (service.cluster.name != routeConfig)
{
continue;
}
ret.AddRange(service.hosts);
}
}
return Ok(
new { hosts = ret }
);
}