Skip to content

Commit d21490c

Browse files
committed
Support exclude and include
1 parent c100636 commit d21490c

2 files changed

Lines changed: 42 additions & 9 deletions

File tree

src/pkg/ingress/bindings/binding_config.go

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ func getBindingType(u *url.URL) syslog.DrainData {
8787
}
8888

8989
// Parse HTML query parameter into a Set of LogTypes
90-
func NewLogTypeSet(logTypeList string) *syslog.LogTypeSet {
90+
func NewLogTypeSet(logTypeList string, isExclude bool) *syslog.LogTypeSet {
9191
if logTypeList == "" {
9292
set := make(syslog.LogTypeSet)
9393
return &set
@@ -116,15 +116,40 @@ func NewLogTypeSet(logTypeList string) *syslog.LogTypeSet {
116116
t = syslog.CELL
117117
default:
118118
// TODO Log unknown log type
119+
continue
119120
}
120121
set[t] = struct{}{}
121122
}
122123

124+
if isExclude {
125+
// Invert the set
126+
fullSet := make(syslog.LogTypeSet)
127+
allLogTypes := []syslog.LogType{syslog.API, syslog.STG, syslog.RTR, syslog.LGR, syslog.APP, syslog.SSH, syslog.CELL}
128+
for _, t := range allLogTypes {
129+
fullSet[t] = struct{}{}
130+
}
131+
132+
for t := range set {
133+
delete(fullSet, t)
134+
}
135+
return &fullSet
136+
}
137+
123138
return &set
124139
}
125140

126141
func getLogFilter(u *url.URL) *syslog.LogTypeSet {
127-
return NewLogTypeSet(u.Query().Get("include-log-types"))
142+
includeLogTypes := u.Query().Get("include-log-types")
143+
excludeLogTypes := u.Query().Get("exclude-log-types")
144+
145+
if excludeLogTypes != "" && includeLogTypes != "" {
146+
// TODO return errors.New("include-log-types and exclude-log-types can not be used at the same time")
147+
} else if excludeLogTypes != "" {
148+
return NewLogTypeSet(excludeLogTypes, true)
149+
} else if includeLogTypes != "" {
150+
return NewLogTypeSet(includeLogTypes, false)
151+
}
152+
return NewLogTypeSet("", false)
128153
}
129154

130155
func getRemoveMetadataQuery(u *url.URL) string {

src/pkg/ingress/bindings/binding_config_test.go

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -93,18 +93,18 @@ var _ = Describe("Drain Param Config", func() {
9393
{Drain: syslog.Drain{Url: "https://test.org/drain"}},
9494
{Drain: syslog.Drain{Url: "https://test.org/drain?include-log-types=app"}},
9595
{Drain: syslog.Drain{Url: "https://test.org/drain?include-log-types=app,stg,cell"}},
96-
// {Drain: syslog.Drain{Url: "https://test.org/drain?exclude-log-types=rtr,cell,stg"}},
97-
// {Drain: syslog.Drain{Url: "https://test.org/drain?exclude-log-types=rtr"}},
96+
{Drain: syslog.Drain{Url: "https://test.org/drain?exclude-log-types=rtr,cell,stg"}},
97+
{Drain: syslog.Drain{Url: "https://test.org/drain?exclude-log-types=rtr"}},
9898
}
9999
f := newStubFetcher(bs, nil)
100100
wf := bindings.NewDrainParamParser(f, true)
101101

102102
configedBindings, _ := wf.FetchBindings()
103-
Expect(configedBindings[0].LogFilter).To(Equal(bindings.NewLogTypeSet(""))) // Empty map defaults to all types
104-
Expect(configedBindings[1].LogFilter).To(Equal(bindings.NewLogTypeSet("app")))
105-
Expect(configedBindings[2].LogFilter).To(Equal(bindings.NewLogTypeSet("app,stg,cell")))
106-
// Expect(configedBindings[3].LogFilter).To(Equal(bindings.NewLogTypeSet("api,lgr,app,ssh")))
107-
// Expect(configedBindings[4].LogFilter).To(Equal(bindings.NewLogTypeSet("api,stg,lgr,app,ssh,cell")))
103+
Expect(configedBindings[0].LogFilter).To(Equal(NewLogTypeSet())) // Empty map defaults to all types
104+
Expect(configedBindings[1].LogFilter).To(Equal(NewLogTypeSet(syslog.APP)))
105+
Expect(configedBindings[2].LogFilter).To(Equal(NewLogTypeSet(syslog.APP, syslog.STG, syslog.CELL)))
106+
Expect(configedBindings[3].LogFilter).To(Equal(NewLogTypeSet(syslog.API, syslog.LGR, syslog.APP, syslog.SSH)))
107+
Expect(configedBindings[4].LogFilter).To(Equal(NewLogTypeSet(syslog.API, syslog.STG, syslog.LGR, syslog.APP, syslog.SSH, syslog.CELL)))
108108
})
109109

110110
It("sets drain data for old parameter appropriately'", func() {
@@ -170,3 +170,11 @@ func (f *stubFetcher) FetchBindings() ([]syslog.Binding, error) {
170170
func (f *stubFetcher) DrainLimit() int {
171171
return -1
172172
}
173+
174+
func NewLogTypeSet(logTypes ...syslog.LogType) *syslog.LogTypeSet {
175+
set := make(syslog.LogTypeSet, len(logTypes))
176+
for _, t := range logTypes {
177+
set[t] = struct{}{}
178+
}
179+
return &set
180+
}

0 commit comments

Comments
 (0)