summaryrefslogtreecommitdiff
path: root/internal/discovery/discovery.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/discovery/discovery.go')
-rw-r--r--internal/discovery/discovery.go33
1 files changed, 11 insertions, 22 deletions
diff --git a/internal/discovery/discovery.go b/internal/discovery/discovery.go
index a25b136..8bb1e85 100644
--- a/internal/discovery/discovery.go
+++ b/internal/discovery/discovery.go
@@ -9,7 +9,7 @@ import (
"strings"
"time"
- "github.com/mimecast/dtail/internal/io/logger"
+ "github.com/mimecast/dtail/internal/io/dlog"
)
// ServerOrder to specify how to sort the server list.
@@ -24,7 +24,7 @@ const (
type Discovery struct {
// To plug in a custom server discovery module.
module string
- // To specify optional server discovery module options.
+ // To specifiy optional server discovery module options.
options string
// To either filter a server list or to secify an exact list.
server string
@@ -42,7 +42,7 @@ func New(method, server string, order ServerOrder) *Discovery {
if strings.Contains(module, ":") {
s := strings.Split(module, ":")
if len(s) != 2 {
- logger.FatalExit("Unable to parse discovery module", module)
+ dlog.Common.FatalPanic("Unable to parse discovery module", module)
}
module = s[0]
options = s[1]
@@ -72,11 +72,10 @@ func (d *Discovery) initRegex() {
}
regexStr := string(runes)
- logger.Debug("Using filter regex", regexStr)
-
+ dlog.Common.Debug("Using filter regex", regexStr)
regex, err := regexp.Compile(regexStr)
if err != nil {
- logger.FatalExit("Could not compile regex", regexStr, err)
+ dlog.Common.FatalPanic("Could not compile regex", regexStr, err)
}
d.regex = regex
@@ -90,14 +89,12 @@ func (d *Discovery) ServerList() []string {
if d.regex != nil {
servers = d.filterList(servers)
}
-
servers = d.dedupList(servers)
-
if d.order == Shuffle {
servers = d.shuffleList(servers)
}
- logger.Debug("Discovered servers", len(servers), servers)
+ dlog.Common.Debug("Discovered servers", len(servers), servers)
return servers
}
@@ -105,12 +102,10 @@ func (d *Discovery) serverListFromModule() []string {
if d.module != "" {
return d.serverListFromReflectedModule()
}
-
if _, err := os.Stat(d.server); err == nil {
// Appears to be a file name, now try to read from that file.
return d.ServerListFromFILE()
}
-
// Appears to be a list of FQDNs (or a single FQDN)
return d.ServerListFromCOMMA()
}
@@ -120,53 +115,47 @@ func (d *Discovery) serverListFromModule() []string {
// Discovery. Whereas MODULENAME must be a upeprcase string.
func (d *Discovery) serverListFromReflectedModule() []string {
methodName := fmt.Sprintf("ServerListFrom%s", d.module)
-
+ // Now we are reflecting the serve discovery function by it's name.
rt := reflect.TypeOf(d)
reflectedMethod, ok := rt.MethodByName(methodName)
if !ok {
- logger.FatalExit("No such server discovery module", d.module, methodName)
+ dlog.Common.FatalPanic("No such server discovery module", d.module, methodName)
}
-
inputValues := make([]reflect.Value, 1)
// Thist input value is method receiver.
inputValues[0] = reflect.ValueOf(d)
returnValues := reflectedMethod.Func.Call(inputValues)
-
// First return value is server list.
return returnValues[0].Interface().([]string)
}
// Filter server list based on a regexp.
func (d *Discovery) filterList(servers []string) (filtered []string) {
- logger.Debug("Filtering server list")
-
+ dlog.Common.Debug("Filtering server list")
for _, server := range servers {
if d.regex.MatchString(server) {
filtered = append(filtered, server)
}
}
-
return
}
// Deduplicate the server list.
func (d *Discovery) dedupList(servers []string) (deduped []string) {
serverMap := make(map[string]struct{}, len(servers))
-
for _, server := range servers {
if _, ok := serverMap[server]; !ok {
serverMap[server] = struct{}{}
deduped = append(deduped, server)
}
}
-
- logger.Debug("Deduped server list", len(servers), len(deduped))
+ dlog.Common.Debug("Deduped server list", len(servers), len(deduped))
return
}
// Randomly shuffle the server list.
func (d *Discovery) shuffleList(servers []string) []string {
- logger.Debug("Shuffling server list")
+ dlog.Common.Debug("Shuffling server list")
r := rand.New(rand.NewSource(time.Now().Unix()))
shuffled := make([]string, len(servers))