engineyard 1.0.2 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -9,6 +9,8 @@ module EY
9
9
  autoload :Recipes, 'engineyard/cli/recipes'
10
10
  autoload :Web, 'engineyard/cli/web'
11
11
 
12
+ check_unknown_options!
13
+
12
14
  include Thor::Actions
13
15
 
14
16
  def self.start(*)
@@ -151,7 +153,7 @@ module EY
151
153
  end
152
154
  end
153
155
 
154
- desc "ssh [COMMAND] [--all] [--environment ENVIRONMENT]", "Open an ssh session, or run a command."
156
+ desc "ssh [COMMAND] [--all] [--environment ENVIRONMENT]", "Open an ssh session to the master app server, or run a command."
155
157
  long_desc <<-DESC
156
158
  If a command is supplied, it will be run, otherwise a session will be
157
159
  opened. The application master is used for environments with clusters.
@@ -166,30 +168,54 @@ module EY
166
168
  :desc => "Environment to ssh into"
167
169
  method_option :all, :type => :boolean, :aliases => %(-a),
168
170
  :desc => "Run command on all servers"
171
+ method_option :app_servers, :type => :boolean,
172
+ :desc => "Run command on all application servers"
173
+ method_option :db_servers, :type => :boolean,
174
+ :desc => "Run command on the database servers"
175
+ method_option :db_master, :type => :boolean,
176
+ :desc => "Run command on the master database server"
177
+ method_option :db_slaves, :type => :boolean,
178
+ :desc => "Run command on the slave database servers"
179
+ method_option :utilities, :type => :array, :lazy_default => true,
180
+ :desc => "Run command on the utility servers with the given names. If no names are given, run on all utility servers."
169
181
 
170
182
  def ssh(cmd=nil)
171
- env = fetch_environment(options[:environment])
183
+ env = fetch_environment(options[:environment])
184
+ hosts = ssh_hosts(options, env)
172
185
 
173
- if options[:all]
174
- raise NoCommandError.new unless cmd
186
+ raise NoCommandError.new if cmd.nil? and hosts.count != 1
175
187
 
176
- hosts = env.instances.map do |instance|
177
- instance.public_hostname
178
- end
188
+ hosts.each do |host|
189
+ system "ssh #{env.username}@#{host} #{cmd}"
190
+ end
191
+ end
179
192
 
180
- if hosts.empty?
181
- raise NoInstancesError.new(env.name)
182
- else
183
- hosts.each do |host|
184
- system "ssh #{env.username}@#{host} #{cmd}"
193
+ no_tasks do
194
+ def ssh_host_filter(opts)
195
+ return lambda {|instance| true } if opts[:all]
196
+ return lambda {|instance| %w(solo app app_master ).include?(instance.role) } if opts[:app_servers]
197
+ return lambda {|instance| %w(solo db_master db_slave).include?(instance.role) } if opts[:db_servers ]
198
+ return lambda {|instance| %w(solo db_master ).include?(instance.role) } if opts[:db_master ]
199
+ return lambda {|instance| %w(db_slave ).include?(instance.role) } if opts[:db_slaves ]
200
+ return lambda {|instance| %w(util ).include?(instance.role) &&
201
+ opts[:utilities].include?(instance.name) } if opts[:utilities ]
202
+ return lambda {|instance| %w(solo app_master ).include?(instance.role) }
203
+ end
204
+
205
+ def ssh_hosts(opts, env)
206
+ if opts[:utilities] and not opts[:utilities].respond_to?(:include?)
207
+ includes_everything = []
208
+ class << includes_everything
209
+ def include?(*) true end
185
210
  end
186
- end
187
- else
188
- if env.app_master
189
- system "ssh #{env.username}@#{env.app_master.public_hostname} #{cmd}"
211
+ filter = ssh_host_filter(opts.merge(:utilities => includes_everything))
190
212
  else
