summaryrefslogtreecommitdiff
path: root/lib/leap_cli/remote/puppet_plugin.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/leap_cli/remote/puppet_plugin.rb')
-rw-r--r--lib/leap_cli/remote/puppet_plugin.rb66
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
+