aboutsummaryrefslogtreecommitdiff
path: root/middleware/kubernetes/federation.go
diff options
context:
space:
mode:
Diffstat (limited to 'middleware/kubernetes/federation.go')
-rw-r--r--middleware/kubernetes/federation.go96
1 files changed, 0 insertions, 96 deletions
diff --git a/middleware/kubernetes/federation.go b/middleware/kubernetes/federation.go
deleted file mode 100644
index 4c8d20cfe..000000000
--- a/middleware/kubernetes/federation.go
+++ /dev/null
@@ -1,96 +0,0 @@
-package kubernetes
-
-import (
- "net"
- "strings"
-
- "github.com/coredns/coredns/middleware/etcd/msg"
-)
-
-// Federation holds TODO(...).
-type Federation struct {
- name string
- zone string
-}
-
-const (
- // TODO: Do not hardcode these labels. Pull them out of the API instead.
- //
- // We can get them via ....
- // import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- // metav1.LabelZoneFailureDomain
- // metav1.LabelZoneRegion
- //
- // But importing above breaks coredns with flag collision of 'log_dir'
-
- labelAvailabilityZone = "failure-domain.beta.kubernetes.io/zone"
- labelRegion = "failure-domain.beta.kubernetes.io/region"
-)
-
-// stripFederation removes the federation segment from the segment list, if it
-// matches a configured federation name.
-func (k *Kubernetes) stripFederation(segs []string) (string, []string) {
-
- if len(segs) < 3 {
- return "", segs
- }
- for _, f := range k.Federations {
- if f.name == segs[len(segs)-2] {
- fed := segs[len(segs)-2]
- segs[len(segs)-2] = segs[len(segs)-1]
- segs = segs[:len(segs)-1]
- return fed, segs
- }
- }
- return "", segs
-}
-
-// federationCNAMERecord returns a service record for the requested federated service
-// with the target host in the federated CNAME format which the external DNS provider
-// should be able to resolve
-func (k *Kubernetes) federationCNAMERecord(r recordRequest) msg.Service {
-
- myNodeName := k.localNodeName()
- node, err := k.APIConn.GetNodeByName(myNodeName)
- if err != nil {
- return msg.Service{}
- }
-
- for _, f := range k.Federations {
- if f.name != r.federation {
- continue
- }
- if r.endpoint == "" {
- return msg.Service{
- Key: strings.Join([]string{msg.Path(r.zone, "coredns"), r.podOrSvc, r.federation, r.namespace, r.service}, "/"),
- Host: strings.Join([]string{r.service, r.namespace, r.federation, r.podOrSvc, node.Labels[labelAvailabilityZone], node.Labels[labelRegion], f.zone}, "."),
- }
- }
- return msg.Service{
- Key: strings.Join([]string{msg.Path(r.zone, "coredns"), r.podOrSvc, r.federation, r.namespace, r.service, r.endpoint}, "/"),
- Host: strings.Join([]string{r.endpoint, r.service, r.namespace, r.federation, r.podOrSvc, node.Labels[labelAvailabilityZone], node.Labels[labelRegion], f.zone}, "."),
- }
- }
-
- return msg.Service{}
-}
-
-func (k *Kubernetes) localNodeName() string {
- localIP := k.interfaceAddrsFunc()
- if localIP == nil {
- return ""
- }
-
- // Find endpoint matching localIP
- endpointsList := k.APIConn.EndpointsList()
- for _, ep := range endpointsList.Items {
- for _, eps := range ep.Subsets {
- for _, addr := range eps.Addresses {
- if localIP.Equal(net.ParseIP(addr.IP)) {
- return *addr.NodeName
- }
- }
- }
- }
- return ""
-}