191
- raise NoAppMasterError.new(env.name)
213
+ filter = ssh_host_filter(opts)
192
214
  end
215
+
216
+ instances = env.instances.select {|instance| filter[instance] }
217
+ raise NoInstancesError.new(env.name) if instances.empty?
218
+ return instances.map { |instance| instance.public_hostname }
193
219
  end
194
220
  end
195
221
 
@@ -246,10 +272,12 @@ module EY
246
272
  list.find{|task| task[0] =~ /^#{base} #{name}/ }
247
273
  end
248
274
  list -= deploy_cmds
275
+
249
276
  EY.ui.print_help(deploy_cmds)
250
277
  EY.ui.say
251
278
 
252
- EY::Thor.subcommands.each do |name, klass|
279
+ self.class.subcommands.each do |name|
280
+ klass = self.class.subcommand_class_for(name)
253
281
  list.reject!{|cmd| cmd[0] =~ /^#{base} #{name}/}
254
282
  EY.ui.say "#{name.capitalize} commands:"
255
283
  tasks = klass.printable_tasks.reject{|t| t[0] =~ /help$/ }
@@ -266,7 +294,7 @@ module EY
266
294
 
267
295
  self.class.send(:class_options_help, shell)
268
296
  EY.ui.say "See '#{base} help COMMAND' for more information on a specific command."
269
- elsif klass = EY::Thor.subcommands[cmds.first]
297
+ elsif klass = self.class.subcommand_class_for(cmds.first)
270
298
  klass.new.help(*cmds[1..-1])
271
299
  else
272
300
  super
@@ -49,7 +49,7 @@ module EY
49
49
 
50
50
  class NoInstancesError < EY::Error
51
51
  def initialize(env_name)
52
- super "The environment '#{env_name}' does not have any instances."
52
+ super "The environment '#{env_name}' does not have any matching instances."
53
53
  end
54
54
  end
55
55
 
@@ -3,7 +3,7 @@ require 'escape'
3
3
  module EY
4
4
  module Model
5
5
  class Instance < ApiStruct.new(:id, :role, :name, :status, :amazon_id, :public_hostname, :environment)
6
- EYDEPLOY_VERSION = ENV["EY_DEPLOY_VERSION"] || "1.0.2"
6
+ EYDEPLOY_VERSION = ENV["EY_DEPLOY_VERSION"] || "1.1.0"
7
7
  EXIT_STATUS = Hash.new { |h,k| raise EY::Error, "ey-deploy version checker exited with unknown status code #{k}" }
8
8
  EXIT_STATUS.merge!({
9
9
  255 => :ssh_failed,
@@ -82,14 +82,32 @@ module EY
82
82
  end
83
83
 
84
84
  def self.banner(task, task_help = false, subcommand = false)
85
- scmd = EY::Thor.subcommands.invert[self]
85
+ subcommand_banner = to_s.split(/::/).map{|s| s.downcase}[2..-1]
86
+ subcommand_banner = if subcommand_banner.size > 0
87
+ subcommand_banner.join(' ')
88
+ else
89
+ nil
90
+ end
91
+
86
92
  task = (task_help ? task.formatted_usage(self, false, subcommand) : task.name)
87
- [banner_base, scmd, task].compact.join(" ")
93
+ [banner_base, subcommand_banner, task].compact.join(" ")
88
94
  end
89
95
 
90
96
  def self.handle_no_task_error(task)
91
97
  raise UndefinedTaskError, "Could not find command #{task.inspect}."
92
98
  end
99
+
100
+ def self.subcommand(name, klass)
101
+ @@subcommand_class_for ||= {}
102
+ @@subcommand_class_for[name] = klass
103
+ super
104
+ end
105
+
106
+ def self.subcommand_class_for(name)
107
+ @@subcommand_class_for ||= {}
108
+ @@subcommand_class_for[name]
109
+ end
110
+
93
111
  end
94
112
 
95
113
  protected
@@ -1,3 +1,3 @@
1
1
  module EY
2
- VERSION = '1.0.2'
2
+ VERSION = '1.1.0'
3
3
  end
@@ -11,6 +11,24 @@ describe EY::CLI do
11
11
  EY.ui.should be_an(EY::CLI::UI)
12
12
  end
13
13
 
14
+ it "provides help" do
15
+ out = capture_stdout do
16
+ EY::CLI.start(["help"])
17
+ end
18
+
19
+ out.should include("ey deploy")
20
+ out.should include("ey ssh")
21
+ out.should include("ey web enable")
22
+ end
23
+
24
+ it "delegates help" do
25
+ out = capture_stdout do
26
+ EY::CLI.start(%w[help web enable])
27
+ end
28
+
29
+ out.should match(/remove the maintenance page/i)
30
+ end
31
+
14
32
  it "provides error classes" do
15
33
  EY::EnvironmentError.should be
16
34
  EY::BranchMismatchError.should be
data/spec/ey/ey_spec.rb CHANGED
@@ -13,4 +13,11 @@ describe "ey" do
13
13
  @err.should include("Could not find command")
14
14
  end
15
15
  end
16
+
17
+ context "run a command and a bad flag" do
18
+ it "tells the user that is not a valid flag" do
19
+ ey "help --expect-failure", :expect_failure => true
20
+ @err.should include("Unknown switches")
21
+ end
22
+ end
16
23
  end
data/spec/ey/ssh_spec.rb CHANGED
@@ -11,6 +11,47 @@ shared_examples_for "running ey ssh" do
11
11
  end
12
12
  end
13
13
 
14
+ shared_examples_for "running ey ssh for select role" do
15
+ given "integration"
16
+ include Spec::Helpers::SharedIntegrationTestUtils
17
+
18
+ def extra_ey_options
19
+ {:prepend_to_path => {'ssh' => "#!/bin/sh\necho ssh $*"}}
20
+ end
21
+
22
+ def command_to_run(opts)
23
+ cmd = "ssh #{opts[:ssh_command]}"
24
+ cmd << " #{@ssh_flag}"
25
+ cmd << " --environment #{opts[:env]}" if opts[:env]
26
+ cmd
27
+ end
28
+
29
+ it "runs the command on the right servers" do
30
+ api_scenario "one app, one environment"
31
+ run_ey(:ssh_command => "ls", :env => 'giblets', :verbose => true)
32
+ @hosts.each do |host|
33
+ @raw_ssh_commands.select do |command|
34
+ command =~ /^ssh turkey@#{host}.+ ls$/
35
+ end.should_not be_empty
36
+ end
37
+ @raw_ssh_commands.select do |command|
38
+ command =~ /^ssh turkey.+ ls$/
39
+ end.count.should == @hosts.count
40
+ end
41
+
42
+ it "raises an error when there are no matching hosts" do
43
+ api_scenario "one app, one environment, no instances"
44
+ run_ey({:ssh_command => "ls", :env => 'giblets', :verbose => true}, :expect_failure => true)
45
+ end
46
+
47
+ it "responds correctly when there is no command" do
48
+ if @hosts.count != 1
49
+ api_scenario "one app, one environment"
50
+ run_ey({:env => 'giblets', :verbose => true}, :expect_failure => true)
51
+ end
52
+ end
53
+ end
54
+
14
55
  describe "ey ssh" do
15
56
  it_should_behave_like "running ey ssh"
16
57
 
@@ -20,7 +61,7 @@ describe "ey ssh" do
20
61
 
21
62
  it "complains if it has no app master" do
22
63
  ey "ssh -e bakon", :expect_failure => true
23
- @err.should =~ /'bakon' does not have a master instance/
64
+ @err.should =~ /'bakon' does not have any matching instances/
24
65
  end
25
66
 
26
67
  end
@@ -59,56 +100,89 @@ describe "ey ssh with a command" do
59
100
  it_should_behave_like "it takes an environment name"
60
101
  end
61
102
 
103
+ describe "ey ssh --all" do
104
+ before do
105
+ @ssh_flag = "--all"
106
+ @hosts = %w(app_hostname
107
+ app_master_hostname
108
+ util_fluffy_hostname
109
+ util_rocky_hostname
110
+ db_master_hostname
111
+ db_slave_1_hostname
112
+ db_slave_2_hostname)
113
+ end
62
114
 
63
- describe "ey ssh --all with a command" do
64
115
  it_should_behave_like "running ey ssh"
116
+ it_should_behave_like "running ey ssh for select role"
117
+ end
65
118
 
66
- def command_to_run(opts)
67
- cmd = "ssh ls"
68
- cmd << " --all"
69
- cmd << " --environment #{opts[:env]}" if opts[:env]
70
- cmd
119
+ describe "ey ssh --app-servers" do
120
+ before do
121
+ @ssh_flag = "--app-servers"
122
+ @hosts = %w(app_hostname app_master_hostname)
71
123
  end
72
124
 
73
- it "runs the command on all servers" do
74
- api_scenario "one app, one environment"
75
- run_ey(:env => 'giblets', :verbose => true)
76
- @raw_ssh_commands.count do |command|
77
- command =~ /^ssh turkey@.+ ls$/
78
- end.should == 4
79
- end
125
+ it_should_behave_like "running ey ssh"
126
+ it_should_behave_like "running ey ssh for select role"
80
127
  end
81
128
 
82
- describe "ey ssh --all without a command" do
129
+ describe "ey ssh --db-master" do
130
+ before do
131
+ @ssh_flag = "--db-master"
132
+ @hosts = %w(db_master_hostname)
133
+ end
134
+
83
135
  it_should_behave_like "running ey ssh"
136
+ it_should_behave_like "running ey ssh for select role"
137
+ end
84
138
 
85
- def command_to_run(opts)
86
- cmd = "ssh"
87
- cmd << " --all"
88
- cmd << " --environment #{opts[:env]}" if opts[:env]
89
- cmd
139
+ describe "ey ssh --db-slaves" do
140
+ before do
141
+ @ssh_flag = "--db-slaves"
142
+ @hosts = %w(db_slave_1_hostname db_slave_2_hostname)
90
143
  end
91
144
 
92
- it "raises an error" do
93
- api_scenario "one app, one environment"
94
- run_ey({:env => 'giblets', :verbose => true}, :expect_failure => true)
95
- @err.grep(/NoCommandError/)
145
+ it_should_behave_like "running ey ssh"
146
+ it_should_behave_like "running ey ssh for select role"
147
+ end
148
+
149
+ describe "ey ssh --db-servers" do
150
+ before do
151
+ @ssh_flag = "--db-servers"
152
+ @hosts = %w(db_master_hostname db_slave_1_hostname db_slave_2_hostname)
96
153
  end
154
+
155
+ it_should_behave_like "running ey ssh"
156
+ it_should_behave_like "running ey ssh for select role"
97
157
  end
98
158
 
99
- describe "ey ssh --all without servers" do
159
+ describe "ey ssh --utilities" do
160
+ before do
161
+ @ssh_flag = "--utilities"
162
+ @hosts = %w(util_fluffy_hostname util_rocky_hostname)
163
+ end
164
+
100
165
  it_should_behave_like "running ey ssh"
166
+ it_should_behave_like "running ey ssh for select role"
167
+ end
101
168
 
102
- def command_to_run(opts)
103
- cmd = "ssh ls"
104
- cmd << " --all"
105
- cmd << " --environment #{opts[:env]}" if opts[:env]
106
- cmd
169
+ describe "ey ssh --utilities fluffy" do
170
+ before do
171
+ @ssh_flag = "--utilities fluffy"
172
+ @hosts = %w(util_fluffy_hostname)
107
173
  end
108
174
 
109
- it "raises an error" do
110
- api_scenario "one app, one environment, no instances"
111
- run_ey({:env => 'giblets', :verbose => true}, :expect_failure => true)
112
- @err.grep(/NoInstancesError/)
175
+ it_should_behave_like "running ey ssh"
176
+ it_should_behave_like "running ey ssh for select role"
177
+ end
178
+
179
+ describe "ey ssh --utilities fluffy rocky" do
180
+ before do
181
+ @ssh_flag = "--utilities fluffy rocky"
182
+ @hosts = %w(util_fluffy_hostname util_rocky_hostname)
113
183
  end
184
+
185
+ it_should_behave_like "running ey ssh"
186
+ it_should_behave_like "running ey ssh for select role"
114
187
  end
188
+
@@ -151,7 +151,7 @@ private
151
151
  "id" => 27220,
152
152
  "amazon_id" => 'i-ddbbdd92',
153
153
  "role" => "solo",
154
- "public_hostname" => "ec2-174-129-198-124.compute-1.amazonaws.com"}],
154
+ "public_hostname" => "app_master_hostname.compute-1.amazonaws.com"}],
155
155
  "name" => "giblets",
