public IActionResult GetRoutes()

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
                });
        }