engineyard 1.0.2 → 1.1.0

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.
@@ -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.