156
156
  "apps" => [],
157
157
  "instances_count" => 1,
@@ -163,7 +163,7 @@ private
163
163
  "id" => 27220,
164
164
  "amazon_id" => 'i-ddbbdd92',
165
165
  "role" => "solo",
166
- "public_hostname" => "ec2-174-129-198-124.compute-1.amazonaws.com"}}]
166
+ "public_hostname" => "app_master_hostname.compute-1.amazonaws.com"}}]
167
167
  end
168
168
  end # UnlinkedApp
169
169
 
@@ -175,28 +175,49 @@ private
175
175
  "name" => nil,
176
176
  "status" => "running",
177
177
  "amazon_id" => 'i-ddbbdd92',
178
- "public_hostname" => "ec2-174-129-198-124.compute-1.amazonaws.com",
178
+ "public_hostname" => "app_master_hostname.compute-1.amazonaws.com",
179
179
  }, {
180
180
  "id" => 22721,
181
181
  "name" => nil,
182
182
  "role" => "db_master",
183
183
  "status" => "running",
184
184
  "amazon_id" => "i-d4cdddbf",
185
- "public_hostname" => "ec2-174-129-142-53.compute-1.amazonaws.com",
185
+ "public_hostname" => "db_master_hostname.compute-1.amazonaws.com",
186
+ }, {
187
+ "id" => 22724,
188
+ "name" => nil,
189
+ "role" => "db_slave",
190
+ "status" => "running",
191
+ "amazon_id" => "i-asdfasdfaj",
192
+ "public_hostname" => "db_slave_1_hostname.compute-1.amazonaws.com",
193
+ }, {
194
+ "id" => 22725,
195
+ "name" => nil,
196
+ "role" => "db_slave",
197
+ "status" => "running",
198
+ "amazon_id" => "i-asdfasdfaj",
199
+ "public_hostname" => "db_slave_2_hostname.compute-1.amazonaws.com",
186
200
  }, {
187
201
  "id" => 22722,
188
202
  "role" => "app",
189
203
  "name" => nil,
190
204
  "status" => "building",
191
205
  "amazon_id" => "i-d2e3f1b9",
192
- "public_hostname" => "ec2-72-44-46-66.compute-1.amazonaws.com",
206
+ "public_hostname" => "app_hostname.compute-1.amazonaws.com",
193
207
  }, {
194
208
  "id" => 22723,
195
209
  "role" => "util",
196
210
  "name" => "fluffy",
197
211
  "status" => "running",
198
212
  "amazon_id" => "i-80e3f1eb",
199
- "public_hostname" => "ec2-184-73-116-228.compute-1.amazonaws.com",
213
+ "public_hostname" => "util_fluffy_hostname.compute-1.amazonaws.com",
214
+ }, {
215
+ "id" => 22727,
216
+ "role" => "util",
217
+ "name" => "rocky",
218
+ "status" => "running",
219
+ "amazon_id" => "i-80etf1eb",
220
+ "public_hostname" => "util_rocky_hostname.compute-1.amazonaws.com",
200
221
  }]
