# File lib/rudy/cli/machines.rb, line 48
48:       def associate_machines_valid?
49:         @mlist = get_machines
50:         @alist = Rudy::AWS::EC2::Addresses.list || []
51:         @alist_used    = @alist.select { |a|  a.associated? }
52:         @alist_unused  = @alist.select { |a| !a.associated? }
53:         @alist_unused.collect! { |a| a.ipaddress }
54:         @alist_instids = @alist_used.collect { |a| a.instid }
55:         @mlist_static  = @mlist.select do |m| 
56:           @alist_instids.member?(m.instid)
57:         end
58:         
59:         unless @@global.force
60:           unless @mlist_static.empty?
61:             msg = "Some machines already have static IP addresses: #{$/}"
62:             msg << @mlist_static.collect { |m| "#{m.name}: #{m.dns_public}" }.join($/)
63:             raise Rudy::Error, msg 
64:           end
65:         
66:           if !@argv.empty? && @mlist.size > @argv.size
67:             msg = "You supplied #{@argv.size} addresses for #{@mlist.size} "
68:             msg << "machines. Try: rudy --force machines -S #{@argv.join(' ')}"
69:             raise Rudy::Error, msg
70:           end
71:         
72:           if @alist_unused.size > 0 && @alist_unused.size < @mlist.size
73:             msg = "There are only #{@alist_unused.size} available addresses for "
74:             msg << "#{@mlist.size} machines. Try: rudy --force machines -S #{@argv.join(' ')}"
75:             raise Rudy::Error, msg
76:           end
77:         end
78:         
79:         @argv.each do |address|
80:           unless Rudy::AWS::EC2::Addresses.exists?(address)
81:             raise "#{address} is not allocated to you" 
82:           end
83:           if Rudy::AWS::EC2::Addresses.associated?(address)
84:             raise "#{address} is already associated!"
85:           end
86:         end
87:         
88:         @alist_unused = @argv unless @argv.empty? 
89:         
90:         true
91:       end