From 4473b4fca9808748f25d590bb6f97435918920af Mon Sep 17 00:00:00 2001 From: Geno Date: Thu, 15 Feb 2018 15:52:14 +0100 Subject: [PATCH] [BUGFIX] config of filter case of one interface at once --- output/filter/blacklist/blacklist.go | 12 ++++++++---- output/filter/blacklist/blacklist_test.go | 9 +++++++-- output/filter/noowner/noowner.go | 2 +- output/filter/site/site.go | 12 ++++++++---- output/filter/site/site_test.go | 5 ++++- 5 files changed, 28 insertions(+), 12 deletions(-) diff --git a/output/filter/blacklist/blacklist.go b/output/filter/blacklist/blacklist.go index 77c7cdc..9298a88 100644 --- a/output/filter/blacklist/blacklist.go +++ b/output/filter/blacklist/blacklist.go @@ -14,14 +14,18 @@ func init() { } func build(config interface{}) (filter.Filter, error) { - values, ok := config.([]string) + values, ok := config.([]interface{}) if !ok { - return nil, errors.New("invalid configuration, array of strings expected") + return nil, errors.New("invalid configuration, array (of strings) expected") } list := make(blacklist) - for _, nodeid := range values { - list[nodeid] = struct{}{} + for _, value := range values { + if nodeid, ok := value.(string); ok { + list[nodeid] = struct{}{} + } else { + return nil, errors.New("invalid configuration, array of strings expected") + } } return &list, nil } diff --git a/output/filter/blacklist/blacklist_test.go b/output/filter/blacklist/blacklist_test.go index a225389..c40ec0b 100644 --- a/output/filter/blacklist/blacklist_test.go +++ b/output/filter/blacklist/blacklist_test.go @@ -15,15 +15,20 @@ func TestFilterBlacklist(t *testing.T) { filter, err := build(3) assert.Error(err) + filter, err = build([]interface{}{2, "a"}) + assert.Error(err) + // tests with empty list - filter, err = build([]string{}) + filter, err = build([]interface{}{}) + assert.NoError(err) // keep node without nodeid n := filter.Apply(&runtime.Node{Nodeinfo: &data.NodeInfo{}}) assert.NotNil(n) // tests with blacklist - filter, _ = build([]string{"a", "c"}) + filter, err = build([]interface{}{"a", "c"}) + assert.NoError(err) // blacklist contains node with nodeid -> drop it n = filter.Apply(&runtime.Node{Nodeinfo: &data.NodeInfo{NodeID: "a"}}) diff --git a/output/filter/noowner/noowner.go b/output/filter/noowner/noowner.go index b8fe69c..dbc3738 100644 --- a/output/filter/noowner/noowner.go +++ b/output/filter/noowner/noowner.go @@ -11,7 +11,7 @@ import ( type noowner struct{ has bool } func init() { - filter.Register("noowner", build) + filter.Register("no_owner", build) } func build(config interface{}) (filter.Filter, error) { diff --git a/output/filter/site/site.go b/output/filter/site/site.go index 51a35e6..b3b03a3 100644 --- a/output/filter/site/site.go +++ b/output/filter/site/site.go @@ -14,14 +14,18 @@ func init() { } func build(config interface{}) (filter.Filter, error) { - values, ok := config.([]string) + values, ok := config.([]interface{}) if !ok { - return nil, errors.New("invalid configuration, array of strings expected") + return nil, errors.New("invalid configuration, array (of strings) expected") } list := make(sites) - for _, nodeid := range values { - list[nodeid] = struct{}{} + for _, value := range values { + if nodeid, ok := value.(string); ok { + list[nodeid] = struct{}{} + } else { + return nil, errors.New("invalid configuration, array of strings expected") + } } return &list, nil } diff --git a/output/filter/site/site_test.go b/output/filter/site/site_test.go index c442498..8209e81 100644 --- a/output/filter/site/site_test.go +++ b/output/filter/site/site_test.go @@ -15,7 +15,10 @@ func TestFilterSite(t *testing.T) { filter, err := build("ffhb") assert.Error(err) - filter, err = build([]string{"ffhb"}) + filter, err = build([]interface{}{3, "ffhb"}) + assert.Error(err) + + filter, err = build([]interface{}{"ffhb"}) assert.NoError(err) // wronge node