Skip to content

Commit a791525

Browse files
committed
fix: requested changes
1 parent c376ed2 commit a791525

5 files changed

Lines changed: 53 additions & 33 deletions

File tree

plugins/logs/dao.go

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import (
66
"fmt"
77
"regexp"
88
"sort"
9-
"strconv"
109
"strings"
1110

1211
log "github.com/sirupsen/logrus"
@@ -95,16 +94,21 @@ func (es *elasticsearch) indexRecord(ctx context.Context, rec record) {
9594
}
9695
}
9796

98-
func (es *elasticsearch) getRawLogs(ctx context.Context, offset, startDate, endDate string, size int, filter string, indices ...string) ([]byte, error) {
99-
parsedOffset, err := strconv.Atoi(offset)
100-
if err != nil {
101-
return nil, fmt.Errorf(`invalid value "%v" for query param "from"`, offset)
102-
}
97+
type logsConfig struct {
98+
Offset int
99+
StartDate string
100+
EndDate string
101+
Size int
102+
Filter string
103+
Indices []string
104+
}
105+
106+
func (es *elasticsearch) getRawLogs(ctx context.Context, logsConfig logsConfig) ([]byte, error) {
103107
switch util.GetVersion() {
104108
case 6:
105-
return es.getRawLogsES6(ctx, parsedOffset, startDate, endDate, size, filter, indices...)
109+
return es.getRawLogsES6(ctx, logsConfig)
106110
default:
107-
return es.getRawLogsES7(ctx, parsedOffset, startDate, endDate, size, filter, indices...)
111+
return es.getRawLogsES7(ctx, logsConfig)
108112
}
109113
}
110114

plugins/logs/dao_es6.go

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,35 +10,35 @@ import (
1010
es6 "gopkg.in/olivere/elastic.v6"
1111
)
1212

13-
func (es *elasticsearch) getRawLogsES6(ctx context.Context, offset int, startDate, endDate string, size int, filter string, indices ...string) ([]byte, error) {
13+
func (es *elasticsearch) getRawLogsES6(ctx context.Context, logsConfig logsConfig) ([]byte, error) {
1414
duration := es6.NewRangeQuery("timestamp").
15-
From(startDate).
16-
To(endDate)
15+
From(logsConfig.StartDate).
16+
To(logsConfig.EndDate)
1717

1818
query := es6.NewBoolQuery().Filter(duration)
1919
// apply category filter
20-
if filter == "search" {
20+
if logsConfig.Filter == "search" {
2121
filters := es6.NewTermQuery("category.keyword", "search")
2222
query.Filter(filters)
23-
} else if filter == "delete" {
23+
} else if logsConfig.Filter == "delete" {
2424
filters := es6.NewMatchQuery("request.method.keyword", "DELETE")
2525
query.Filter(filters)
26-
} else if filter == "success" {
26+
} else if logsConfig.Filter == "success" {
2727
filters := es6.NewRangeQuery("response.code").Gte(200).Lte(299)
2828
query.Filter(filters)
29-
} else if filter == "error" {
29+
} else if logsConfig.Filter == "error" {
3030
filters := es6.NewRangeQuery("response.code").Gte(400)
3131
query.Filter(filters)
3232
} else {
3333
query.Filter(es6.NewMatchAllQuery())
3434
}
3535
// apply index filtering logic
36-
util.GetIndexFilterQueryEs6(query, indices...)
36+
util.GetIndexFilterQueryEs6(query, logsConfig.Filter)
3737

3838
response, err := util.GetClient6().Search(es.indexName).
3939
Query(query).
40-
From(offset).
41-
Size(size).
40+
From(logsConfig.Offset).
41+
Size(logsConfig.Size).
4242
SortWithInfo(es6.SortInfo{Field: "timestamp", UnmappedType: "date", Ascending: false}).
4343
Do(ctx)
4444
if err != nil {
@@ -54,17 +54,17 @@ func (es *elasticsearch) getRawLogsES6(ctx context.Context, offset int, startDat
5454
}
5555
rawIndices, ok := source["indices"]
5656
if !ok {
57-
log.Println(logTag, ": unable to find ", indices, " in log record")
57+
log.Println(logTag, ": unable to find ", logsConfig.Indices, " in log record")
5858
}
5959
logIndices, err := util.ToStringSlice(rawIndices)
6060
if err != nil {
6161
log.Errorln(logTag, ":", err)
6262
continue
6363
}
6464

65-
if len(indices) == 0 {
65+
if len(logsConfig.Indices) == 0 {
6666
hits = append(hits, hit.Source)
67-
} else if util.IsSubset(indices, logIndices) {
67+
} else if util.IsSubset(logsConfig.Indices, logIndices) {
6868
hits = append(hits, hit.Source)
6969
}
7070
}

plugins/logs/dao_es7.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,36 +8,36 @@ import (
88
es7 "github.com/olivere/elastic/v7"
99
)
1010

11-
func (es *elasticsearch) getRawLogsES7(ctx context.Context, offset int, startDate, endDate string, size int, filter string, indices ...string) ([]byte, error) {
11+
func (es *elasticsearch) getRawLogsES7(ctx context.Context, logsConfig logsConfig) ([]byte, error) {
1212
duration := es7.NewRangeQuery("timestamp").
13-
From(startDate).
14-
To(endDate)
13+
From(logsConfig.StartDate).
14+
To(logsConfig.EndDate)
1515

1616
query := es7.NewBoolQuery().Filter(duration)
1717
// apply category filter
18-
if filter == "search" {
18+
if logsConfig.Filter == "search" {
1919
filters := es7.NewTermQuery("category.keyword", "search")
2020
query.Filter(filters)
21-
} else if filter == "delete" {
21+
} else if logsConfig.Filter == "delete" {
2222
filters := es7.NewMatchQuery("request.method.keyword", "DELETE")
2323
query.Filter(filters)
24-
} else if filter == "success" {
24+
} else if logsConfig.Filter == "success" {
2525
filters := es7.NewRangeQuery("response.code").Gte(200).Lte(299)
2626
query.Filter(filters)
27-
} else if filter == "error" {
27+
} else if logsConfig.Filter == "error" {
2828
filters := es7.NewRangeQuery("response.code").Gte(400)
2929
query.Filter(filters)
3030
} else {
3131
query.Filter(es7.NewMatchAllQuery())
3232
}
3333

3434
// apply index filtering logic
35-
util.GetIndexFilterQueryEs7(query, indices...)
35+
util.GetIndexFilterQueryEs7(query, logsConfig.Indices...)
3636

3737
response, err := util.GetClient7().Search(es.indexName).
3838
Query(query).
39-
From(offset).
40-
Size(size).
39+
From(logsConfig.Offset).
40+
Size(logsConfig.Size).
4141
SortWithInfo(es7.SortInfo{Field: "timestamp", UnmappedType: "date", Ascending: false}).
4242
Do(ctx)
4343
if err != nil {

plugins/logs/handlers.go

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package logs
22

33
import (
4+
"fmt"
45
"net/http"
56
"net/url"
67
"strconv"
@@ -91,11 +92,26 @@ func (l *Logs) getLogs() http.HandlerFunc {
9192
offset = "0"
9293
}
9394

95+
parsedOffset, err := strconv.Atoi(offset)
96+
if err != nil {
97+
errMsg := fmt.Errorf(`invalid value "%v" for query param "from"`, offset)
98+
log.Errorln(logTag, ": ", errMsg)
99+
util.WriteBackError(w, err.Error(), http.StatusInternalServerError)
100+
return
101+
}
102+
94103
rangeParams := rangeQueryParams(req.URL.Query())
95104

96105
filter := req.URL.Query().Get("filter")
97106

98-
raw, err := l.es.getRawLogs(req.Context(), offset, rangeParams.StartDate, rangeParams.EndDate, rangeParams.Size, filter, indices...)
107+
raw, err := l.es.getRawLogs(req.Context(), logsConfig{
108+
Offset: parsedOffset,
109+
StartDate: rangeParams.StartDate,
110+
EndDate: rangeParams.EndDate,
111+
Size: rangeParams.Size,
112+
Filter: filter,
113+
Indices: indices,
114+
})
99115
if err != nil {
100116
log.Errorln(logTag, ": error fetching logs :", err)
101117
util.WriteBackError(w, err.Error(), http.StatusInternalServerError)

plugins/logs/service.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package logs
33
import "context"
44

55
type logsService interface {
6-
getRawLogs(ctx context.Context, offset, startDate, endDate string, size int, filter string, indices ...string) ([]byte, error)
6+
getRawLogs(ctx context.Context, logsConfig logsConfig) ([]byte, error)
77
indexRecord(ctx context.Context, r record)
88
rolloverIndexJob(alias string)
99
}

0 commit comments

Comments
 (0)