judo 0.4.4 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/bin/judo +26 -58
- data/default/setup.sh +1 -1
- data/default/userdata.erb +0 -4
- data/lib/judo.rb +1 -1
- data/lib/judo/base.rb +90 -239
- data/lib/judo/cli_helpers.rb +157 -0
- data/lib/judo/group.rb +28 -56
- data/lib/judo/patch.rb +13 -0
- data/lib/judo/server.rb +42 -105
- data/lib/judo/snapshot.rb +11 -24
- metadata +8 -14
- data/TODO +0 -15
- data/lib/judo/commandline_helpers.rb +0 -144
- data/spec/base.rb +0 -21
- data/spec/base_spec.rb +0 -9
- data/spec/server_spec.rb +0 -9
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.5.0
|
data/bin/judo
CHANGED
@@ -2,13 +2,11 @@
|
|
2
2
|
|
3
3
|
require 'optparse'
|
4
4
|
require File.dirname(__FILE__) + '/../lib/judo'
|
5
|
-
require File.dirname(__FILE__) + '/../lib/judo/
|
5
|
+
require File.dirname(__FILE__) + '/../lib/judo/cli_helpers'
|
6
6
|
|
7
|
-
include
|
7
|
+
include Judo::CLIHelpers
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
options = {}
|
9
|
+
options = Judo::Base.defaults
|
12
10
|
|
13
11
|
ARGV.unshift "-h" if ARGV.size == 0
|
14
12
|
|
@@ -52,22 +50,15 @@ Usage: judo launch [options] SERVER ...
|
|
52
50
|
|
53
51
|
banner
|
54
52
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
opts.on( '-
|
59
|
-
|
60
|
-
defaults.merge(Judo::Base.default_options(Dir.pwd, dir))
|
53
|
+
opts.on( '-a', '--accessid ID', 'Specify the AWS access ID' ) do |id|
|
54
|
+
options[:access_id] = id
|
55
|
+
end
|
56
|
+
opts.on( '-s', '--secret KEY', 'Specify the AWS access secret key' ) do |key|
|
57
|
+
options[:access_secret] = key
|
61
58
|
end
|
62
59
|
opts.on( '-f', '--force', 'Force a stop or restart (immediately force detach volumes)' ) do
|
63
60
|
options[:force] = true
|
64
61
|
end
|
65
|
-
opts.on( '-d', '--domain DOMAIN', 'Specify a judo domain within an AWS account' ) do |domain|
|
66
|
-
options[:domain] = domain
|
67
|
-
end
|
68
|
-
opts.on( '-r', '--repo DIR', 'Specify the location of the repo dir' ) do |dir|
|
69
|
-
options[:repo] = dir
|
70
|
-
end
|
71
62
|
opts.on( '-t', '--type TYPE', 'Specify an instance type different from the config on server start' ) do |type|
|
72
63
|
options[:instance_type] = type
|
73
64
|
end
|
@@ -82,25 +73,6 @@ banner
|
|
82
73
|
opts.on( '-i', '--ip IP', 'Specify an exsiting elastic_ip address on server creation' ) do |ip|
|
83
74
|
options[:elastic_ip] = ip
|
84
75
|
end
|
85
|
-
opts.on( '-a', '--accessid ID', 'Specify the AWS access ID' ) do |id|
|
86
|
-
options[:access_id] = id
|
87
|
-
end
|
88
|
-
opts.on( '-k', '--keypair KEY', 'Speicy the AWS keypair pem file to use or \'create\'' ) do |key|
|
89
|
-
if key == 'create'
|
90
|
-
options[:key_create] = true
|
91
|
-
elsif File.basename(key) =~ /(.*)[.]pem$/
|
92
|
-
options[:key_name] = $1
|
93
|
-
options[:key_material] = File.new(key).read
|
94
|
-
else
|
95
|
-
abort "Key file must be KEY_NAME.pem"
|
96
|
-
end
|
97
|
-
end
|
98
|
-
opts.on( '-s', '--secret KEY', 'Specify the AWS access secret key' ) do |key|
|
99
|
-
options[:access_secret] = key
|
100
|
-
end
|
101
|
-
opts.on( '-b', '--bucket BUCKET', 'Specify the AWS S3 bucket to use' ) do |bucket|
|
102
|
-
options[:bucket] = bucket
|
103
|
-
end
|
104
76
|
opts.on( '-v', '--version VERSION', 'Update the servers config version on create/start/launch' ) do |version|
|
105
77
|
options[:version] = version
|
106
78
|
end
|
@@ -113,31 +85,27 @@ end
|
|
113
85
|
optparse.parse!
|
114
86
|
|
115
87
|
action = ARGV.shift
|
116
|
-
judo = Judo::Base.new(
|
117
|
-
judo.
|
88
|
+
judo = Judo::Base.new(options)
|
89
|
+
judo.ensure_setup unless action == "generate"
|
118
90
|
|
119
91
|
begin
|
120
92
|
case action
|
121
|
-
when "
|
122
|
-
|
123
|
-
when "
|
124
|
-
when "
|
125
|
-
when "
|
126
|
-
when "
|
127
|
-
|
128
|
-
when "
|
129
|
-
when "
|
130
|
-
when "
|
131
|
-
when "
|
132
|
-
when "
|
133
|
-
when "
|
134
|
-
when "
|
135
|
-
when "
|
136
|
-
when "
|
137
|
-
when "config" then
|
138
|
-
puts "Judo DB Version: #{judo.db_version}"
|
139
|
-
puts "Judo Key Pair: #{judo.key_name}"
|
140
|
-
puts "Judo Bucket: #{judo.bucket_name}"
|
93
|
+
when "generate" then do_generate(judo, ARGV)
|
94
|
+
when "commit" then do_commit(judo, ARGV)
|
95
|
+
when "ips" then do_ips(judo)
|
96
|
+
when "volumes" then do_volumes(judo)
|
97
|
+
when "list" then do_list(judo, ARGV)
|
98
|
+
when "groups" then do_groups(judo)
|
99
|
+
when "snapshots" then do_snapshots(judo, ARGV)
|
100
|
+
when "watch" then each_server(judo, ARGV) { |s| s.ssh_command("tail -n 1000 -f /var/log/kuzushi.log") }
|
101
|
+
when "info" then each_server(judo, ARGV) { |s| do_info(judo, s) }
|
102
|
+
when "console" then each_server(judo, ARGV) { |s| puts s.console_output }
|
103
|
+
when "ssh" then each_server(judo, ARGV) { |s| s.connect_ssh }
|
104
|
+
when "start" then each_server(judo, ARGV) { |s| s.start(options) }
|
105
|
+
when "restart" then each_server(judo, ARGV) { |s| s.restart(options) }
|
106
|
+
when "stop" then each_server(judo, ARGV) { |s| s.stop(options) }
|
107
|
+
when "create" then mk_servers(judo, options, ARGV, false)
|
108
|
+
when "launch" then mk_servers(judo, options, ARGV, true)
|
141
109
|
when "rename" then
|
142
110
|
raise JudoError, "usage: judo rename SERVER SERVER" unless ARGV.size == 2
|
143
111
|
server = judo.find_server(ARGV[0]).rename(ARGV[1])
|
data/default/setup.sh
CHANGED
data/default/userdata.erb
CHANGED
@@ -21,8 +21,6 @@
|
|
21
21
|
## id - this is random string that uniqily identifies the server for its lifetime
|
22
22
|
## name - the name of the server
|
23
23
|
## group_name - the name of group the server is in
|
24
|
-
## domain - this is the JUDO_DOMAIN currently running
|
25
|
-
## secret - this is a 128bit random string assigned to an instance at creation time - great for passwords
|
26
24
|
## metadata - a hash of metadata associated with the server with --data KEY=VALUE
|
27
25
|
## boot - a hash of boot options passed to the server with --boot KEY=VALUE
|
28
26
|
## first_boot? - is set to true or false depending on if this is the instance's first boot
|
@@ -33,8 +31,6 @@ set -x
|
|
33
31
|
|
34
32
|
export JUDO_ID='<%= id %>'
|
35
33
|
export JUDO_NAME='<%= name %>'
|
36
|
-
export JUDO_DOMAIN='<%= domain %>'
|
37
|
-
export JUDO_SECRET='<%= secret %>'
|
38
34
|
export JUDO_FIRST_BOOT='<%= first_boot? %>'
|
39
35
|
|
40
36
|
hostname <%= name %>
|
data/lib/judo.rb
CHANGED
data/lib/judo/base.rb
CHANGED
@@ -1,17 +1,41 @@
|
|
1
1
|
module Judo
|
2
2
|
class Base
|
3
|
-
attr_accessor :
|
3
|
+
attr_accessor :group
|
4
4
|
|
5
|
-
def
|
6
|
-
|
7
|
-
|
8
|
-
|
5
|
+
def self.defaults
|
6
|
+
{
|
7
|
+
:access_id => ENV['AWS_ACCESS_KEY_ID'],
|
8
|
+
:access_secret => ENV['AWS_SECRET_ACCESS_KEY']
|
9
|
+
}
|
10
|
+
end
|
11
|
+
|
12
|
+
def initialize(options)
|
9
13
|
@access_id = options[:access_id]
|
10
14
|
@access_secret = options[:access_secret]
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
@
|
15
|
+
end
|
16
|
+
|
17
|
+
def access_id
|
18
|
+
@access_id || (raise JudoError, "no AWS Access ID specified")
|
19
|
+
end
|
20
|
+
|
21
|
+
def access_secret
|
22
|
+
@access_secret || (raise JudoError, "no AWS Secret Key specified")
|
23
|
+
end
|
24
|
+
|
25
|
+
def bucket_name
|
26
|
+
"judo_#{access_id}"
|
27
|
+
end
|
28
|
+
|
29
|
+
def server_domain
|
30
|
+
"judo_servers"
|
31
|
+
end
|
32
|
+
|
33
|
+
def snapshot_domain
|
34
|
+
"judo_snapshots"
|
35
|
+
end
|
36
|
+
|
37
|
+
def base_domain
|
38
|
+
"judo_base"
|
15
39
|
end
|
16
40
|
|
17
41
|
def find_groups(names)
|
@@ -20,7 +44,7 @@ module Judo
|
|
20
44
|
groups.detect { |g| g.displayname == name } || (raise JudoError, "No such group #{name}")
|
21
45
|
end
|
22
46
|
end
|
23
|
-
|
47
|
+
|
24
48
|
def find_server(name)
|
25
49
|
find_servers([name]).first
|
26
50
|
end
|
@@ -41,7 +65,7 @@ module Judo
|
|
41
65
|
def find_servers_by_name_or_groups(*names)
|
42
66
|
just_servers = names.flatten.reject { |s| s =~ /^:/ }
|
43
67
|
just_groups = names.flatten.select { |s| s =~ /^:/ }
|
44
|
-
|
68
|
+
|
45
69
|
[find_groups(just_groups).map { |g| g.servers } + find_servers(just_servers)].flatten
|
46
70
|
end
|
47
71
|
|
@@ -70,59 +94,6 @@ module Judo
|
|
70
94
|
end
|
71
95
|
end
|
72
96
|
|
73
|
-
def sdb_domain(name)
|
74
|
-
if @domain
|
75
|
-
"#{@domain}_#{name}"
|
76
|
-
else
|
77
|
-
name
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
def server_domain
|
82
|
-
sdb_domain("judo_servers")
|
83
|
-
end
|
84
|
-
|
85
|
-
def snapshot_domain
|
86
|
-
sdb_domain("judo_snapshots")
|
87
|
-
end
|
88
|
-
|
89
|
-
def base_domain
|
90
|
-
sdb_domain("judo_config")
|
91
|
-
end
|
92
|
-
|
93
|
-
def self.default_options(pwd = Dir.pwd, dir = find_judo_dir(pwd))
|
94
|
-
config = YAML.load File.read("#{dir}/config.yml")
|
95
|
-
repo_dir = config["repo"] || File.dirname(dir)
|
96
|
-
group_config = Dir["#{repo_dir}/*/config.json"].detect { |d| File.dirname(d) == pwd }
|
97
|
-
{
|
98
|
-
:judo_dir => dir,
|
99
|
-
:repo => repo_dir,
|
100
|
-
:domain => (config["domain"] || ENV['JUDO_DOMAIN']),
|
101
|
-
:bucket => (config["s3_bucket"] || ENV['JUDO_BUCKET']),
|
102
|
-
:access_id => (config["access_id"] || ENV['AWS_ACCESS_KEY_ID']),
|
103
|
-
:access_secret => (config["access_secret"] || ENV['AWS_SECRET_ACCESS_KEY'])
|
104
|
-
}.delete_if { |key,value| value.nil? }
|
105
|
-
rescue Object => e
|
106
|
-
{
|
107
|
-
:access_id => ENV['AWS_ACCESS_KEY_ID'],
|
108
|
-
:access_secret => ENV['AWS_SECRET_ACCESS_KEY'],
|
109
|
-
:bucket => ENV['JUDO_BUCKET'],
|
110
|
-
:domain => ENV['JUDO_DOMAIN'],
|
111
|
-
}.delete_if { |key,value| value.nil? }
|
112
|
-
end
|
113
|
-
|
114
|
-
def self.find_judo_dir(check)
|
115
|
-
if check == "/"
|
116
|
-
if File.exists?("#{ENV['HOME']}/.judo")
|
117
|
-
"#{ENV['HOME']}/.judo"
|
118
|
-
else
|
119
|
-
nil
|
120
|
-
end
|
121
|
-
else
|
122
|
-
File.exists?(check + "/.judo") ? check + "/.judo" : find_judo_dir(File.dirname(check))
|
123
|
-
end
|
124
|
-
end
|
125
|
-
|
126
97
|
def sdb
|
127
98
|
@sdb ||= Aws::SdbInterface.new(access_id, access_secret, :logger => Logger.new(nil))
|
128
99
|
end
|
@@ -167,17 +138,9 @@ module Judo
|
|
167
138
|
rand(2**32).to_s(36)
|
168
139
|
end
|
169
140
|
|
170
|
-
def default_group_dir
|
171
|
-
File.expand_path(File.dirname(__FILE__) + "/../../default")
|
172
|
-
end
|
173
|
-
|
174
|
-
def default_file(name)
|
175
|
-
"#{default_group_dir}/#{name}"
|
176
|
-
end
|
177
|
-
|
178
141
|
def mk_server_name(group)
|
179
|
-
|
180
|
-
|
142
|
+
index = servers.map { |s| (s.name =~ /^#{s.group.name}.(\d*)$/); $1.to_i }.sort.last.to_i + 1
|
143
|
+
"#{group}#{index}"
|
181
144
|
end
|
182
145
|
|
183
146
|
def create_server(name, group, options)
|
@@ -224,7 +187,7 @@ module Judo
|
|
224
187
|
end
|
225
188
|
|
226
189
|
def ec2_snapshots
|
227
|
-
@ec2_snapshots ||= ec2.describe_snapshots
|
190
|
+
@ec2_snapshots ||= ec2.describe_snapshots([], :owner => "self")
|
228
191
|
end
|
229
192
|
|
230
193
|
def ec2_instances
|
@@ -235,29 +198,10 @@ module Judo
|
|
235
198
|
@ec2 ||= Aws::Ec2.new(access_id, access_secret, :logger => Logger.new(nil))
|
236
199
|
end
|
237
200
|
|
238
|
-
def groups_config
|
239
|
-
@groups_config ||= sdb.get_attributes(base_domain, "groups")[:attributes]
|
240
|
-
end
|
241
|
-
|
242
201
|
def group_versions
|
243
202
|
@group_version ||= sdb.get_attributes(base_domain, "group_versions")[:attributes]
|
244
203
|
end
|
245
204
|
|
246
|
-
def set_keypair(key_name, material)
|
247
|
-
@key_name = key_name
|
248
|
-
@key_material = material
|
249
|
-
s3_put("#{key_name}.pem", material)
|
250
|
-
update "key_name" => key_name
|
251
|
-
end
|
252
|
-
|
253
|
-
def key_name
|
254
|
-
@key_name ||= get("key_name")
|
255
|
-
end
|
256
|
-
|
257
|
-
def key_material
|
258
|
-
@key_material ||= s3_get("#{key_name}.pem")
|
259
|
-
end
|
260
|
-
|
261
205
|
def ip_to_judo(ip)
|
262
206
|
servers.detect { |s| s.elastic_ip == ip }
|
263
207
|
end
|
@@ -275,78 +219,15 @@ module Judo
|
|
275
219
|
end
|
276
220
|
|
277
221
|
def s3_url(k)
|
278
|
-
Aws::S3Generator::Key.new(bucket,
|
222
|
+
Aws::S3Generator::Key.new(bucket, k).get
|
279
223
|
end
|
280
224
|
|
281
225
|
def s3_get(k)
|
282
|
-
bucket.get(
|
226
|
+
bucket.get(k)
|
283
227
|
end
|
284
228
|
|
285
229
|
def s3_put(k, file)
|
286
|
-
bucket.put(
|
287
|
-
end
|
288
|
-
|
289
|
-
def s3_key(k)
|
290
|
-
if @domain
|
291
|
-
"#{@domain}/#{k}"
|
292
|
-
else
|
293
|
-
k
|
294
|
-
end
|
295
|
-
end
|
296
|
-
|
297
|
-
def repo
|
298
|
-
raise JudoError, "no repo dir specified" unless @repo
|
299
|
-
raise JudoError, "repo dir not found" unless File.exists?(@repo)
|
300
|
-
@repo
|
301
|
-
end
|
302
|
-
|
303
|
-
def access_id
|
304
|
-
@access_id || (raise JudoError, "no AWS Access ID specified")
|
305
|
-
end
|
306
|
-
|
307
|
-
def access_secret
|
308
|
-
@access_secret || (raise JudoError, "no AWS Secret Key specified")
|
309
|
-
end
|
310
|
-
|
311
|
-
## this is a little funny - does not work like the others - can specify bucket on cmdline or env - but if not takes from judo state
|
312
|
-
def bucket_name
|
313
|
-
(@bucket_name ||= get("bucket")) || (raise JudoError, "no S3 bucket name specified")
|
314
|
-
end
|
315
|
-
|
316
|
-
def set_bucket_name(new_name)
|
317
|
-
@bucket_name = new_name
|
318
|
-
update "bucket" => @bucket_name
|
319
|
-
end
|
320
|
-
|
321
|
-
def db_version
|
322
|
-
2
|
323
|
-
end
|
324
|
-
|
325
|
-
def upgrade_db
|
326
|
-
case get_db_version
|
327
|
-
when 0
|
328
|
-
task("Upgrading Judo: Creating Snapshots SDB Domain") do
|
329
|
-
sdb.create_domain(server_domain)
|
330
|
-
sdb.create_domain(base_domain)
|
331
|
-
sdb.create_domain(snapshot_domain)
|
332
|
-
set_db_version(2)
|
333
|
-
end
|
334
|
-
when 1
|
335
|
-
task("Upgrading Judo: Creating Snapshots SDB Domain") do
|
336
|
-
sdb.create_domain(snapshot_domain)
|
337
|
-
set_db_version(2)
|
338
|
-
end
|
339
|
-
else
|
340
|
-
raise JudoError, "judo db is newer than the current gem - upgrade judo and try again"
|
341
|
-
end
|
342
|
-
end
|
343
|
-
|
344
|
-
def set_db_version(new_version)
|
345
|
-
update "dbversion" => new_version
|
346
|
-
end
|
347
|
-
|
348
|
-
def get_db_version
|
349
|
-
get("dbversion").to_i
|
230
|
+
bucket.put(k, file)
|
350
231
|
end
|
351
232
|
|
352
233
|
def get(key)
|
@@ -363,113 +244,83 @@ module Judo
|
|
363
244
|
@state ||= sdb.get_attributes(base_domain, "judo")[:attributes]
|
364
245
|
end
|
365
246
|
|
366
|
-
def
|
367
|
-
|
368
|
-
|
369
|
-
setup_sdb
|
370
|
-
upgrade_db
|
247
|
+
def ensure_setup
|
248
|
+
ensure_init
|
249
|
+
ensure_db_version
|
371
250
|
end
|
372
251
|
|
373
|
-
def
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
setup_security_group
|
380
|
-
setup_judo_config
|
381
|
-
setup_repo
|
252
|
+
def ensure_init
|
253
|
+
if !has_init?
|
254
|
+
init_sdb
|
255
|
+
init_security_group
|
256
|
+
init_keypair
|
257
|
+
end
|
382
258
|
end
|
383
259
|
|
384
|
-
def
|
385
|
-
|
386
|
-
sdb.create_domain(base_domain)
|
387
|
-
end
|
260
|
+
def has_init?
|
261
|
+
sdb.list_domains[:domains].include?(base_domain)
|
388
262
|
end
|
389
263
|
|
390
|
-
def
|
391
|
-
|
392
|
-
|
393
|
-
ec2.authorize_security_group_IP_ingress("judo", 22, 22,'tcp','0.0.0.0/0')
|
394
|
-
rescue Aws::AwsError => e
|
395
|
-
raise unless e.message =~ /InvalidGroup.Duplicate/
|
264
|
+
def init_sdb
|
265
|
+
task("Initializing Judo SDB") do
|
266
|
+
sdb.create_domain(base_domain)
|
396
267
|
end
|
397
268
|
end
|
398
269
|
|
399
|
-
def
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
Dir.chdir(repo) do
|
407
|
-
if File.exists?(".judo/config.yml")
|
408
|
-
puts ".judo folder already exists"
|
409
|
-
else
|
410
|
-
system "mkdir .judo"
|
411
|
-
File.open(".judo/config.yml","w") do |f|
|
412
|
-
f.write({ "access_id" => access_id, "access_secret" => access_secret, "s3_bucket" => bucket_name }.to_yaml)
|
413
|
-
end
|
414
|
-
end
|
270
|
+
def init_security_group
|
271
|
+
task("Initializing Judo Security Group") do
|
272
|
+
begin
|
273
|
+
ec2.create_security_group('judo', 'Judo')
|
274
|
+
ec2.authorize_security_group_IP_ingress("judo", 22, 22,'tcp','0.0.0.0/0')
|
275
|
+
rescue Aws::AwsError => e
|
276
|
+
raise unless e.message =~ /InvalidGroup.Duplicate/
|
415
277
|
end
|
416
278
|
end
|
417
279
|
end
|
418
280
|
|
419
|
-
def
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
task("Setting up default group") do
|
425
|
-
FileUtils.cp_r(default_group_dir, repo)
|
426
|
-
get_group("default").compile
|
281
|
+
def init_keypair
|
282
|
+
task("Initializing Judo Keypair") do
|
283
|
+
ec2.delete_key_pair("judo")
|
284
|
+
material = ec2.create_key_pair("judo")[:aws_material]
|
285
|
+
s3_put("judo.pem", material)
|
427
286
|
end
|
428
287
|
end
|
429
288
|
|
430
289
|
def keypair_file(&blk)
|
431
|
-
Tempfile.open("
|
432
|
-
file.write
|
290
|
+
Tempfile.open("judo.pem") do |file|
|
291
|
+
file.write(s3_get("judo.pem"))
|
433
292
|
file.flush
|
434
293
|
blk.call(file.path)
|
435
294
|
end
|
436
295
|
end
|
437
296
|
|
438
|
-
def
|
439
|
-
|
440
|
-
puts "Bucket #{name} already set"
|
441
|
-
else
|
442
|
-
puts "Setting bucket name #{bucket_name}"
|
443
|
-
set_bucket_name(bucket_name)
|
444
|
-
end
|
297
|
+
def set_db_version(new_version)
|
298
|
+
update "dbversion" => new_version
|
445
299
|
end
|
446
300
|
|
447
|
-
def
|
448
|
-
|
449
|
-
|
450
|
-
|
301
|
+
def get_db_version
|
302
|
+
get("dbversion").to_i
|
303
|
+
end
|
304
|
+
|
305
|
+
def ensure_db_version
|
306
|
+
case get_db_version
|
307
|
+
when 0
|
308
|
+
task("Upgrading Judo SDB from version 0 to 2") do
|
309
|
+
sdb.create_domain(server_domain)
|
310
|
+
sdb.create_domain(snapshot_domain)
|
311
|
+
set_db_version(2)
|
451
312
|
end
|
452
|
-
|
453
|
-
task("
|
454
|
-
|
455
|
-
|
456
|
-
set_keypair(name, material)
|
313
|
+
when 1
|
314
|
+
task("Upgrading Judo SDB from version 1 to 2") do
|
315
|
+
sdb.create_domain(snapshot_domain)
|
316
|
+
set_db_version(2)
|
457
317
|
end
|
318
|
+
when 2
|
319
|
+
# current version
|
458
320
|
else
|
459
|
-
|
321
|
+
raise JudoError, "Judo SDB has higher version (#{get_db_version}) " +
|
322
|
+
"than current gem (2) - please upgrade Judo"
|
460
323
|
end
|
461
324
|
end
|
462
|
-
|
463
|
-
def default_config
|
464
|
-
<<DEFAULT
|
465
|
-
{
|
466
|
-
"ami32":"ami-2d4aa444", // public ubuntu 10.04 ami - 32 bit
|
467
|
-
"ami64":"ami-fd4aa494", // public ubuntu 10.04 ami - 64 bit
|
468
|
-
"user":"ubuntu",
|
469
|
-
"security_group":"judo",
|
470
|
-
"availability_zone":"us-east-1d"
|
471
|
-
}
|
472
|
-
DEFAULT
|
473
|
-
end
|
474
325
|
end
|
475
326
|
end
|