coredns/middleware/backend.go
Miek Gieben 27d893cf33 ServiceBackend interface ()
* Add ServiceBackend interface

This adds a ServiceBackend interface that is shared between etcd/etcd3
(later) and kubernetes, leading to a massive reduction in code. When
returning the specific records from their backend.

Fixes 
2016-10-30 15:54:16 +00:00

29 lines
977 B
Go

package middleware
import (
"github.com/miekg/coredns/middleware/etcd/msg"
"github.com/miekg/coredns/request"
"github.com/miekg/dns"
)
// ServiceBackend defines a (dynamic) backend that returns a slice of service definitions.
type ServiceBackend interface {
// Services communitates with the backend to retrieve the service defintion. Exact indicates
// on exact much are that we are allowed to recurs.
Services(state request.Request, exact bool, opt Options) ([]msg.Service, []msg.Service, error)
// Lookup is used to find records else where.
Lookup(state request.Request, name string, typ uint16) (*dns.Msg, error)
// IsNameError return true if err indicated a record not found condition
IsNameError(err error) bool
// Debug returns a string used when returning debug services.
Debug() string
}
// Options are extra options that can be specified for a lookup.
type Options struct {
Debug string // This is a debug query. A query prefixed with debug.o-o
}