middleware/kubernetes: define consts (#824)
Define two consts Pod and Svc, makes it stand out a little more when used in switches in case. We have opted for a new type, but then you need to convert them all the time with string(Foo).
This commit is contained in:
parent
d0d7f4c89a
commit
21386ebdd5
3 changed files with 22 additions and 17 deletions
|
@ -25,8 +25,8 @@ func TestStripFederation(t *testing.T) {
|
||||||
k := Kubernetes{Zones: []string{"inter.webs.test"}}
|
k := Kubernetes{Zones: []string{"inter.webs.test"}}
|
||||||
k.Federations = []Federation{{name: "fed", zone: "era.tion.com"}}
|
k.Federations = []Federation{{name: "fed", zone: "era.tion.com"}}
|
||||||
|
|
||||||
testStripFederation(t, k, []string{"service", "ns", "fed", "svc"}, "fed", "service.ns.svc")
|
testStripFederation(t, k, []string{"service", "ns", "fed", Svc}, "fed", "service.ns.svc")
|
||||||
testStripFederation(t, k, []string{"service", "ns", "foo", "svc"}, "", "service.ns.foo.svc")
|
testStripFederation(t, k, []string{"service", "ns", "foo", Svc}, "", "service.ns.foo.svc")
|
||||||
testStripFederation(t, k, []string{"foo", "bar"}, "", "foo.bar")
|
testStripFederation(t, k, []string{"foo", "bar"}, "", "foo.bar")
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -419,9 +419,9 @@ func (k *Kubernetes) getRecordsForK8sItems(services []service, pods []pod, r rec
|
||||||
Port: int(ep.port.Port),
|
Port: int(ep.port.Port),
|
||||||
}
|
}
|
||||||
if r.federation != "" {
|
if r.federation != "" {
|
||||||
s.Key = strings.Join([]string{zonePath, "svc", r.federation, svc.namespace, svc.name, endpointHostname(ep.addr)}, "/")
|
s.Key = strings.Join([]string{zonePath, Svc, r.federation, svc.namespace, svc.name, endpointHostname(ep.addr)}, "/")
|
||||||
} else {
|
} else {
|
||||||
s.Key = strings.Join([]string{zonePath, "svc", svc.namespace, svc.name, endpointHostname(ep.addr)}, "/")
|
s.Key = strings.Join([]string{zonePath, Svc, svc.namespace, svc.name, endpointHostname(ep.addr)}, "/")
|
||||||
}
|
}
|
||||||
records = append(records, s)
|
records = append(records, s)
|
||||||
}
|
}
|
||||||
|
@ -433,22 +433,22 @@ func (k *Kubernetes) getRecordsForK8sItems(services []service, pods []pod, r rec
|
||||||
Port: int(p.Port)}
|
Port: int(p.Port)}
|
||||||
|
|
||||||
if r.federation != "" {
|
if r.federation != "" {
|
||||||
s.Key = strings.Join([]string{zonePath, "svc", r.federation, svc.namespace, svc.name}, "/")
|
s.Key = strings.Join([]string{zonePath, Svc, r.federation, svc.namespace, svc.name}, "/")
|
||||||
} else {
|
} else {
|
||||||
s.Key = strings.Join([]string{zonePath, "svc", svc.namespace, svc.name}, "/")
|
s.Key = strings.Join([]string{zonePath, Svc, svc.namespace, svc.name}, "/")
|
||||||
}
|
}
|
||||||
|
|
||||||
records = append(records, s)
|
records = append(records, s)
|
||||||
}
|
}
|
||||||
// If the addr is not an IP (i.e. an external service), add the record ...
|
// If the addr is not an IP (i.e. an external service), add the record ...
|
||||||
s := msg.Service{
|
s := msg.Service{
|
||||||
Key: strings.Join([]string{zonePath, "svc", svc.namespace, svc.name}, "/"),
|
Key: strings.Join([]string{zonePath, Svc, svc.namespace, svc.name}, "/"),
|
||||||
Host: svc.addr}
|
Host: svc.addr}
|
||||||
if t, _ := s.HostType(); t == dns.TypeCNAME {
|
if t, _ := s.HostType(); t == dns.TypeCNAME {
|
||||||
if r.federation != "" {
|
if r.federation != "" {
|
||||||
s.Key = strings.Join([]string{zonePath, "svc", r.federation, svc.namespace, svc.name}, "/")
|
s.Key = strings.Join([]string{zonePath, Svc, r.federation, svc.namespace, svc.name}, "/")
|
||||||
} else {
|
} else {
|
||||||
s.Key = strings.Join([]string{zonePath, "svc", svc.namespace, svc.name}, "/")
|
s.Key = strings.Join([]string{zonePath, Svc, svc.namespace, svc.name}, "/")
|
||||||
}
|
}
|
||||||
records = append(records, s)
|
records = append(records, s)
|
||||||
}
|
}
|
||||||
|
@ -458,7 +458,7 @@ func (k *Kubernetes) getRecordsForK8sItems(services []service, pods []pod, r rec
|
||||||
|
|
||||||
for _, p := range pods {
|
for _, p := range pods {
|
||||||
s := msg.Service{
|
s := msg.Service{
|
||||||
Key: strings.Join([]string{zonePath, "pod", p.namespace, p.name}, "/"),
|
Key: strings.Join([]string{zonePath, Pod, p.namespace, p.name}, "/"),
|
||||||
Host: p.addr,
|
Host: p.addr,
|
||||||
}
|
}
|
||||||
records = append(records, s)
|
records = append(records, s)
|
||||||
|
@ -533,7 +533,7 @@ func (k *Kubernetes) findPods(namespace, podname string) (pods []pod, err error)
|
||||||
// get retrieves matching data from the cache.
|
// get retrieves matching data from the cache.
|
||||||
func (k *Kubernetes) get(r recordRequest) (services []service, pods []pod, err error) {
|
func (k *Kubernetes) get(r recordRequest) (services []service, pods []pod, err error) {
|
||||||
switch {
|
switch {
|
||||||
case r.typeName == "pod":
|
case r.typeName == Pod:
|
||||||
pods, err = k.findPods(r.namespace, r.service)
|
pods, err = k.findPods(r.namespace, r.service)
|
||||||
return nil, pods, err
|
return nil, pods, err
|
||||||
default:
|
default:
|
||||||
|
@ -630,7 +630,7 @@ func (k *Kubernetes) getServiceRecordForIP(ip, name string) []msg.Service {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if service.Spec.ClusterIP == ip {
|
if service.Spec.ClusterIP == ip {
|
||||||
domain := strings.Join([]string{service.Name, service.Namespace, "svc", k.PrimaryZone()}, ".")
|
domain := strings.Join([]string{service.Name, service.Namespace, Svc, k.PrimaryZone()}, ".")
|
||||||
return []msg.Service{{Host: domain}}
|
return []msg.Service{{Host: domain}}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -643,7 +643,7 @@ func (k *Kubernetes) getServiceRecordForIP(ip, name string) []msg.Service {
|
||||||
for _, eps := range ep.Subsets {
|
for _, eps := range ep.Subsets {
|
||||||
for _, addr := range eps.Addresses {
|
for _, addr := range eps.Addresses {
|
||||||
if addr.IP == ip {
|
if addr.IP == ip {
|
||||||
domain := strings.Join([]string{endpointHostname(addr), ep.ObjectMeta.Name, ep.ObjectMeta.Namespace, "svc", k.PrimaryZone()}, ".")
|
domain := strings.Join([]string{endpointHostname(addr), ep.ObjectMeta.Name, ep.ObjectMeta.Namespace, Svc, k.PrimaryZone()}, ".")
|
||||||
return []msg.Service{{Host: domain}}
|
return []msg.Service{{Host: domain}}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -675,9 +675,14 @@ func localPodIP() net.IP {
|
||||||
}
|
}
|
||||||
|
|
||||||
func splitSearch(zone, question, namespace string) (name, search string, ok bool) {
|
func splitSearch(zone, question, namespace string) (name, search string, ok bool) {
|
||||||
search = strings.Join([]string{namespace, "svc", zone}, ".")
|
search = strings.Join([]string{namespace, Svc, zone}, ".")
|
||||||
if dns.IsSubDomain(search, question) {
|
if dns.IsSubDomain(search, question) {
|
||||||
return question[:len(question)-len(search)-1], search, true
|
return question[:len(question)-len(search)-1], search, true
|
||||||
}
|
}
|
||||||
return "", "", false
|
return "", "", false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
Svc = "svc"
|
||||||
|
Pod = "pod"
|
||||||
|
)
|
||||||
|
|
|
@ -128,7 +128,7 @@ func TestParseRequest(t *testing.T) {
|
||||||
"endpoint": "",
|
"endpoint": "",
|
||||||
"service": "webs",
|
"service": "webs",
|
||||||
"namespace": "mynamespace",
|
"namespace": "mynamespace",
|
||||||
"typeName": "svc",
|
"typeName": Svc,
|
||||||
"zone": "inter.webs.test",
|
"zone": "inter.webs.test",
|
||||||
}
|
}
|
||||||
for field, expected := range tcs {
|
for field, expected := range tcs {
|
||||||
|
@ -149,7 +149,7 @@ func TestParseRequest(t *testing.T) {
|
||||||
"endpoint": "",
|
"endpoint": "",
|
||||||
"service": "*",
|
"service": "*",
|
||||||
"namespace": "any",
|
"namespace": "any",
|
||||||
"typeName": "svc",
|
"typeName": Svc,
|
||||||
"zone": "inter.webs.test",
|
"zone": "inter.webs.test",
|
||||||
}
|
}
|
||||||
for field, expected := range tcs {
|
for field, expected := range tcs {
|
||||||
|
@ -168,7 +168,7 @@ func TestParseRequest(t *testing.T) {
|
||||||
"endpoint": "1-2-3-4",
|
"endpoint": "1-2-3-4",
|
||||||
"service": "webs",
|
"service": "webs",
|
||||||
"namespace": "mynamespace",
|
"namespace": "mynamespace",
|
||||||
"typeName": "svc",
|
"typeName": Svc,
|
||||||
"zone": "inter.webs.test",
|
"zone": "inter.webs.test",
|
||||||
}
|
}
|
||||||
for field, expected := range tcs {
|
for field, expected := range tcs {
|
||||||
|
|
Loading…
Add table
Reference in a new issue