Return grpc_config json setting in TXT

Signed-off-by: Miek Gieben <miek@miek.nl>
This commit is contained in:
Miek Gieben
2020-03-30 09:22:09 +02:00
parent e2238cfad8
commit cca578a460
3 changed files with 12 additions and 12 deletions

View File

@@ -4,11 +4,14 @@ import "github.com/miekg/dns"
// See https://github.com/grpc/grpc/blob/master/doc/service_config.md for the fields in this proto.
// We encode it as json and return it in a TXT field.
var lbTXT = `grpc_config=[{"serviceConfig":{"loadBalancingConfig":[{"xds_experimental":{"lrs_load_reporting_server_name":""}}]}}]`
var lbTXTxds = `grpc_config=[{"serviceConfig":{"loadBalancingConfig":[{"xds_experimental":{"lrs_load_reporting_server_name":""}}]}}]`
// Current impl. that will be removed in favor of xds
var lbTXTgrpc = `grpc_config=[{"serviceConfig":{"loadBalancingConfig":[{"grpclb":{}}]}}]`
func txt(z string) []dns.RR {
return []dns.RR{&dns.TXT{
Hdr: dns.RR_Header{Name: z, Rrtype: dns.TypeTXT, Class: dns.ClassINET, Ttl: 5},
Txt: []string{lbTXT},
Txt: []string{lbTXTgrpc},
}}
}

View File

@@ -2,7 +2,6 @@ package traffic
import (
"crypto/tls"
"encoding/json"
"fmt"
"math/rand"
"strings"
@@ -32,9 +31,6 @@ func setup(c *caddy.Controller) error {
if err != nil {
return plugin.Error("traffic", err)
}
if _, err := json.Marshal(lbTXT); err != nil {
return fmt.Errorf("failed to marshal grpc serverConfig: %s", err)
}
dnsserver.GetConfig(c).AddPlugin(func(next plugin.Handler) plugin.Handler {
t.Next = next

View File

@@ -15,12 +15,13 @@ func TestSetup(t *testing.T) {
}
func TestLBTxt(t *testing.T) {
_, err := json.Marshal(lbTXT)
if err != nil {
t.Fatalf("Failed to marshal grpc serverConfig: %s", err)
}
if len(lbTXT) > 255 {
t.Fatalf("Too long grpc serverConfig (>255): %d", len(lbTXT))
for _, txt := range []string{lbTXTxds, lbTXTgrpc} {
if _, err := json.Marshal(txt); err != nil {
t.Errorf("Failed to marshal grpc serverConfig: %s", err)
}
if len(txt) > 255 {
t.Errorf("Too long grpc serverConfig (>255): %d", len(txt))
}
}
}