201
222
  end
202
223
  private :_instances
@@ -308,7 +329,7 @@ private
308
329
  "id" => 27220,
309
330
  "amazon_id" => 'i-ddbbdd92',
310
331
  "role" => "solo",
311
- "public_hostname" => "ec2-174-129-198-124.compute-1.amazonaws.com"}],
332
+ "public_hostname" => "app_master_hostname.compute-1.amazonaws.com"}],
312
333
  "name" => "giblets",
313
334
  "apps" => apps,
314
335
  "instances_count" => 1,
@@ -320,7 +341,7 @@ private
320
341
  "id" => 27220,
321
342
  "amazon_id" => 'i-ddbbdd92',
322
343
  "role" => "solo",
323
- "public_hostname" => "ec2-174-129-198-124.compute-1.amazonaws.com"}
344
+ "public_hostname" => "app_master_hostname.compute-1.amazonaws.com"}
324
345
  }, {
325
346
  "ssh_username" => "ham",
326
347
  "instances" => [],
@@ -342,7 +363,7 @@ private
342
363
  "id" => 27220,
343
364
  "amazon_id" => 'i-ddbbdd92',
344
365
  "role" => "solo",
345
- "public_hostname" => "ec2-174-129-198-124.compute-1.amazonaws.com"}],
366
+ "public_hostname" => "app_master_hostname.compute-1.amazonaws.com"}],
346
367
  "name" => "giblets",
