diff options
Diffstat (limited to 'lib/leap_cli/remote/puppet_plugin.rb')
-rw-r--r-- | lib/leap_cli/remote/puppet_plugin.rb | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/lib/leap_cli/remote/puppet_plugin.rb b/lib/leap_cli/remote/puppet_plugin.rb new file mode 100644 index 0000000..9c41380 --- /dev/null +++ b/lib/leap_cli/remote/puppet_plugin.rb @@ -0,0 +1,66 @@ +# +# these methods are made available in capistrano tasks as 'puppet.method_name' +# (see RemoteCommand::new_capistrano) +# + +module LeapCli; module Remote; module PuppetPlugin + + def apply(options) + run "#{PUPPET_DESTINATION}/bin/puppet_command set_hostname apply #{flagize(options)}" + end + + private + + def flagize(hsh) + hsh.inject([]) {|str, item| + if item[1] === false + str + elsif item[1] === true + str << "--" + item[0].to_s + else + str << "--" + item[0].to_s + " " + item[1].to_s + end + }.join(' ') + end + +end; end; end + + + # def puppet(command = :noop) + # #puppet_cmd = "cd #{puppet_destination} && #{sudo_cmd} #{puppet_command} --modulepath=#{puppet_lib} #{puppet_parameters}" + # puppet_cmd = "cd #{puppet_destination} && #{sudo_cmd} #{puppet_command} #{puppet_parameters}" + # flag = command == :noop ? '--noop' : '' + + # writer = if puppet_stream_output + # SupplyDrop::Writer::Streaming.new(logger) + # else + # SupplyDrop::Writer::Batched.new(logger) + # end + + # writer = SupplyDrop::Writer::File.new(writer, puppet_write_to_file) unless puppet_write_to_file.nil? + + # begin + # exitcode = nil + # run "#{puppet_cmd} #{flag}; echo exitcode:$?" do |channel, stream, data| + # if data =~ /exitcode:(\d+)/ + # exitcode = $1 + # writer.collect_output(channel[:host], "Puppet #{command} complete (#{exitcode_description(exitcode)}).\n") + # else + # writer.collect_output(channel[:host], data) + # end + # end + # ensure + # writer.all_output_collected + # end + # end + + # def exitcode_description(code) + # case code + # when "0" then "no changes" + # when "2" then "changes made" + # when "4" then "failed" + # when "6" then "changes and failures" + # else code + # end + # end + |