rudy 0.9.1 → 0.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGES.txt +32 -17
- data/README.rdoc +74 -40
- data/bin/rudy +66 -10
- data/bin/rudy-ec2 +3 -1
- data/examples/authorize.rb +15 -0
- data/examples/gem-test.rb +11 -5
- data/examples/solaris.rb +35 -0
- data/examples/windows.rb +101 -0
- data/lib/rudy.rb +7 -1
- data/lib/rudy/aws.rb +2 -2
- data/lib/rudy/aws/ec2.rb +29 -22
- data/lib/rudy/aws/ec2/group.rb +1 -1
- data/lib/rudy/aws/ec2/image.rb +1 -29
- data/lib/rudy/aws/ec2/instance.rb +4 -32
- data/lib/rudy/aws/ec2/keypair.rb +1 -6
- data/lib/rudy/aws/ec2/snapshot.rb +2 -20
- data/lib/rudy/aws/ec2/volume.rb +11 -19
- data/lib/rudy/aws/ec2/zone.rb +1 -6
- data/lib/rudy/aws/sdb.rb +1 -1
- data/lib/rudy/cli/aws/ec2/addresses.rb +4 -10
- data/lib/rudy/cli/aws/ec2/groups.rb +0 -1
- data/lib/rudy/cli/aws/ec2/images.rb +1 -4
- data/lib/rudy/cli/aws/ec2/info.rb +63 -0
- data/lib/rudy/cli/aws/ec2/instances.rb +3 -5
- data/lib/rudy/cli/aws/ec2/keypairs.rb +3 -5
- data/lib/rudy/cli/aws/ec2/snapshots.rb +2 -6
- data/lib/rudy/cli/aws/ec2/zones.rb +2 -4
- data/lib/rudy/cli/backups.rb +20 -9
- data/lib/rudy/cli/base.rb +60 -3
- data/lib/rudy/cli/candy.rb +1 -1
- data/lib/rudy/cli/disks.rb +65 -7
- data/lib/rudy/cli/execbase.rb +0 -2
- data/lib/rudy/cli/images.rb +97 -0
- data/lib/rudy/cli/info.rb +48 -0
- data/lib/rudy/cli/keypairs.rb +43 -0
- data/lib/rudy/cli/machines.rb +41 -36
- data/lib/rudy/cli/networks.rb +68 -0
- data/lib/rudy/cli/routines.rb +3 -10
- data/lib/rudy/config/objects.rb +0 -1
- data/lib/rudy/disks.rb +4 -0
- data/lib/rudy/global.rb +1 -1
- data/lib/rudy/huxtable.rb +9 -3
- data/lib/rudy/machines.rb +1 -1
- data/lib/rudy/metadata.rb +4 -1
- data/lib/rudy/metadata/backup.rb +2 -2
- data/lib/rudy/metadata/disk.rb +7 -4
- data/lib/rudy/metadata/machine.rb +66 -2
- data/lib/rudy/routines.rb +2 -1
- data/lib/rudy/routines/base.rb +4 -157
- data/lib/rudy/routines/handlers/base.rb +6 -3
- data/lib/rudy/routines/handlers/disks.rb +127 -42
- data/lib/rudy/routines/handlers/group.rb +45 -10
- data/lib/rudy/routines/handlers/host.rb +16 -10
- data/lib/rudy/routines/handlers/keypair.rb +26 -10
- data/lib/rudy/routines/handlers/rye.rb +171 -0
- data/lib/rudy/routines/handlers/script.rb +2 -1
- data/lib/rudy/routines/passthrough.rb +2 -2
- data/lib/rudy/routines/reboot.rb +2 -2
- data/lib/rudy/routines/shutdown.rb +2 -2
- data/lib/rudy/routines/startup.rb +4 -2
- data/rudy.gemspec +17 -10
- data/tryouts/10_require_time/10_rudy_tryouts.rb +1 -1
- data/tryouts/12_config/20_defaults_tryouts.rb +1 -1
- data/tryouts/12_config/40_machines_tryouts.rb +1 -1
- data/tryouts/15_huxtable/20_user_tryouts.rb +1 -1
- data/tryouts/25_ec2/10_keypairs_tryouts.rb +1 -0
- data/tryouts/30_metadata/10_include_tryouts.rb +1 -1
- data/tryouts/30_metadata/13_object_tryouts.rb +4 -0
- data/tryouts/30_metadata/50_disk_tryouts.rb +4 -2
- data/tryouts/30_metadata/51_disk_digest_tryouts.rb +1 -1
- data/tryouts/30_metadata/53_disk_list_tryouts.rb +2 -1
- data/tryouts/30_metadata/56_disk_volume_tryouts.rb +1 -1
- data/tryouts/30_metadata/60_backup_tryouts.rb +4 -2
- data/tryouts/30_metadata/63_backup_list_tryouts.rb +1 -1
- data/tryouts/30_metadata/64_backup_disk_tryouts.rb +3 -1
- data/tryouts/30_metadata/66_backup_snapshot_tryouts.rb +1 -1
- data/tryouts/30_metadata/70_machine_tryouts.rb +5 -2
- data/tryouts/30_metadata/73_machine_list_tryouts.rb +1 -1
- data/tryouts/30_metadata/76_machine_instance_tryouts.rb +15 -3
- data/tryouts/30_metadata/77_machines_tryouts.rb +1 -1
- data/tryouts/40_routines/10_keypair_handler_tryouts.rb +6 -5
- data/tryouts/40_routines/11_group_handler_tryouts.rb +1 -1
- metadata +14 -7
- data/lib/rudy/cli/status.rb +0 -60
data/examples/solaris.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
# Rudy Solaris Machines
|
2
|
+
#
|
3
|
+
# This configuration is used to
|
4
|
+
# test solaris instance support.
|
5
|
+
|
6
|
+
|
7
|
+
defaults do
|
8
|
+
color true
|
9
|
+
environment :test
|
10
|
+
role :solaris
|
11
|
+
end
|
12
|
+
|
13
|
+
machines do
|
14
|
+
region :'us-east-1' do
|
15
|
+
ami 'ami-8f30d1e6' # OpenSolaris 2009.06 32-bit (US)
|
16
|
+
end
|
17
|
+
region :'eu-west-1' do
|
18
|
+
ami 'ami-2381a957' # OpenSolaris 2009.06 32-bit (EU)
|
19
|
+
end
|
20
|
+
env :test do
|
21
|
+
role :solaris do
|
22
|
+
user :root
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
routines do
|
28
|
+
|
29
|
+
uname do
|
30
|
+
remote :root do
|
31
|
+
uname :a
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
data/examples/windows.rb
ADDED
@@ -0,0 +1,101 @@
|
|
1
|
+
# Rudy Windows Machines
|
2
|
+
#
|
3
|
+
# This configuration is used to
|
4
|
+
# test windows instance support.
|
5
|
+
|
6
|
+
|
7
|
+
defaults do
|
8
|
+
color true
|
9
|
+
environment :test
|
10
|
+
role :windows
|
11
|
+
zone :'eu-west-1b'
|
12
|
+
bucket 'rudy-ami-eu'
|
13
|
+
end
|
14
|
+
|
15
|
+
machines do
|
16
|
+
region :'us-east-1' do
|
17
|
+
ami 'ami-de4daab7' # Amazon Windows Server 2003 (US)
|
18
|
+
size 'm1.small'
|
19
|
+
end
|
20
|
+
region :'eu-west-1' do
|
21
|
+
ami 'ami-8696bef2' # Rudy Windows 2009-08-24 (EU)
|
22
|
+
end
|
23
|
+
env :test do
|
24
|
+
role :windows do
|
25
|
+
os :windows
|
26
|
+
user :Administrator
|
27
|
+
disks do
|
28
|
+
path "F:" do
|
29
|
+
size 1
|
30
|
+
device 'xvdf'
|
31
|
+
fstype 'ntfs'
|
32
|
+
end
|
33
|
+
path "E:" do
|
34
|
+
size 2
|
35
|
+
device 'xvde'
|
36
|
+
end
|
37
|
+
path 'L:' do
|
38
|
+
size 3
|
39
|
+
device 'xvdl'
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
|
47
|
+
commands do
|
48
|
+
allow :rm
|
49
|
+
end
|
50
|
+
|
51
|
+
routines do
|
52
|
+
|
53
|
+
create_disks do
|
54
|
+
disks do
|
55
|
+
create "L:"
|
56
|
+
#create "F:"
|
57
|
+
#create "E:"
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
|
62
|
+
shutdown do
|
63
|
+
disks do
|
64
|
+
destroy "L:"
|
65
|
+
#destroy "F:"
|
66
|
+
#destroy "E:"
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
70
|
+
|
71
|
+
|
72
|
+
upload_config do
|
73
|
+
remote :root do
|
74
|
+
puts "Uploading rudy config"
|
75
|
+
home = guess_user_home
|
76
|
+
mkdir :p, "#{home}/.rudy", "#{home}/.ssh", ".ssh"
|
77
|
+
disable_safe_mode
|
78
|
+
file_upload '~/.rudy/config', "#{home}/.rudy/config"
|
79
|
+
puts "Uploading keypair"
|
80
|
+
file_upload '~/.ssh/id_rsa', '~/.ssh/key-eu-west-1b-test-windows', "#{home}/.ssh/"
|
81
|
+
file_upload '~/.ssh/id_rsa', '~/.ssh/key-eu-west-1b-test-windows', ".ssh/"
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|
86
|
+
|
87
|
+
|
88
|
+
__END__
|
89
|
+
|
90
|
+
* diskpart script example
|
91
|
+
* http://social.technet.microsoft.com/Forums/en-US/winserversetup/thread/2cfbaae1-6e33-4197-bb71-63434a34eb3c
|
92
|
+
* http://technet.microsoft.com/en-us/library/cc766465(WS.10).aspx
|
93
|
+
|
94
|
+
* format docs
|
95
|
+
* http://www.computerhope.com/formathl.htm
|
96
|
+
|
97
|
+
* Securing Remote Desktop with copSSH
|
98
|
+
* http://www.teamhackaday.com/2008/04/23/securing-windows-remote-desktop-with-copssh/
|
99
|
+
|
100
|
+
* Windows SSH
|
101
|
+
* http://www.windowsnetworking.com/articles_tutorials/install-SSH-Server-Windows-Server-2008.html
|
data/lib/rudy.rb
CHANGED
@@ -42,7 +42,7 @@ module Rudy
|
|
42
42
|
unless defined?(MAJOR)
|
43
43
|
MAJOR = 0.freeze
|
44
44
|
MINOR = 9.freeze
|
45
|
-
TINY =
|
45
|
+
TINY = 2.freeze
|
46
46
|
end
|
47
47
|
def self.to_s; [MAJOR, MINOR, TINY].join('.'); end
|
48
48
|
def self.to_f; self.to_s.to_f; end
|
@@ -72,6 +72,12 @@ module Rudy
|
|
72
72
|
DEFAULT_EC2_HOST = "ec2.amazonaws.com"
|
73
73
|
DEFAULT_EC2_PORT = 443
|
74
74
|
|
75
|
+
DEFAULT_WINDOWS_FS = 'ntfs'
|
76
|
+
DEFAULT_LINUX_FS = 'ext3'
|
77
|
+
|
78
|
+
DEFAULT_WINDOWS_DEVICE = 'xvdf'
|
79
|
+
DEFAULT_LINUX_DEVICE = '/dev/sdh'
|
80
|
+
|
75
81
|
MAX_INSTANCES = 5.freeze
|
76
82
|
|
77
83
|
ID_MAP = {
|
data/lib/rudy/aws.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
|
2
2
|
|
3
|
-
require '
|
3
|
+
require 'AWS' # amazon-ec2 gem
|
4
4
|
|
5
5
|
|
6
6
|
module Rudy
|
@@ -27,7 +27,7 @@ module Rudy
|
|
27
27
|
|
28
28
|
Rudy::Utils.require_glob(RUDY_LIB, 'rudy', 'aws', '{ec2,s3,sdb}', "*.rb")
|
29
29
|
|
30
|
-
class Error < ::
|
30
|
+
class Error < ::AWS::Error; end
|
31
31
|
end
|
32
32
|
|
33
33
|
end
|
data/lib/rudy/aws/ec2.rb
CHANGED
@@ -3,6 +3,8 @@ module Rudy; module AWS
|
|
3
3
|
module EC2
|
4
4
|
# include Rudy::Huxtable
|
5
5
|
|
6
|
+
@@mutex = Mutex.new
|
7
|
+
|
6
8
|
def self.connect(access_key=nil, secret_key=nil, region=nil, logger=nil)
|
7
9
|
|
8
10
|
if region
|
@@ -15,7 +17,7 @@ module Rudy; module AWS
|
|
15
17
|
host ||= DEFAULT_EC2_HOST
|
16
18
|
port ||= DEFAULT_EC2_PORT
|
17
19
|
|
18
|
-
@@ec2 = ::EC2::Base.new(:port => port, :server=> host, :access_key_id => access_key, :secret_access_key => secret_key)
|
20
|
+
@@ec2 = ::AWS::EC2::Base.new(:port => port, :server=> host, :access_key_id => access_key, :secret_access_key => secret_key)
|
19
21
|
@@logger = logger
|
20
22
|
end
|
21
23
|
|
@@ -28,31 +30,36 @@ module Rudy; module AWS
|
|
28
30
|
# Returns the return value from the request is returned untouched
|
29
31
|
# or the default value on error or if the request returned nil.
|
30
32
|
def self.execute_request(default=nil, timeout=nil, &request)
|
31
|
-
timeout ||=
|
33
|
+
timeout ||= 30
|
32
34
|
raise "No block provided" unless request
|
33
35
|
response = nil
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
raise Rudy::AWS::Error, ex.message
|
36
|
+
@@mutex.synchronize {
|
37
|
+
begin
|
38
|
+
|
39
|
+
Timeout::timeout(timeout) do
|
40
|
+
response = request.call
|
41
|
+
end
|
41
42
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
43
|
+
# Raise the EC2 exceptions
|
44
|
+
rescue ::AWS::Error, ::AWS::InvalidInstanceIDMalformed => ex
|
45
|
+
raise Rudy::AWS::Error, ex.message
|
46
|
+
|
47
|
+
# NOTE: The InternalError is returned for non-existent volume IDs.
|
48
|
+
# It's probably a bug so we're ignoring it -- Dave.
|
49
|
+
rescue ::AWS::InternalError => ex
|
50
|
+
raise Rudy::AWS::Error, ex.message
|
46
51
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
52
|
+
rescue Timeout::Error => ex
|
53
|
+
STDERR.puts "Timeout (#{timeout}): #{ex.message}!"
|
54
|
+
rescue SocketError => ex
|
55
|
+
#STDERR.puts ex.message
|
56
|
+
#STDERR.puts ex.backtrace
|
57
|
+
raise SocketError, "Check your Internets!" unless @@global.offline
|
58
|
+
ensure
|
59
|
+
response ||= default
|
60
|
+
end
|
61
|
+
sleep 0.1 # defeat race conditions
|
62
|
+
}
|
56
63
|
response
|
57
64
|
end
|
58
65
|
|
data/lib/rudy/aws/ec2/group.rb
CHANGED
data/lib/rudy/aws/ec2/image.rb
CHANGED
@@ -13,37 +13,9 @@ module Rudy::AWS
|
|
13
13
|
field :visibility
|
14
14
|
field :location
|
15
15
|
field :kind
|
16
|
-
|
17
|
-
def liner_note
|
18
|
-
info = @location
|
19
|
-
# Highlight "debian-5" in /dir/debian-5.manifest.xml
|
20
|
-
#info = info.split(/\//)
|
21
|
-
#info[-1].gsub!(/(.+?)((\.img)?\.manifest\.xml)/) { |m,n| ($1 || "").bright << $2 }
|
22
|
-
#info = info.join('/')
|
23
|
-
"%s %-6s (%s)" % [self.awsid.bright, self.arch, info]
|
24
|
-
end
|
25
16
|
|
26
17
|
def to_s(with_title=false)
|
27
|
-
|
28
|
-
lines << liner_note
|
29
|
-
#if self.available?
|
30
|
-
# p = public? ? "public" : "private"
|
31
|
-
# k, r = @aki || 'aki-unknown', @ari || 'ari-unknown'
|
32
|
-
# lines << @@sformat % %w{arch owner aki ari visibility} if with_title
|
33
|
-
# lines << @@sformat % [@arch, @owner, k, r, p]
|
34
|
-
#end
|
35
|
-
lines.join($/)
|
36
|
-
end
|
37
|
-
|
38
|
-
def inspect
|
39
|
-
lines = []
|
40
|
-
lines << liner_note
|
41
|
-
field_names.each do |key|
|
42
|
-
next unless self.respond_to?(key)
|
43
|
-
val = self.send(key)
|
44
|
-
lines << sprintf(" %22s: %s", key, (val.is_a?(Array) ? val.join(', ') : val))
|
45
|
-
end
|
46
|
-
lines.join($/)
|
18
|
+
[@awsid.bright, @arch, @visibility, @location].join '; '
|
47
19
|
end
|
48
20
|
|
49
21
|
def available?; @state && @state == "available"; end
|
@@ -23,38 +23,9 @@ module Rudy::AWS
|
|
23
23
|
@groups ||= []
|
24
24
|
end
|
25
25
|
|
26
|
-
def
|
27
|
-
|
28
|
-
|
29
|
-
end
|
30
|
-
|
31
|
-
def to_s(with_title=false)
|
32
|
-
lines = []
|
33
|
-
if @groups
|
34
|
-
gpstr = [@groups].flatten.compact.join(', ')
|
35
|
-
gpstr &&= "(#{gpstr})"
|
36
|
-
else
|
37
|
-
gpstr = ''
|
38
|
-
end
|
39
|
-
|
40
|
-
lines << "%s %s" % [liner_note, gpstr]
|
41
|
-
#if self.running?
|
42
|
-
# k, g = @keyname || 'no-keypair', self.groups.join(', ')
|
43
|
-
# lines << @@sformat % %w{zone size ami keyname groups} if with_title
|
44
|
-
# lines << @@sformat % [@zone, @size, @ami, k, g]
|
45
|
-
#end
|
46
|
-
lines.join($/)
|
47
|
-
end
|
48
|
-
|
49
|
-
def pretty
|
50
|
-
lines = []
|
51
|
-
lines << liner_note
|
52
|
-
field_names.each do |key|
|
53
|
-
next unless self.respond_to?(key)
|
54
|
-
val = self.send(key)
|
55
|
-
lines << sprintf(" %22s: %s", key, (val.is_a?(Array) ? val.join(', ') : val))
|
56
|
-
end
|
57
|
-
lines.join($/)
|
26
|
+
def to_s(*args)
|
27
|
+
groups = [@groups].flatten.compact.join(', ')
|
28
|
+
[self.awsid.bright, self.state, self.dns_public, groups].join '; '
|
58
29
|
end
|
59
30
|
|
60
31
|
def running?; self.state && self.state == 'running'; end
|
@@ -307,6 +278,7 @@ module Rudy::AWS
|
|
307
278
|
# +inst_id+ is an instance ID
|
308
279
|
# Returns an Instance object
|
309
280
|
def get(inst_id)
|
281
|
+
return nil if inst_id.nil?
|
310
282
|
inst_id = inst_id.awsid if inst_id.is_a?(Rudy::AWS::EC2::Instance)
|
311
283
|
inst = list(:any, inst_id)
|
312
284
|
inst &&= inst.first
|
data/lib/rudy/aws/ec2/keypair.rb
CHANGED
@@ -8,13 +8,8 @@ module Rudy::AWS
|
|
8
8
|
field :fingerprint
|
9
9
|
field :private_key
|
10
10
|
|
11
|
-
def liner_note
|
12
|
-
"%-20s %s" % [self.name.bright, self.fingerprint]
|
13
|
-
end
|
14
|
-
|
15
11
|
def to_s(titles=false)
|
16
|
-
|
17
|
-
str << liner_note
|
12
|
+
[@name.bright, @fingerprint].join '; '
|
18
13
|
end
|
19
14
|
|
20
15
|
def public_key
|
@@ -3,7 +3,6 @@
|
|
3
3
|
module Rudy::AWS
|
4
4
|
module EC2
|
5
5
|
class Snapshot < Storable
|
6
|
-
@@sformat = "%s <- %10s; %s"
|
7
6
|
|
8
7
|
field :awsid
|
9
8
|
field :progress
|
@@ -11,25 +10,8 @@ module Rudy::AWS
|
|
11
10
|
field :volid
|
12
11
|
field :status
|
13
12
|
|
14
|
-
def liner_note
|
15
|
-
t = Time.parse(@created)
|
16
|
-
info = t.strftime("%Y-%m-%d %H:%M:%S")
|
17
|
-
"%s (%s)" % [(self.awsid || '').bright, info]
|
18
|
-
end
|
19
|
-
|
20
13
|
def to_s(with_title=false)
|
21
|
-
|
22
|
-
end
|
23
|
-
|
24
|
-
def pretty
|
25
|
-
lines = []
|
26
|
-
lines << liner_note
|
27
|
-
field_names.each do |key|
|
28
|
-
next unless self.respond_to?(key)
|
29
|
-
val = self.send(key)
|
30
|
-
lines << sprintf(" %22s: %s", key, (val.is_a?(Array) ? val.join(', ') : val))
|
31
|
-
end
|
32
|
-
lines.join($/)
|
14
|
+
[@awsid.bright, @volid, @created, @status, @progress].join '; '
|
33
15
|
end
|
34
16
|
|
35
17
|
def completed?
|
@@ -98,7 +80,7 @@ module Rudy::AWS
|
|
98
80
|
end
|
99
81
|
|
100
82
|
def get(snap_id)
|
101
|
-
list(snap_id).first
|
83
|
+
list(snap_id).first rescue nil
|
102
84
|
end
|
103
85
|
|
104
86
|
def exists?(snap_id)
|
data/lib/rudy/aws/ec2/volume.rb
CHANGED
@@ -20,23 +20,8 @@ module Rudy::AWS
|
|
20
20
|
@size &&= @size.to_i
|
21
21
|
end
|
22
22
|
|
23
|
-
def
|
24
|
-
|
25
|
-
"%s (%s)" % [(self.awsid || '').bright, info]
|
26
|
-
end
|
27
|
-
|
28
|
-
def to_s(with_title=false)
|
29
|
-
line = @@sformat % [liner_note, @zone, @size, @device]
|
30
|
-
line << " <- %s" % [@snapid] if @snapid
|
31
|
-
line
|
32
|
-
end
|
33
|
-
|
34
|
-
def pretty
|
35
|
-
lines = [liner_note]
|
36
|
-
field_names.each do |n|
|
37
|
-
lines << sprintf(" %12s: %s", n, self.send(n)) if self.send(n)
|
38
|
-
end
|
39
|
-
lines.join($/)
|
23
|
+
def to_s(*args)
|
24
|
+
[@awsid.bright, @zone, @size, @created, @instid, @snapid].join '; '
|
40
25
|
end
|
41
26
|
|
42
27
|
# Alias for status
|
@@ -155,7 +140,14 @@ module Rudy::AWS
|
|
155
140
|
volumes = nil if volumes.empty?
|
156
141
|
volumes
|
157
142
|
end
|
158
|
-
|
143
|
+
|
144
|
+
def list_by_instance(instid, &each_vol)
|
145
|
+
instid = instid.awsid if instid.is_a? Rudy::AWS::EC2::Instance
|
146
|
+
volumes = list(:attached, &each_vol)
|
147
|
+
volumes &&= volumes.select { |v| v.instid == instid }
|
148
|
+
volumes
|
149
|
+
end
|
150
|
+
|
159
151
|
def any?(state=nil,vol_id=[])
|
160
152
|
vols = list(state, vol_id)
|
161
153
|
!vols.nil?
|
@@ -180,7 +172,7 @@ module Rudy::AWS
|
|
180
172
|
vol_id = Volumes.get_vol_id(vol_id)
|
181
173
|
return false unless vol_id
|
182
174
|
vol = get(vol_id)
|
183
|
-
(vol && vol.status == state)
|
175
|
+
(vol && vol.status == state) ? true : false
|
184
176
|
end
|
185
177
|
end
|
186
178
|
|