palo_alto 0.1.5 → 0.1.6
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/palo_alto/config.rb +21 -15
- data/lib/palo_alto/version.rb +1 -1
- data/lib/palo_alto.rb +36 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e727fd699e499c9c7cdf0f445f1f83dc6b39721595060eb40f8ca686742f76fe
|
4
|
+
data.tar.gz: 538f05942d1bebd82c67c79749cf4cca51c57d3f56d6acbe6c8765eccd0abaca
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6e02483ec9f3e9860d2a248b043e30f8da48a89c7385feee667fffdea51abfaced43db81a487ba2bdf79b0c396310baf65f0b30c2132a7e1486e9e5ba4fc09f8
|
7
|
+
data.tar.gz: 1be23db7b31ed050c9fea102f2ba3007b916572a0f1b6d9b25e94bc1ebb09b923a6f938bc31c9b165c057cc8af984aa245266de71afb5cb20ac2890b167443d2
|
data/lib/palo_alto/config.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# generated: 2021-
|
1
|
+
# generated: 2021-10-19 00:56:02 +0200
|
2
2
|
require 'openssl'
|
3
3
|
require 'nokogiri'
|
4
4
|
|
@@ -425,7 +425,7 @@ module PaloAlto
|
|
425
425
|
start_time=Time.now
|
426
426
|
result = self.parent_instance.dup.create!.clear!.external_set(data.xpath('//response/result').first)
|
427
427
|
if XML.debug.include?(:statistics)
|
428
|
-
|
428
|
+
warn "Elapsed for parsing #{result.length} results: #{Time.now-start_time} seconds"
|
429
429
|
end
|
430
430
|
result
|
431
431
|
end
|
@@ -473,7 +473,7 @@ module PaloAlto
|
|
473
473
|
self
|
474
474
|
end.tap do
|
475
475
|
if XML.debug.include?(:statistics)
|
476
|
-
|
476
|
+
warn "Elapsed for parsing: #{Time.now-start_time} seconds"
|
477
477
|
end
|
478
478
|
end
|
479
479
|
end
|
@@ -531,9 +531,9 @@ module PaloAlto
|
|
531
531
|
when 'bool'
|
532
532
|
return true if ['yes', true].include?(value)
|
533
533
|
return false if ['no', false].include?(value)
|
534
|
-
raise ArgumentError,
|
534
|
+
raise ArgumentError, "Not bool: #{value.inspect}"
|
535
535
|
when 'string', 'ipdiscontmask', 'iprangespec', 'ipspec', 'rangelistspec'
|
536
|
-
raise(ArgumentError,
|
536
|
+
raise(ArgumentError, "Not string: #{value.inspect}") unless value.is_a?(String)
|
537
537
|
if prop_arr['regex']
|
538
538
|
raise ArgumentError, "Not matching regex: #{value.inspect} (#{prop_arr["regex"].inspect})" unless value.match(prop_arr["regex"])
|
539
539
|
end
|
@@ -667,28 +667,34 @@ module PaloAlto
|
|
667
667
|
elsif @external_values.has_key?(prop)
|
668
668
|
return @external_values[prop]
|
669
669
|
elsif my_prop.has_key?("default") && include_defaults
|
670
|
-
return
|
670
|
+
return enforce_types(my_prop, my_prop['default'])
|
671
671
|
else
|
672
672
|
return nil
|
673
673
|
end
|
674
674
|
end
|
675
675
|
|
676
|
-
def
|
677
|
-
|
676
|
+
def enforce_types(prop_arr, values)
|
677
|
+
return if values.nil?
|
678
678
|
|
679
|
-
if has_multiple_values? &&
|
680
|
-
|
679
|
+
if has_multiple_values? && values.is_a?(String)
|
680
|
+
values = values.split(/\s+/)
|
681
681
|
end
|
682
682
|
|
683
|
-
if
|
684
|
-
|
685
|
-
elsif
|
686
|
-
|
683
|
+
if values.is_a?(Array) && has_multiple_values?
|
684
|
+
values.map{|v| enforce_type(prop_arr, v)}
|
685
|
+
elsif !has_multiple_values?
|
686
|
+
enforce_type(prop_arr, values)
|
687
687
|
else
|
688
|
-
|
688
|
+
raise(ArgumentError, 'Needs to be Array but is not, or vice versa')
|
689
689
|
end
|
690
690
|
end
|
691
691
|
|
692
|
+
def prop_set(prop, value)
|
693
|
+
my_prop = self.class.props[prop] or raise(InternalErrorException, "Unknown attribute for #{self.class}: #{prop}")
|
694
|
+
|
695
|
+
@values[prop] = enforce_types(my_prop, value)
|
696
|
+
end
|
697
|
+
|
692
698
|
def to_xml(changed_only:, full_tree:, include_root: )
|
693
699
|
builder = Nokogiri::XML::Builder.new{|xml|
|
694
700
|
xml.send(self._section, (self.selector rescue nil)) {
|
data/lib/palo_alto/version.rb
CHANGED
data/lib/palo_alto.rb
CHANGED
@@ -213,12 +213,15 @@ module PaloAlto
|
|
213
213
|
end
|
214
214
|
end
|
215
215
|
|
216
|
-
def commit!(all: false)
|
216
|
+
def commit!(all: false, device_groups: nil, wait_for_completion: true)
|
217
|
+
return nil if device_groups.is_a?(Array) && device_groups.empty?
|
218
|
+
|
217
219
|
op = if all
|
218
220
|
'commit'
|
219
221
|
else
|
220
222
|
{ commit: { partial: [
|
221
223
|
{ 'admin': [XML.username] },
|
224
|
+
device_groups ? {'device-group': device_groups } : nil,
|
222
225
|
'no-template',
|
223
226
|
'no-template-stack',
|
224
227
|
'no-log-collector',
|
@@ -227,9 +230,39 @@ module PaloAlto
|
|
227
230
|
'no-wildfire-appliance-cluster',
|
228
231
|
{ 'device-and-network': 'excluded' },
|
229
232
|
{ 'shared-object': 'excluded' }
|
230
|
-
] } }
|
233
|
+
].compact } }
|
231
234
|
end
|
232
|
-
Op.new.execute(op)
|
235
|
+
Op.new.execute(op).tap do |result|
|
236
|
+
if wait_for_completion
|
237
|
+
job_id = result.at_xpath('response/result/job')&.text
|
238
|
+
wait_for_job_completion(job_id) if job_id
|
239
|
+
end
|
240
|
+
end
|
241
|
+
end
|
242
|
+
|
243
|
+
def full_commit_required?
|
244
|
+
result = Op.new.execute({check: 'full-commit-required'})
|
245
|
+
return true unless result.at_xpath('response/result').text == 'no'
|
246
|
+
|
247
|
+
false
|
248
|
+
end
|
249
|
+
|
250
|
+
def check_for_changes(usernames: [XML.username])
|
251
|
+
result = Op.new.execute({show: {config: {list: {'change-summary': {partial: {admin: usernames}}}}}})
|
252
|
+
result.xpath('response/result/summary/device-group/member').map(&:inner_text)
|
253
|
+
end
|
254
|
+
|
255
|
+
def wait_for_job_completion(job_id, wait: 5, timeout: 300)
|
256
|
+
cmd = {show: {jobs: {id: job_id}}}
|
257
|
+
start = Time.now
|
258
|
+
begin
|
259
|
+
result = Op.new.execute(cmd)
|
260
|
+
unless result.at_xpath('response/result/job/status')&.text=='ACT'
|
261
|
+
return result
|
262
|
+
end
|
263
|
+
sleep wait
|
264
|
+
end while start+timeout > Time.now
|
265
|
+
return false
|
233
266
|
end
|
234
267
|
|
235
268
|
def revert!(all: false)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: palo_alto
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sebastian Roesner
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-10-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|