11require 'puppet'
22require 'json'
33
4- class PanosTask
5- def initialize
4+ class Puppet ::Util ::TaskHelper
5+ def initialize ( transport_name )
6+ @transport_name = transport_name
7+
68 # work around the fact that bolt (for now, see BOLT-132) is not able to transport additional code from the module
79 # this requires that the panos module is pluginsynced to the node executing the task
810 Puppet . settings . initialize_app_defaults (
@@ -13,18 +15,21 @@ def initialize
1315 $LOAD_PATH. unshift ( Puppet [ :plugindest ] )
1416
1517 unless target
16- puts "Panos task must be run on a proxy"
18+ puts "Task must be run on a proxy"
1719 exit 1
1820 end
1921
22+ Puppet ::Util ::Log . newdestination ( :console )
23+ Puppet [ :log_level ] = 'debug'
24+
2025 add_plugin_paths ( params [ '_installdir' ] )
2126 end
2227
2328 def transport
2429 require 'puppet/resource_api/transport'
25- require ' puppet/transport/panos'
30+ require " puppet/transport/#{ @transport_name } "
2631
27- Puppet ::ResourceApi ::Transport . connect ( 'panos' , credentials )
32+ Puppet ::ResourceApi ::Transport . connect ( @transport_name , credentials )
2833 end
2934
3035 def params
@@ -36,24 +41,7 @@ def target
3641 end
3742
3843 def credentials
39- @credentials ||= if target . key? 'apikey'
40- {
41- host : target [ 'host' ] ,
42- apikey : target [ 'apikey' ]
43- }
44- else
45- {
46- host : target [ 'host' ] ,
47- user : target [ 'user' ] ,
48- password : target [ 'password' ]
49- }
50- end
51-
52- if target . key? 'port'
53- @credentials [ :port ] = target [ 'port' ]
54- end
55-
56- @credentials
44+ @credentials ||= target . each_with_object ( { } ) { |( k , v ) , h | h [ k . to_sym ] = v }
5745 end
5846
5947 private
0 commit comments