347
368
  "apps" => [{
348
369
  "name" => "rails232app",
@@ -356,7 +377,7 @@ private
356
377
  "id" => 27220,
357
378
  "amazon_id" => 'i-ddbbdd92',
358
379
  "role" => "solo",
359
- "public_hostname" => "ec2-174-129-198-124.compute-1.amazonaws.com"}
380
+ "public_hostname" => "app_master_hostname.compute-1.amazonaws.com"}
360
381
  }, {
361
382
  "ssh_username" => "ham",
362
383
  "instances" => [],
@@ -399,7 +420,7 @@ private
399
420
  "status" => "running",
400
421
  "name" => nil,
401
422
  "role" => "solo",
402
- "public_hostname" => "ec2-174-129-198-124.compute-1.amazonaws.com",
423
+ "public_hostname" => "app_master_hostname.compute-1.amazonaws.com",
403
424
  "id" => 75428,
404
425
  "amazon_id" => "i-051195b9",
405
426
  }
@@ -489,7 +510,7 @@ private
489
510
  "id" => 27220,
490
511
  "amazon_id" => 'i-ddbbdd92',
491
512
  "role" => "solo",
492
- "public_hostname" => "ec2-174-129-198-124.compute-1.amazonaws.com"}],
513
+ "public_hostname" => "app_master_hostname.compute-1.amazonaws.com"}],
493
514
  "name" => "railsapp_production",
