hutils 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/hutils/ltap/splunk_drainer.rb +28 -12
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 083186100632ec210769f19bac9baa35d2353d3d
|
4
|
+
data.tar.gz: 1b43191d7f4711778b2100b4204d3e081522b8a0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a89ffc10b37fda2ce243ba220bc75bf6993a30a2a1fa212fe95fad006153e5f524a9cf99cd7d367fceb7fd999cfc204b2fdcddd6fc9ee4bb0383504335373a94
|
7
|
+
data.tar.gz: 408f6904112389b780cc3b4d2efa695225c4bc486a005b16fa7201c8d6777a59e5c7927c1b26a4552bf379c07c9aded02ce392e407f473c2edc9718b7df7c692
|
@@ -33,7 +33,15 @@ module Hutils::Ltap
|
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
|
-
|
36
|
+
messages = []
|
37
|
+
loop do
|
38
|
+
new_messages = get_job_results(messages.count)
|
39
|
+
messages += new_messages
|
40
|
+
break if new_messages.count < MAX_RESULTS_PAGE
|
41
|
+
end
|
42
|
+
|
43
|
+
# give oldest first by default
|
44
|
+
messages.reverse
|
37
45
|
end
|
38
46
|
|
39
47
|
def cancel_job
|
@@ -50,12 +58,15 @@ module Hutils::Ltap
|
|
50
58
|
|
51
59
|
private
|
52
60
|
|
61
|
+
MAX_RESULTS_PAGE = 100
|
62
|
+
|
53
63
|
def create_job(query)
|
54
64
|
resp = @api.post(
|
55
65
|
path: "/servicesNS/#{@user}/search/search/jobs",
|
56
66
|
expects: 201,
|
57
67
|
body: URI.encode_www_form({
|
58
68
|
earliest_time: @earliest.iso8601,
|
69
|
+
max_count: 10000,
|
59
70
|
output_mode: "json",
|
60
71
|
search: "search #{query}"
|
61
72
|
})
|
@@ -81,19 +92,19 @@ module Hutils::Ltap
|
|
81
92
|
debug("finalized")
|
82
93
|
end
|
83
94
|
|
84
|
-
def get_job_results
|
95
|
+
def get_job_results(offset)
|
85
96
|
# get results as CSV because the JSON version just mixes everything together
|
86
97
|
# into a giant difficult-to-use blob
|
87
98
|
resp = @api.get(
|
88
99
|
path: "/servicesNS/#{@user}/search/search/jobs/#{@job_id}/results",
|
89
100
|
# 204 if no results available
|
90
101
|
expects: [200, 204],
|
91
|
-
|
102
|
+
query: {
|
92
103
|
action: "finalize",
|
93
|
-
|
94
|
-
|
104
|
+
count: MAX_RESULTS_PAGE,
|
105
|
+
offset: offset,
|
95
106
|
output_mode: "csv"
|
96
|
-
}
|
107
|
+
}
|
97
108
|
)
|
98
109
|
|
99
110
|
return [] if resp.status == 204
|
@@ -104,7 +115,7 @@ module Hutils::Ltap
|
|
104
115
|
time_field = rows[0].index("_time") || raise("no _time field detected in Splunk response")
|
105
116
|
|
106
117
|
# skip the first line as its used for CSV headers
|
107
|
-
rows[1..-1].
|
118
|
+
messages = rows[1..-1].
|
108
119
|
map { |l| [l[raw_field], l[time_field]] }.
|
109
120
|
# 2014-08-15T19:01:15.476590+00:00 54.197.117.24 local0.notice
|
110
121
|
# api-web-1[23399]: - api.108080@heroku.com ...
|
@@ -112,9 +123,10 @@ module Hutils::Ltap
|
|
112
123
|
map { |l, t| [l.strip, t] }.
|
113
124
|
# format timestamps consistently (+00:00 --> Z)
|
114
125
|
map { |l, t| [l, Time.parse(t).getutc.iso8601] }.
|
115
|
-
map { |l, t| @timestamps ? "#{t}: #{l}" : l }
|
116
|
-
|
117
|
-
|
126
|
+
map { |l, t| @timestamps ? "#{t}: #{l}" : l }
|
127
|
+
|
128
|
+
debug("fetch results offset: #{offset}")
|
129
|
+
messages
|
118
130
|
end
|
119
131
|
|
120
132
|
def job_finished?
|
@@ -126,8 +138,12 @@ module Hutils::Ltap
|
|
126
138
|
})
|
127
139
|
)
|
128
140
|
# Splunk may not be winning any awards for cleanest API anytime soon
|
129
|
-
|
130
|
-
|
141
|
+
data = JSON.parse(resp.body)["entry"][0]["content"]
|
142
|
+
state = data["dispatchState"]
|
143
|
+
count, duration, state, ttl =
|
144
|
+
data.values_at("resultCount", "runDuration", "dispatchState", "ttl")
|
145
|
+
debug("result_count: #{count} run_duration: #{duration} " +
|
146
|
+
"state: #{state} ttl: #{ttl}")
|
131
147
|
state == "DONE"
|
132
148
|
end
|
133
149
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hutils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brandur
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-09-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: excon
|