Sha256: df4ebe661050a4bd93ded421cb3452fe861180f99034b6a5e9796f30e120d2df

Contents?: true

Size: 1.03 KB

Versions: 1

Compression:

Stored size: 1.03 KB

Contents

require 'tempfile'

module Cloudkick::Command
  class Pssh < Base
    def index
      unless args.size % 2 == 1 and args.size <= 5
        raise CommandFailed, 'usage: cloudkick pssh --query <query> ' \
        '<command> ' \
        '[--username <username>]'
      end

      query = extract_option('--query')
      username = extract_option('--username')
      command = args.last.strip.downcase rescue nil
      
      file = Tempfile.new('ck')

      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
      begin
        if username
          system("pssh -i -h #{file.path} -l #{username} '#{command}'")
        else
          system("pssh -i -h #{file.path} '#{command}'")
        end
      rescue
        raise CommandFailed, 'cloudkick: command not found: pssh'
      end
      file.close
    end
  end

  class Pscp < Base
    def index
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
cloudkick-0.2.13 lib/cloudkick/commands/parallel.rb