494
515
  "apps" => apps,
495
516
  "instances_count" => 1,
@@ -501,7 +522,7 @@ private
501
522
  "id" => 27220,
502
523
  "amazon_id" => 'i-ddbbdd92',
503
524
  "role" => "solo",
504
- "public_hostname" => "ec2-174-129-198-124.compute-1.amazonaws.com",
525
+ "public_hostname" => "app_master_hostname.compute-1.amazonaws.com",
505
526
  },
506
527
  }, {
507
528
  "ssh_username" => "ham",
@@ -529,7 +550,7 @@ private
529
550
  "status" => "running",
530
551
  "id" => 59395,
531
552
  "role" => "solo",
532
- "public_hostname" => "ec2-174-129-198-124.compute-1.amazonaws.com",
553
+ "public_hostname" => "app_master_hostname.compute-1.amazonaws.com",
533
554
  }],
534
555
  "name" => "railsapp_staging_2",
535
556
  "apps" => apps,
@@ -555,7 +576,7 @@ private
555
576
  "id" => 27220,
556
577
  "amazon_id" => 'i-ddbbdd92',
557
578
  "role" => "solo",
558
- "public_hostname" => "ec2-174-129-198-124.compute-1.amazonaws.com"}],
579
+ "public_hostname" => "app_master_hostname.compute-1.amazonaws.com"}],
559
580
  "name" => "railsapp_production",
