solutious-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 +40 -16
- data/README.rdoc +6 -6
- 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 +48 -38
- 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 +173 -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 +15 -8
- 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 +13 -6
- data/lib/rudy/cli/status.rb +0 -60
@@ -0,0 +1,43 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
module Rudy
|
4
|
+
module CLI
|
5
|
+
class Keypairs < Rudy::CLI::CommandBase
|
6
|
+
|
7
|
+
|
8
|
+
def keypairs_add_valid?
|
9
|
+
true
|
10
|
+
end
|
11
|
+
|
12
|
+
def keypairs_add
|
13
|
+
puts current_group_name
|
14
|
+
end
|
15
|
+
|
16
|
+
def keypairs_valid?
|
17
|
+
@pkey = current_user_keypairpath
|
18
|
+
unless File.exists? @pkey
|
19
|
+
raise "No private key file for #{current_machine_user} in #{current_group_name}"
|
20
|
+
end
|
21
|
+
true
|
22
|
+
end
|
23
|
+
|
24
|
+
def keypairs
|
25
|
+
puts Rudy::AWS::EC2::Keypairs.get(current_user_keypairname)
|
26
|
+
end
|
27
|
+
|
28
|
+
def keypairs_show_valid?
|
29
|
+
keypairs_valid?
|
30
|
+
end
|
31
|
+
|
32
|
+
def keypairs_show
|
33
|
+
content = File.read(@pkey)
|
34
|
+
rkey = Rye::Key.new content
|
35
|
+
puts "# #{@pkey}"
|
36
|
+
puts content
|
37
|
+
puts rkey.public_key
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
data/lib/rudy/cli/machines.rb
CHANGED
@@ -4,27 +4,32 @@ module Rudy
|
|
4
4
|
module CLI
|
5
5
|
class Machines < Rudy::CLI::CommandBase
|
6
6
|
|
7
|
-
|
8
7
|
def machines
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
if mlist.empty?
|
19
|
-
raise( NoMachines, @option.all ? nil : current_group_name)
|
8
|
+
mlist = get_machines
|
9
|
+
print_stobjects mlist
|
10
|
+
end
|
11
|
+
|
12
|
+
def machines_console
|
13
|
+
mlist = get_machines
|
14
|
+
mlist.each do |machine|
|
15
|
+
puts machine_separator(machine.name, machine.instid)
|
16
|
+
puts machine.get_console
|
20
17
|
end
|
21
|
-
|
22
|
-
|
18
|
+
end
|
19
|
+
|
20
|
+
def machines_password
|
21
|
+
mlist = get_machines
|
22
|
+
mlist.each do |machine|
|
23
|
+
puts machine_separator(machine.name, machine.instid)
|
24
|
+
puts "Password for %s: %s" % [machine.dns_public, machine.get_password]
|
23
25
|
end
|
26
|
+
Rudy::Routines::Handlers::Group.authorize rescue nil
|
24
27
|
end
|
25
28
|
|
26
29
|
def machines_wash
|
27
|
-
|
30
|
+
mlist = get_machines
|
31
|
+
dirt = mlist.select { |m| !m.instance_running? }
|
32
|
+
|
28
33
|
if dirt.empty?
|
29
34
|
puts "Nothing to wash in #{current_machine_group}"
|
30
35
|
return
|
@@ -41,7 +46,7 @@ module Rudy
|
|
41
46
|
end
|
42
47
|
|
43
48
|
def associate_machines_valid?
|
44
|
-
@mlist =
|
49
|
+
@mlist = get_machines
|
45
50
|
@alist = Rudy::AWS::EC2::Addresses.list || []
|
46
51
|
@alist_used = @alist.select { |a| a.associated? }
|
47
52
|
@alist_unused = @alist.select { |a| !a.associated? }
|
@@ -118,7 +123,7 @@ module Rudy
|
|
118
123
|
|
119
124
|
|
120
125
|
def disassociate_machines_valid?
|
121
|
-
@mlist =
|
126
|
+
@mlist = get_machines
|
122
127
|
@alist = Rudy::AWS::EC2::Addresses.list || []
|
123
128
|
@alist_used = @alist.select { |a| a.associated? }
|
124
129
|
@alist_instids = @alist_used.collect { |a| a.instid }
|
@@ -147,19 +152,17 @@ module Rudy
|
|
147
152
|
end
|
148
153
|
|
149
154
|
def update_machines
|
150
|
-
|
151
|
-
less = Rudy::Metadata::COMMON_FIELDS if @option.all
|
152
|
-
mlist = Rudy::Machines.list(fields, less) || []
|
155
|
+
mlist = get_machines
|
153
156
|
rset = Rye::Set.new(current_group_name, :parallel => @@global.parallel, :user => 'root')
|
154
157
|
os = current_machine_os
|
155
158
|
mlist.each do |m|
|
159
|
+
puts "Updating #{m.name}"
|
156
160
|
m.refresh!
|
157
161
|
rbox = Rye::Box.new(m.dns_public, :user => 'root')
|
158
162
|
rbox.add_key user_keypairpath('root')
|
159
163
|
rbox.nickname = m.name
|
160
164
|
rbox.stash = m
|
161
165
|
rset.add_boxes rbox
|
162
|
-
puts "Updating metadata"
|
163
166
|
if m.os.to_s != os.to_s
|
164
167
|
puts "os: #{os}"
|
165
168
|
m.os = os
|
@@ -167,7 +170,7 @@ module Rudy
|
|
167
170
|
m.save :replace
|
168
171
|
end
|
169
172
|
|
170
|
-
unless os.to_s == '
|
173
|
+
unless os.to_s == 'windows'
|
171
174
|
puts "Updating hostnames for #{current_group_name}"
|
172
175
|
Rudy::Routines::Handlers::Host.set_hostname rset
|
173
176
|
puts rset.hostname.flatten
|
@@ -176,23 +179,29 @@ module Rudy
|
|
176
179
|
end
|
177
180
|
|
178
181
|
def available_machines
|
179
|
-
|
180
|
-
less = Rudy::Metadata::COMMON_FIELDS if @option.all
|
181
|
-
mlist = Rudy::Machines.list(fields, less) || []
|
182
|
+
mlist = get_machines
|
182
183
|
mlist.each do |m|
|
183
184
|
print "#{m.name}: "
|
184
185
|
m.refresh!
|
186
|
+
port = m.windows? ? 3389 : 22
|
185
187
|
Rudy::Utils.waiter(2, 60, STDOUT, nil, 0) {
|
186
|
-
Rudy::Utils.service_available?(m.dns_public,
|
188
|
+
Rudy::Utils.service_available?(m.dns_public, port)
|
187
189
|
}
|
188
|
-
available = Rudy::Utils.service_available?(m.dns_public,
|
190
|
+
available = Rudy::Utils.service_available?(m.dns_public, port)
|
189
191
|
puts available ? 'up' : 'down'
|
190
192
|
end
|
191
193
|
|
192
194
|
end
|
193
195
|
|
194
196
|
|
197
|
+
def ssh_valid?
|
198
|
+
#raise "SSH not supported on Windows" if current_machine_os.to_s == 'windows'
|
199
|
+
true
|
200
|
+
end
|
201
|
+
|
195
202
|
def ssh
|
203
|
+
|
204
|
+
|
196
205
|
# TODO: Give this method a good look over
|
197
206
|
pkey = current_user_keypairpath
|
198
207
|
unless pkey
|
@@ -200,15 +209,20 @@ module Rudy
|
|
200
209
|
end
|
201
210
|
|
202
211
|
# Options to be sent to Rye::Box
|
203
|
-
rye_opts = { :user => current_machine_user, :debug => nil }
|
204
|
-
if pkey
|
205
|
-
raise "Cannot find file #{pkey}" unless File.exists?(pkey)
|
206
|
-
if Rudy.sysinfo.os != :
|
212
|
+
rye_opts = { :user => current_machine_user, :keys => [], :debug => nil }
|
213
|
+
if File.exists? pkey
|
214
|
+
#raise "Cannot find file #{pkey}" unless File.exists?(pkey)
|
215
|
+
if Rudy.sysinfo.os != :windows && File.stat(pkey).mode != 33152
|
207
216
|
raise InsecureKeyPermissions, pkey
|
208
217
|
end
|
209
|
-
rye_opts[:keys]
|
218
|
+
rye_opts[:keys] << pkey
|
210
219
|
end
|
211
220
|
|
221
|
+
local_keys = Rye.keys
|
222
|
+
rye_opts[:keys] += local_keys if local_keys.is_a?(Array)
|
223
|
+
|
224
|
+
puts "# SSH OPTS", rye_opts.to_yaml if @@global.verbose > 3
|
225
|
+
|
212
226
|
# The user specified a command to run. We won't create an interactive
|
213
227
|
# session so we need to prepare the command and its arguments
|
214
228
|
if @argv.first
|
@@ -225,12 +239,8 @@ module Rudy
|
|
225
239
|
end
|
226
240
|
|
227
241
|
checked = false
|
228
|
-
lt =
|
229
|
-
|
230
|
-
puts "No machines running in #{current_machine_group}"
|
231
|
-
return
|
232
|
-
end
|
233
|
-
|
242
|
+
lt = get_machines
|
243
|
+
|
234
244
|
rset = Rye::Set.new(current_machine_group, :parallel => @global.parallel)
|
235
245
|
lt.each do |machine|
|
236
246
|
machine.refresh! # make sure we have the latest DNS info
|
data/lib/rudy/cli/networks.rb
CHANGED
@@ -13,6 +13,7 @@ module Rudy
|
|
13
13
|
|
14
14
|
def update_networks
|
15
15
|
Rudy::Routines::Handlers::Group.authorize rescue nil
|
16
|
+
networks
|
16
17
|
end
|
17
18
|
|
18
19
|
def local_networks
|
@@ -28,7 +29,74 @@ module Rudy
|
|
28
29
|
@global.quiet = true # don't print elapsed time
|
29
30
|
end
|
30
31
|
|
32
|
+
|
33
|
+
def modify_group_valid?
|
34
|
+
if @option.owner == 'self'
|
35
|
+
raise "AWS_ACCOUNT_NUMBER not set" unless @@global.accountnum
|
36
|
+
@option.owner = @@global.accountnum
|
37
|
+
end
|
38
|
+
|
39
|
+
if (@option.addresses || @option.ports) && (@option.group || @option.owner)
|
40
|
+
raise Drydock::OptError.new('', @alias, "Cannot mix group and network authorization")
|
41
|
+
end
|
42
|
+
if @option.owner && !@option.group
|
43
|
+
raise Drydock::OptError.new('', @alias, "Must provide -g with -o")
|
44
|
+
end
|
45
|
+
|
46
|
+
true
|
47
|
+
end
|
48
|
+
|
49
|
+
def revoke_networks_valid?; modify_group_valid?; end
|
50
|
+
def revoke_networks; modify_group(:revoke); end
|
51
|
+
|
52
|
+
def authorize_networks_valid?; modify_group_valid?; end
|
53
|
+
def authorize_networks; modify_group(:authorize); end
|
54
|
+
|
55
|
+
private
|
56
|
+
|
57
|
+
def modify_group(action)
|
58
|
+
group = current_group_name
|
59
|
+
|
60
|
+
opts = check_options
|
61
|
+
if (@option.group || @option.owner)
|
62
|
+
g = [opts[:owner], opts[:group]].join(':')
|
63
|
+
puts "#{action.to_s.capitalize} access to #{group.bright} from #{g.bright}"
|
64
|
+
else
|
65
|
+
print "#{action.to_s.capitalize} access to #{group.bright}"
|
66
|
+
puts " from #{opts[:addresses].join(', ').bright}"
|
67
|
+
print "on #{opts[:protocols].join(', ').bright} "
|
68
|
+
puts "ports: #{opts[:ports].map { |p| "#{p.join(' to ').bright}" }.join(', ')}"
|
69
|
+
end
|
70
|
+
execute_check(:medium)
|
71
|
+
execute_action {
|
72
|
+
if (@option.group || @option.owner)
|
73
|
+
Rudy::AWS::EC2::Groups.send("#{action.to_s}_group", group, opts[:group], opts[:owner])
|
74
|
+
else
|
75
|
+
Rudy::AWS::EC2::Groups.send(action, group, opts[:addresses], opts[:ports], opts[:protocols])
|
76
|
+
end
|
77
|
+
}
|
78
|
+
networks
|
79
|
+
end
|
80
|
+
|
81
|
+
def check_options
|
82
|
+
opts = {}
|
83
|
+
[:addresses, :protocols, :owner, :group, :ports].each do |opt|
|
84
|
+
opts[opt] = @option.send(opt) if @option.respond_to?(opt)
|
85
|
+
end
|
86
|
+
unless @option.group || @option.owner
|
87
|
+
opts[:ports].collect! { |port| port.split(/[:-]/) } if opts[:ports]
|
88
|
+
opts[:ports] ||= [[22,22],[80,80],[443,443]]
|
89
|
+
opts[:addresses] ||= [Rudy::Utils::external_ip_address]
|
90
|
+
opts[:protocols] ||= [:tcp]
|
91
|
+
else
|
92
|
+
opts[:owner] ||= @@global.accountnum
|
93
|
+
end
|
94
|
+
opts
|
95
|
+
end
|
96
|
+
|
31
97
|
end
|
32
98
|
|
99
|
+
|
100
|
+
|
33
101
|
end
|
34
102
|
end
|
data/lib/rudy/cli/routines.rb
CHANGED
@@ -35,9 +35,7 @@ module Rudy; module CLI;
|
|
35
35
|
def startup
|
36
36
|
machines = @rr.execute || []
|
37
37
|
puts $/, "The following machines are now available:" unless machines.empty?
|
38
|
-
machines
|
39
|
-
puts machine
|
40
|
-
end
|
38
|
+
print_stobjects machines, :noverbose
|
41
39
|
end
|
42
40
|
|
43
41
|
def reboot_valid?
|
@@ -48,9 +46,7 @@ module Rudy; module CLI;
|
|
48
46
|
def reboot
|
49
47
|
machines = @rr.execute
|
50
48
|
puts $/, "The following machines have been restarted:"
|
51
|
-
machines
|
52
|
-
puts machine
|
53
|
-
end
|
49
|
+
print_stobjects machines, :noverbose
|
54
50
|
end
|
55
51
|
|
56
52
|
def passthrough_valid?
|
@@ -77,9 +73,7 @@ module Rudy; module CLI;
|
|
77
73
|
|
78
74
|
if @global.verbose > 1 && !machines.empty?
|
79
75
|
puts $/, "The following machines were processed:"
|
80
|
-
machines
|
81
|
-
puts machine
|
82
|
-
end
|
76
|
+
print_stobjects machines, :noverbose
|
83
77
|
end
|
84
78
|
|
85
79
|
end
|
@@ -109,7 +103,6 @@ module Rudy; module CLI;
|
|
109
103
|
puts '%s %s ' % [machine.name.bright, machine.instid]
|
110
104
|
end
|
111
105
|
|
112
|
-
|
113
106
|
end
|
114
107
|
|
115
108
|
|
data/lib/rudy/config/objects.rb
CHANGED
data/lib/rudy/disks.rb
CHANGED
data/lib/rudy/global.rb
CHANGED
@@ -70,7 +70,7 @@ module Rudy
|
|
70
70
|
# value from the defaults config.
|
71
71
|
# WARNING: Don't add bucket either or any machines configuration param
|
72
72
|
# TODO: investigate removing this apply_config method
|
73
|
-
%w[region zone environment role position
|
73
|
+
%w[region zone environment role position bucket
|
74
74
|
localhost nocolor quiet auto force parallel].each do |name|
|
75
75
|
curval, defval = self.send(name), config.defaults.send(name)
|
76
76
|
if curval.nil? && !defval.nil?
|
data/lib/rudy/huxtable.rb
CHANGED
@@ -177,8 +177,8 @@ module Rudy
|
|
177
177
|
end
|
178
178
|
|
179
179
|
def current_machine_address(position='01')
|
180
|
-
raise NoConfig unless @@config
|
181
|
-
raise NoMachinesConfig unless @@config.machines
|
180
|
+
#raise NoConfig unless @@config
|
181
|
+
#raise NoMachinesConfig unless @@config.machines
|
182
182
|
raise "Position cannot be nil" if position.nil?
|
183
183
|
addresses = [fetch_machine_param(:addresses)].flatten.compact
|
184
184
|
addresses[position.to_i-1]
|
@@ -275,7 +275,7 @@ module Rudy
|
|
275
275
|
end
|
276
276
|
disks.each_pair do |path, props|
|
277
277
|
unless disk_defs.has_key?(path)
|
278
|
-
li "#{path} is not defined. Check your
|
278
|
+
li "#{path} is not defined. Check your machines config.".color(:red)
|
279
279
|
routine.disks[raction].delete(path)
|
280
280
|
next
|
281
281
|
end
|
@@ -288,6 +288,12 @@ module Rudy
|
|
288
288
|
routine
|
289
289
|
end
|
290
290
|
|
291
|
+
def self.generate_rudy_command(name, *args)
|
292
|
+
cmd = "rudy "
|
293
|
+
cmd << "-C " << @@global.config.join(' -C ') if @@global.config
|
294
|
+
"#{cmd} #{name} " << args.join(' ')
|
295
|
+
end
|
296
|
+
|
291
297
|
# Is +action+ a valid routine for the current machine group?
|
292
298
|
def valid_routine?(action)
|
293
299
|
!fetch_routine_config(action).nil?
|
data/lib/rudy/machines.rb
CHANGED
data/lib/rudy/metadata.rb
CHANGED
@@ -106,11 +106,14 @@ module Rudy
|
|
106
106
|
criteria
|
107
107
|
end
|
108
108
|
|
109
|
+
|
110
|
+
# These methods are common to all plural metadata classes:
|
111
|
+
# Rudy::Machines, Rudy::Disks, Rudy::Backups, etc...
|
112
|
+
#
|
109
113
|
module ClassMethods
|
110
114
|
extend self
|
111
115
|
extend Rudy::Huxtable
|
112
116
|
|
113
|
-
# TODO: MOVE TO Rudy:Disks etc...
|
114
117
|
def list(fields={}, less=[], &block)
|
115
118
|
fields = Rudy::Metadata.build_criteria self::RTYPE, fields, less
|
116
119
|
records_raw, records = Rudy::Metadata.select(fields), []
|
data/lib/rudy/metadata/backup.rb
CHANGED
@@ -67,8 +67,8 @@ module Rudy
|
|
67
67
|
@second = @created.sec.to_s.rjust(2, '0')
|
68
68
|
end
|
69
69
|
|
70
|
-
def to_s(
|
71
|
-
|
70
|
+
def to_s(*args)
|
71
|
+
[self.name.bright, self.snapid, self.volid, self.size, self.fstype].join '; '
|
72
72
|
end
|
73
73
|
|
74
74
|
def name
|
data/lib/rudy/metadata/disk.rb
CHANGED
@@ -16,6 +16,9 @@ module Rudy
|
|
16
16
|
field :size
|
17
17
|
field :fstype
|
18
18
|
|
19
|
+
field :name # Windows, used for label
|
20
|
+
field :index # Windows, used for diskpart
|
21
|
+
|
19
22
|
#field :backups => Array
|
20
23
|
|
21
24
|
# Is the associated volume formatted? One of: true, false
|
@@ -45,7 +48,7 @@ module Rudy
|
|
45
48
|
|
46
49
|
opts = {
|
47
50
|
:size => 1,
|
48
|
-
:device => '
|
51
|
+
:device => current_machine_os.to_s == 'windows' ? DEFAULT_WINDOWS_DEVICE : DEFAULT_LINUX_DEVICE
|
49
52
|
}.merge opts
|
50
53
|
|
51
54
|
super Rudy::Disks::RTYPE, opts # Rudy::Metadata#initialize
|
@@ -68,8 +71,8 @@ module Rudy
|
|
68
71
|
@mounted = (@mounted == "true") unless @mounted.is_a?(TrueClass)
|
69
72
|
end
|
70
73
|
|
71
|
-
def to_s(
|
72
|
-
self.name
|
74
|
+
def to_s(*args)
|
75
|
+
[self.name.bright, self.volid, self.size, self.fstype].join '; '
|
73
76
|
end
|
74
77
|
|
75
78
|
def name
|
@@ -83,7 +86,7 @@ module Rudy
|
|
83
86
|
end
|
84
87
|
|
85
88
|
def create(size=nil, zone=nil, snapshot=nil)
|
86
|
-
raise DuplicateRecord, self.name if exists?
|
89
|
+
raise DuplicateRecord, self.name if exists? && !@@global.force
|
87
90
|
vol = Rudy::AWS::EC2::Volumes.create(size || @size, zone || @zone, snapshot)
|
88
91
|
#vol = Rudy::AWS::EC2::Volumes.list(:available).first # debugging
|
89
92
|
@volid, @raw = vol.awsid, true
|