palo_alto 0.3.2 → 0.5.0
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/CHANGELOG.md +2 -0
- data/README.md +2 -0
- data/examples/test_op.rb +2 -0
- data/lib/palo_alto/config.rb +106083 -54589
- data/lib/palo_alto/log.rb +27 -13
- data/lib/palo_alto/op.rb +5231 -718
- data/lib/palo_alto/version.rb +1 -1
- data/lib/palo_alto.rb +61 -21
- data/palo_alto.gemspec +1 -1
- metadata +3 -3
data/lib/palo_alto/log.rb
CHANGED
@@ -12,7 +12,7 @@ module PaloAlto
|
|
12
12
|
class Log < Enumerator
|
13
13
|
def initialize(client:, query:, log_type:, nlogs: 20, dir: :backward, show_detail: false, days: 7) # rubocop:disable Metrics/MethodLength,Metrics/ParameterLists
|
14
14
|
@client = client
|
15
|
-
|
15
|
+
@log_query_payload = {
|
16
16
|
type: 'log',
|
17
17
|
'log-type': log_type,
|
18
18
|
nlogs: nlogs,
|
@@ -22,15 +22,22 @@ module PaloAlto
|
|
22
22
|
}
|
23
23
|
|
24
24
|
if days
|
25
|
-
|
25
|
+
@log_query_payload[:query] += " AND (receive_time geq '#{(Time.now - days * 3600 * 24).strftime('%Y/%m/%d %H:%M:%S')}')"
|
26
26
|
end
|
27
27
|
|
28
|
-
|
28
|
+
run_query
|
29
|
+
|
30
|
+
@first_result = fetch_result
|
31
|
+
super
|
32
|
+
end
|
33
|
+
|
34
|
+
def run_query
|
35
|
+
result = @client.execute(@log_query_payload)
|
29
36
|
@job_id = result.at_xpath('response/result/job').text
|
37
|
+
warn "#{@client.host} #{Time.now}: Got job id #{@job_id} for log query"
|
38
|
+
|
30
39
|
@count = nil
|
31
40
|
@skip = 0
|
32
|
-
@first_result = fetch_result
|
33
|
-
super
|
34
41
|
end
|
35
42
|
|
36
43
|
def restore_first
|
@@ -46,17 +53,24 @@ module PaloAlto
|
|
46
53
|
def fetch_result # rubocop:disable Metrics/MethodLength
|
47
54
|
return nil if @count && @skip == @count
|
48
55
|
|
49
|
-
payload = {
|
50
|
-
type: 'log',
|
51
|
-
action: 'get',
|
52
|
-
'job-id': @job_id,
|
53
|
-
skip: @skip
|
54
|
-
}
|
55
|
-
|
56
56
|
i = 0
|
57
57
|
loop do
|
58
58
|
sleep 0.5 if i.positive?
|
59
|
-
|
59
|
+
begin
|
60
|
+
payload = {
|
61
|
+
type: 'log',
|
62
|
+
action: 'get',
|
63
|
+
'job-id': @job_id,
|
64
|
+
skip: @skip
|
65
|
+
}
|
66
|
+
@current_result = @client.execute(payload)
|
67
|
+
rescue PaloAlto::UnknownErrorException => e
|
68
|
+
if e.message == 'Query timed out'
|
69
|
+
warn 'Retrying log query'
|
70
|
+
run_query
|
71
|
+
retry
|
72
|
+
end
|
73
|
+
end
|
60
74
|
i += 1
|
61
75
|
break if @current_result.at_xpath('response/result/job/status').text == 'FIN'
|
62
76
|
end
|