in sfintegration/Controllers/v1.cs [133:199]
public IActionResult GetRoutes(string name, string service_cluster, string service_node)
{
List<EnvoyVirtualHost> virtual_hosts = new List<EnvoyVirtualHost>();
List<EnvoyRoute> ret = new List<EnvoyRoute>();
if (SF_Services.partitions_ == null)
{
virtual_hosts.Add(new EnvoyVirtualHost(
name,
new List<string>() { "*" },
ret));
return Ok(new
{
virtual_hosts
});
}
if (name.StartsWith("gateway_config|"))
{
return GetRoutesForGateway(name, virtual_hosts);
}
foreach (var pID in SF_Services.partitions_)
{
var info = SF_Services.EnvoyInformationForPartition(pID.Key);
foreach (var service in info)
{
ret.AddRange(service.routes);
}
}
foreach (var service in SF_Services.services_)
{
if (!service.Value.StatefulService)
{
continue;
}
string routeConfigForPartition = service.Value.Partitions[0].ToString() + "|" + service.Value.EndpointIndex.ToString() + "|0";
var info = SF_Services.EnvoyInformationForPartition(service.Value.Partitions[0]);
foreach (var serviceInfo in info)
{
if (serviceInfo.cluster.name != routeConfigForPartition)
{
continue;
}
var routes = serviceInfo.routes;
foreach (var route in routes)
{
route.cluster = service.Key;
var tuple = RemoveStatefulHeadersAndFilter(route.headers);
if (!tuple.Item1)
{
continue;
}
route.prefix_rewrite = "/";
ret.Add(route);
}
}
}
virtual_hosts.Add(new EnvoyVirtualHost(
name,
new List<string>() { "*" },
ret));
return Ok(
new
{
virtual_hosts,
EnvoyDefaults.response_headers_to_remove
});
}