Skip to content

Instantly share code, notes, and snippets.

@shadedyin
Created June 13, 2015 12:03
Show Gist options
  • Save shadedyin/41c0415b626a4360bfed to your computer and use it in GitHub Desktop.
Save shadedyin/41c0415b626a4360bfed to your computer and use it in GitHub Desktop.
daemon off;
{{ get "/config" }}
http {
{{ $services := group (getrx "/service/.*") "^/service/([a-zA-Z0-9]+)/.*" }}
{{ range $service_name, $service := $services }}
{{ $group_pattern := join "^/service/" $service_name "/([a-zA-Z0-9]+)/.*" }}
{{ range $group_name, $group := group $service $group_pattern }}
upstream {{ $group_name }}-upstream {
{{ take $group (join "^/service/" $service_name "/" $group_name "/upstream/config$") }}
{{ $upstream_pattern := join "^/service/" $service_name "/" $group_name "/upstream/([0-9]+)$" }}
{{ range $host_name, $host := group $group $upstream_pattern }}
{{ range $i, $upstream := values $host }}
{{ $json := object $upstream }}
server {{ $json.host }} {{ if $json.down }}down{{ end }};
{{ end }}
{{ end }}
}
{{ $server_pattern := join "^/service/" $service_name "/" $group_name "/server/([a-zA-Z0-9]+)$" }}
{{ range $i, $server := values (select $group $server_pattern) }}
{{ $server }}
{{ end }}
{{ end }}
{{ end }}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment