lib/cloudkick/commands/parallel.rb in cloudkick-0.2.1 vs lib/cloudkick/commands/parallel.rb in cloudkick-0.2.2

- old
+ new

@@ -1,21 +1,35 @@ require 'tempfile' module Cloudkick::Command class Pssh < Base def index - unless args.size == 3 - raise CommandFailed, 'usage: cloudkick pssh <username> <output> <command>' + unless args.size == 6 or args.size == 8 + raise CommandFailed, 'usage: cloudkick pssh --query <query> ' \ + '--username <username> ' \ + '--output <output> ' \ + '--command <command>' end + query = extract_option('--query') + username = extract_option('--username') + output = extract_option('--output') + command = extract_option('--command') + file = Tempfile.new('ck') - client.get('nodes').each do |node| - file.puts node.ipaddress + if query + client.get('nodes', query).each do |node| + file.puts node.ipaddress + end + else + client.get('nodes').each do |node| + file.puts node.ipaddress + end end file.flush - exec("pssh -h #{file.path} -l #{@args[0]} -o #{args[1]} #{args[2]}") + exec("pssh -h #{file.path} -l #{username} -o #{output} #{command}") file.close end end class Pscp < Base