560
581
  "apps" => [{
561
582
  "name" => "rails232app",
@@ -565,7 +586,7 @@ private
565
586
  "id" => 200,
566
587
  "framework_env" => "production",
567
588
  "app_master" => {
568
- "public_hostname" => "ec2-174-129-198-124.compute-1.amazonaws.com",
589
+ "public_hostname" => "app_master_hostname.compute-1.amazonaws.com",
569
590
  "status" => "running",
570
591
  "id" => 27220,
571
592
  "amazon_id" => 'i-ddbbdd92',
@@ -32,7 +32,7 @@ shared_examples_for "it takes an environment name" do
32
32
  verify_ran(make_scenario({
33
33
  :environment => 'giblets',
34
34
  :application => 'rails232app',
35
- :master_hostname => 'ec2-174-129-198-124.compute-1.amazonaws.com',
35
+ :master_hostname => 'app_master_hostname.compute-1.amazonaws.com',
36
36
  :ssh_username => 'turkey',
37
37
  }))
38
38
  end
@@ -59,7 +59,7 @@ shared_examples_for "it takes an environment name" do
59
59
  verify_ran(make_scenario({
60
60
  :environment => 'railsapp_production',
61
61
  :application => 'rails232app',
62
- :master_hostname => 'ec2-174-129-198-124.compute-1.amazonaws.com',
62
+ :master_hostname => 'app_master_hostname.compute-1.amazonaws.com',
63
63
  :ssh_username => 'turkey',
64
64
  }))
65
65
  end
@@ -82,7 +82,7 @@ shared_examples_for "it takes an app name" do
82
82
  verify_ran(make_scenario({
83
83
  :environment => 'giblets',
84
84
  :application => 'rails232app',
85
- :master_hostname => 'ec2-174-129-198-124.compute-1.amazonaws.com',
85
+ :master_hostname => 'app_master_hostname.compute-1.amazonaws.com',
86
86
  :ssh_username => 'turkey',
87
87
  }))
88
88
  end
@@ -95,7 +95,7 @@ shared_examples_for "it takes an app name" do
95
95
  verify_ran(make_scenario({
96
96
  :environment => 'giblets',
97
97
  :application => 'rails232app',
98
- :master_hostname => 'ec2-174-129-198-124.compute-1.amazonaws.com',
98
+ :master_hostname => 'app_master_hostname.compute-1.amazonaws.com',
99
99
  :ssh_username => 'turkey',
100
100
  }))
101
101
  end
@@ -125,12 +125,12 @@ shared_examples_for "it invokes ey-deploy" do
125
125
 
126
126
  it "passes along instance information to ey-deploy" do
127
127
  instance_args = [
128
- Regexp.quote("ec2-174-129-198-124.compute-1.amazonaws.com,app_master"),
129
- Regexp.quote("ec2-72-44-46-66.compute-1.amazonaws.com,app"),
130
- Regexp.quote("ec2-184-73-116-228.compute-1.amazonaws.com,util,fluffy"),
128
+ Regexp.quote("app_master_hostname.compute-1.amazonaws.com,app_master"),
129
+ Regexp.quote("app_hostname.compute-1.amazonaws.com,app"),
130
+ Regexp.quote("util_fluffy_hostname.compute-1.amazonaws.com,util,fluffy"),
131
131
  ]
132
132
 
133
- db_instance = Regexp.quote("ec2-174-129-142-53.compute-1.amazonaws.com,db_master")
133
+ db_instance = Regexp.quote("db_master_hostname.compute-1.amazonaws.com,db_master")
134
134
 
135
135
  # apps + utilities are all mentioned
136
136
  instance_args.each do |i|
metadata CHANGED
@@ -5,9 +5,9 @@ version: !ruby/object:Gem::Version
5
5
  prerelease: false
6
6
  segments:
7
7
  - 1
8
+ - 1
8
9
  - 0
9
- - 2
10
- version: 1.0.2
10
+ version: 1.1.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - EY Cloud Team
@@ -15,23 +15,21 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-07-29 00:00:00 -07:00
18
+ date: 2010-08-04 00:00:00 -07:00
19
19
  default_executable: ey
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
22
  version_requirements: &id001 !ruby/object:Gem::Requirement
23
23
  none: false
24
24
  requirements:
25
- - - ~>
25
+ - - ">="
26
26
  - !ruby/object:Gem::Version
27
- hash: 59
27
+ hash: 3
28
28
  segments:
29
29
  - 0
30
- - 13
31
- - 8
32
- version: 0.13.8
30
+ version: "0"
33
31
  requirement: *id001
34
- name: thor
32
+ name: termios
35
33
  prerelease: false
36
34
  type: :runtime
37
35
  - !ruby/object:Gem::Dependency
@@ -43,10 +41,11 @@ dependencies:
43
41
  hash: 7
44
42
  segments:
45
43
  - 1
46
- - 4
47
- version: "1.4"
44
+ - 5
45
+ - 2
46
+ version: 1.5.2
48
47
  requirement: *id002
49
- name: rest-client
48
+ name: highline
50
49
  prerelease: false
51
50
  type: :runtime
52
51
  - !ruby/object:Gem::Dependency
@@ -55,28 +54,30 @@ dependencies:
55
54
  requirements:
56
55
  - - ~>
57
56
  - !ruby/object:Gem::Version
58
- hash: 7
57
+ hash: 39
59
58
  segments:
60
- - 1
61
- - 5
62
- - 2
63
- version: 1.5.2
59
+ - 0
60
+ - 14
61
+ - 0
62
+ version: 0.14.0
64
63
  requirement: *id003
65
- name: highline
64
+ name: thor
66
65
  prerelease: false
67
66
  type: :runtime
68
67
  - !ruby/object:Gem::Dependency
69
68
  version_requirements: &id004 !ruby/object:Gem::Requirement
70
69
  none: false
71
70
  requirements:
72
- - - ">="
71
+ - - ~>
73
72
  - !ruby/object:Gem::Version
74
- hash: 3
73
+ hash: 23
75
74
  segments:
76
75
  - 0
77
- version: "0"
76
+ - 0
77
+ - 4
78
+ version: 0.0.4
78
79
  requirement: *id004
79
- name: termios
80
+ name: escape
80
81
  prerelease: false
81
82
  type: :runtime
82
83
  - !ruby/object:Gem::Dependency
@@ -101,14 +102,13 @@ dependencies:
101
102
  requirements:
102
103
  - - ~>
103
104
  - !ruby/object:Gem::Version
104
- hash: 23
105
+ hash: 7
105
106
  segments:
106
- - 0
107
- - 0
107
+ - 1
108
108
  - 4
109
- version: 0.0.4
109
+ version: "1.4"
110
110
  requirement: *id006
111
- name: escape
111
+ name: rest-client
112
112
  prerelease: false
113
113
  type: :runtime
114
114
  description: This gem allows you to deploy your rails application to the Engine Yard cloud directly from the command line.