summaryrefslogtreecommitdiff
path: root/lib/leap_cli/remote/leap_plugin.rb
diff options
context:
space:
mode:
authorelijah <elijah@riseup.net>2013-04-01 00:04:54 -0700
committerelijah <elijah@riseup.net>2013-04-01 00:04:54 -0700
commitb9a20186350a0315ee7159f2df2b55a47e9f90a4 (patch)
tree845b08feaa723a00d6dc7da26be68471fc4c7e1e /lib/leap_cli/remote/leap_plugin.rb
parentc3f78c9df38f6e4dec94737863dcfcc1f4e60e96 (diff)
remove supply_drop, add support for puppet_command.
Diffstat (limited to 'lib/leap_cli/remote/leap_plugin.rb')
-rw-r--r--lib/leap_cli/remote/leap_plugin.rb67
1 files changed, 67 insertions, 0 deletions
diff --git a/lib/leap_cli/remote/leap_plugin.rb b/lib/leap_cli/remote/leap_plugin.rb
new file mode 100644
index 0000000..2c427e9
--- /dev/null
+++ b/lib/leap_cli/remote/leap_plugin.rb
@@ -0,0 +1,67 @@
+#
+# these methods are made available in capistrano tasks as 'leap.method_name'
+# (see RemoteCommand::new_capistrano)
+#
+
+module LeapCli; module Remote; module LeapPlugin
+
+ def required_packages
+ "puppet ruby-hiera-puppet rsync lsb-release"
+ end
+
+ def log(*args, &block)
+ LeapCli::Util::log(*args, &block)
+ end
+
+ #
+ # creates directories that are owned by root and 700 permissions
+ #
+ def mkdirs(*dirs)
+ raise ArgumentError.new('illegal dir name') if dirs.grep(/[\' ]/).any?
+ run dirs.collect{|dir| "mkdir -m 700 -p #{dir}; "}.join
+ end
+
+ def assert_initialized
+ begin
+ test_initialized_file = "test -f #{INITIALIZED_FILE}"
+ check_required_packages = "! dpkg-query -W --showformat='${Status}\n' #{required_packages} 2>&1 | grep -q -E '(deinstall|no packages)'"
+ run "#{test_initialized_file} && #{check_required_packages}"
+ rescue Capistrano::CommandError => exc
+ LeapCli::Util.bail! do
+ exc.hosts.each do |host|
+ LeapCli::Util.log :error, "running deploy: node not initialized. Run 'leap node init #{host}'", :host => host
+ end
+ end
+ end
+ end
+
+ def mark_initialized
+ run "touch #{INITIALIZED_FILE}"
+ end
+
+ #def mkdir(dir)
+ # run "mkdir -p #{dir}"
+ #end
+
+ #def chown_root(dir)
+ # run "chown root -R #{dir} && chmod -R ag-rwx,u+rwX #{dir}"
+ #end
+
+ #def logrun(cmd)
+ # @streamer ||= LeapCli::Remote::LogStreamer.new
+ # run cmd do |channel, stream, data|
+ # @streamer.collect_output(channel[:host], data)
+ # end
+ #end
+
+# return_code = nil
+# run "something; echo return code: $?" do |channel, stream, data|
+# if data =~ /return code: (\d+)/
+# return_code = $1.to_i
+# else
+# Capistrano::Configuration.default_io_proc.call(channel, stream, data)
+# end
+# end
+# puts "finished with return code: #{return_code}"
+
+end; end; end \ No newline at end of file