lib/chef/knife/ssh.rb in chef-0.10.4 vs lib/chef/knife/ssh.rb in chef-0.10.6.beta.1

- old
+ new

@@ -81,20 +81,27 @@ :description => "Disable host key verification", :boolean => true, :default => false def session + config[:on_error] ||= :skip ssh_error_handler = Proc.new do |server| if config[:manual] node_name = server.host else @action_nodes.each do |n| node_name = n if format_for_display(n)[config[:attribute]] == server.host end end - ui.warn "Failed to connect to #{node_name} -- #{$!.class.name}: #{$!.message}" - $!.backtrace.each { |l| Chef::Log.debug(l) } + case config[:on_error] + when :skip + ui.warn "Failed to connect to #{node_name} -- #{$!.class.name}: #{$!.message}" + $!.backtrace.each { |l| Chef::Log.debug(l) } + when :raise + #Net::SSH::Multi magic to force exception to be re-raised. + throw :go, :raise + end end @session ||= Net::SSH::Multi.start(:concurrent_connections => config[:concurrency], :on_error => ssh_error_handler) end @@ -263,11 +270,11 @@ else [] end.join(" \\; ") end - tmux_name = "'knife ssh #{@name_args[0]}'" + tmux_name = "'knife ssh #{@name_args[0].gsub(/:/,'=')}'" begin server = session.servers_for.first cmd = ["tmux new-session -d -s #{tmux_name}", "-n '#{server.host}'", ssh_dest.call(server), new_window_cmds.call].join(" ") @@ -305,10 +312,18 @@ config[:attribute] = (config[:attribute] || Chef::Config[:knife][:ssh_attribute] || "fqdn").strip end + def csshx + csshx_cmd = "csshX" + session.servers_for.each do |server| + csshx_cmd << " #{server.user ? "#{server.user}@#{server.host}" : server.host}" + end + exec(csshx_cmd) + end + def configure_user config[:ssh_user] = (config[:ssh_user] || Chef::Config[:knife][:ssh_user]) config[:ssh_user].strip! unless config[:ssh_user].nil? end @@ -335,9 +350,11 @@ screen when "tmux" tmux when "macterm" macterm + when "csshx" + csshx else ssh_command(@name_args[1..-1].join(" ")) end session.close