engineyard 1.3.17 → 1.3.18

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,361 @@
1
+ module Scenario
2
+ class Base
3
+ attr_accessor :git_remote
4
+
5
+ def initialize(git_remote)
6
+ self.git_remote = git_remote
7
+ end
8
+
9
+ def starting_accounts() [{"name" => "main"}] end
10
+ def starting_apps() [] end
11
+ def starting_environments() [] end
12
+ def starting_app_joins() [] end
13
+
14
+ end
15
+
16
+ class LinkedApp < Base
17
+ def _instances
18
+ [{
19
+ "id" => 27220,
20
+ "role" => "app_master",
21
+ "name" => nil,
22
+ "status" => "running",
23
+ "amazon_id" => 'i-ddbbdd92',
24
+ "public_hostname" => "app_master_hostname.compute-1.amazonaws.com",
25
+ }, {
26
+ "id" => 22721,
27
+ "name" => nil,
28
+ "role" => "db_master",
29
+ "status" => "running",
30
+ "amazon_id" => "i-d4cdddbf",
31
+ "public_hostname" => "db_master_hostname.compute-1.amazonaws.com",
32
+ }, {
33
+ "id" => 22724,
34
+ "name" => nil,
35
+ "role" => "db_slave",
36
+ "status" => "running",
37
+ "amazon_id" => "i-asdfasdfaj",
38
+ "public_hostname" => "db_slave_1_hostname.compute-1.amazonaws.com",
39
+ }, {
40
+ "id" => 22725,
41
+ "name" => nil,
42
+ "role" => "db_slave",
43
+ "status" => "running",
44
+ "amazon_id" => "i-asdfasdfaj",
45
+ "public_hostname" => "db_slave_2_hostname.compute-1.amazonaws.com",
46
+ }, {
47
+ "id" => 22722,
48
+ "role" => "app",
49
+ "name" => nil,
50
+ "status" => "building",
51
+ "amazon_id" => "i-d2e3f1b9",
52
+ "public_hostname" => "app_hostname.compute-1.amazonaws.com",
53
+ }, {
54
+ "id" => 22723,
55
+ "role" => "util",
56
+ "name" => "fluffy",
57
+ "status" => "running",
58
+ "amazon_id" => "i-80e3f1eb",
59
+ "public_hostname" => "util_fluffy_hostname.compute-1.amazonaws.com",
60
+ }, {
61
+ "id" => 22727,
62
+ "role" => "util",
63
+ "name" => "rocky",
64
+ "status" => "running",
65
+ "amazon_id" => "i-80etf1eb",
66
+ "public_hostname" => "util_rocky_hostname.compute-1.amazonaws.com",
67
+ }]
68
+ end
69
+ private :_instances
70
+
71
+ def starting_apps
72
+ [{
73
+ "id" => 1001,
74
+ "name" => "rails232app",
75
+ "repository_uri" => git_remote}]
76
+ end
77
+
78
+ def starting_environments
79
+ [{
80
+ "id" => 200,
81
+ "ssh_username" => "turkey",
82
+ "instances" => _instances,
83
+ "name" => "giblets",
84
+ "instances_count" => 4,
85
+ "stack_name" => "nginx_mongrel",
86
+ "framework_env" => "production"}]
87
+ end
88
+
89
+ def starting_app_joins
90
+ [[1001, 200]]
91
+ end
92
+
93
+ end # LinkedApp
94
+
95
+ class MultipleAmbiguousAccounts < LinkedApp
96
+ def starting_accounts
97
+ super + [{"name" => "account_2", "id" => 256}]
98
+ end
99
+
100
+ def starting_apps
101
+ apps = super
102
+ new_app = apps.first.dup
103
+ new_app["id"] += 1000
104
+ new_app["account"] = starting_accounts.last
105
+ apps + [new_app]
106
+ end
107
+
108
+ def starting_environments
109
+ envs = super
110
+ new_env = envs.first.dup
111
+ new_env["id"] += 1000
112
+ new_env["account"] = starting_accounts.last
113
+ envs + [new_env]
114
+ end
115
+
116
+ def starting_app_joins
117
+ joins = super
118
+ new_join = [joins.first[0] + 1000,
119
+ joins.first[1] + 1000]
120
+ joins + [new_join]
121
+ end
122
+ end
123
+
124
+ class UnlinkedApp < Base
125
+ def starting_apps
126
+ [{
127
+ "id" => 1001,
128
+ "name" => "rails232app",
129
+ "repository_uri" => git_remote}]
130
+ end
131
+
132
+ def starting_environments
133
+ [{
134
+ "ssh_username" => "turkey",
135
+ "instances" => [{
136
+ "status" => "running",
137
+ "id" => 27220,
138
+ "amazon_id" => 'i-ddbbdd92',
139
+ "role" => "solo",
140
+ "public_hostname" => "ec2-174-129-198-124.compute-1.amazonaws.com"}],
141
+ "name" => "giblets",
142
+ "instances_count" => 1,
143
+ "stack_name" => "nginx_mongrel",
144
+ "id" => 200,
145
+ "framework_env" => "production"}]
146
+ end
147
+ end # UnlinkedApp
148
+
149
+ class LinkedAppNotRunning < Base
150
+ def starting_apps
151
+ [{
152
+ "id" => 1001,
153
+ "name" => "rails232app",
154
+ "repository_uri" => git_remote}]
155
+ end
156
+
157
+ def starting_environments
158
+ [{
159
+ "ssh_username" => "turkey",
160
+ "instances" => [],
161
+ "name" => "giblets",
162
+ "instances_count" => 0,
163
+ "stack_name" => "nginx_mongrel",
164
+ "id" => 200,
165
+ "framework_env" => "production"}]
166
+ end
167
+
168
+ def starting_app_joins
169
+ [[1001, 200]]
170
+ end
171
+ end # LinkedAppNotRunning
172
+
173
+ class LinkedAppRedMaster < LinkedApp
174
+ def starting_environments
175
+ envs = super
176
+ envs[0]["instances"][0]["status"] = "error"
177
+ envs
178
+ end
179
+ end
180
+
181
+ class OneAppManyEnvs < Base
182
+ def starting_apps
183
+ [{
184
+ "id" => 1001,
185
+ "name" => "rails232app",
186
+ "repository_uri" => git_remote}]
187
+ end
188
+
189
+ def starting_app_joins
190
+ [
191
+ [1001, 200],
192
+ [1001, 202],
193
+ ]
194
+ end
195
+
196
+ def starting_environments
197
+ [{
198
+ "ssh_username" => "turkey",
199
+ "instances" => [{
200
+ "status" => "running",
201
+ "id" => 27220,
202
+ "amazon_id" => 'i-ddbbdd92',
203
+ "role" => "solo",
204
+ "public_hostname" => "app_master_hostname.compute-1.amazonaws.com"}],
205
+ "name" => "giblets",
206
+ "instances_count" => 1,
207
+ "stack_name" => "nginx_mongrel",
208
+ "id" => 200,
209
+ "framework_env" => "production",
210
+ }, {
211
+ "ssh_username" => "ham",
212
+ "instances" => [],
213
+ "name" => "bakon",
214
+ "instances_count" => 0,
215
+ "stack_name" => "nginx_passenger",
216
+ "id" => 202,
217
+ }, {
218
+ "ssh_username" => "hamburger",
219
+ "instances" => [],
220
+ "name" => "beef",
221
+ "instances_count" => 0,
222
+ "stack_name" => "nginx_passenger",
223
+ "id" => 206,
224
+ }]
225
+ end
226
+ end # OneAppTwoEnvs
227
+
228
+ class TwoApps < Base
229
+ def railsapp_master
230
+ {
231
+ "status" => "running",
232
+ "name" => nil,
233
+ "role" => "solo",
234
+ "public_hostname" => "ec2-174-129-7-113.compute-1.amazonaws.com",
235
+ "id" => 35707,
236
+ "amazon_id" => "i-0911f063",
237
+ }
238
+ end
239
+ private :railsapp_master
240
+
241
+ def keycollector_master
242
+ {
243
+ "status" => "running",
244
+ "name" => nil,
245
+ "role" => "solo",
246
+ "public_hostname" => "app_master_hostname.compute-1.amazonaws.com",
247
+ "id" => 75428,
248
+ "amazon_id" => "i-051195b9",
249
+ }
250
+ end
251
+ private :keycollector_master
252
+
253
+ def starting_apps
254
+ [{
255
+ "id" => 3202,
256
+ "name" => "keycollector",
257
+ "repository_uri" => "git@github.com:smerritt/keycollector.git",
258
+ }, {
259
+ "id" => 6125,
260
+ "name" => "rails232app",
261
+ "repository_uri" => "git://github.com/smerritt/rails232app.git"}]
262
+ end
263
+
264
+ def starting_app_joins
265
+ [
266
+ [6125, 200],
267
+ [3202, 439],
268
+ ]
269
+ end
270
+
271
+ def starting_environments
272
+ [{
273
+ "id" => 200,
274
+ "name" => "giblets",
275
+ "framework_env" => "staging",
276
+ "ssh_username" => "turkey",
277
+ "instances_count" => 1,
278
+ "instances" => [railsapp_master],
279
+ "stack_name" => "nginx_unicorn",
280
+ }, {
281
+ "id" => 439,
282
+ "framework_env" => "production",
283
+ "name" => "keycollector_production",
284
+ "ssh_username" => "deploy",
285
+ "stack_name" => "nginx_mongrel",
286
+ "instances_count" => 1,
287
+ "instances" => [keycollector_master],
288
+ }]
289
+ end
290
+ end # TwoApps
291
+
292
+ class TwoAppsSameGitUri < TwoApps
293
+ def starting_apps
294
+ apps = super
295
+ apps.each do |app|
296
+ app["repository_uri"] = "git://github.com/engineyard/dup.git"
297
+ end
298
+ apps
299
+ end
300
+ end # TwoAppsSameGitUri
301
+
302
+ class OneAppManySimilarlyNamedEnvs < Base
303
+ def starting_apps
304
+ [{
305
+ "id" => 1001,
306
+ "name" => "rails232app",
307
+ "repository_uri" => git_remote}]
308
+ end
309
+
310
+ def starting_environments
311
+ [{
312
+ "id" => 200,
313
+ "ssh_username" => "turkey",
314
+ "instances" => [{
315
+ "status" => "running",
316
+ "id" => 27220,
317
+ "amazon_id" => 'i-ddbbdd92',
318
+ "role" => "solo",
319
+ "public_hostname" => "app_master_hostname.compute-1.amazonaws.com"}],
320
+ "name" => "railsapp_production",
321
+ "instances_count" => 1,
322
+ "stack_name" => "nginx_mongrel",
323
+ "framework_env" => "production",
324
+ }, {
325
+ "id" => 202,
326
+ "ssh_username" => "ham",
327
+ "instances" => [{
328
+ "public_hostname" => '127.3.2.1',
329
+ "status" => "running",
330
+ "id" => 63066,
331
+ "role" => "solo",
332
+ }],
333
+ "name" => "railsapp_staging",
334
+ "instances_count" => 1,
335
+ "stack_name" => "nginx_passenger",
336
+ "framework_env" => "production",
337
+ }, {
338
+ "ssh_username" => "ham",
339
+ "instances" => [{
340
+ "status" => "running",
341
+ "id" => 59395,
342
+ "role" => "solo",
343
+ "public_hostname" => "ec2-174-129-198-124.compute-1.amazonaws.com",
344
+ }],
345
+ "name" => "railsapp_staging_2",
346
+ "instances_count" => 1,
347
+ "stack_name" => "nginx_passenger",
348
+ "id" => 204,
349
+ "framework_env" => "production",
350
+ }]
351
+ end
352
+
353
+ def starting_app_joins
354
+ [
355
+ [1001, 200],
356
+ [1001, 202],
357
+ [1001, 204],
358
+ ]
359
+ end
360
+ end # OneAppManySimilarlyNamedEnvs
361
+ end
@@ -139,11 +139,13 @@ shared_examples_for "it takes an environment name" do
139
139
  end
140
140
 
141
141
  context "outside a git repo" do
142
+
142
143
  define_git_repo("not actually a git repo") do |git_dir|
143
144
  # in case we screw up and are not in a freshly-generated test
144
145
  # git repository, don't blow away the thing we're developing
145
146
  system("rm -rf .git") if `git remote -v`.include?("path/to/repo.git")
146
147
  git_dir.join("cookbooks").mkdir
148
+ link_recipes_tgz(git_dir)
147
149
  end
148
150
 
149
151
  use_git_repo("not actually a git repo")
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: engineyard
3
3
  version: !ruby/object:Gem::Version
4
- hash: 57
4
+ hash: 63
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 3
9
- - 17
10
- version: 1.3.17
9
+ - 18
10
+ version: 1.3.18
11
11
  platform: ruby
12
12
  authors:
13
13
  - EY Cloud Team
@@ -15,10 +15,13 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-02-17 00:00:00 -08:00
18
+ date: 2011-05-08 00:00:00 -07:00
19
19
  default_executable: ey
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
+ name: thor
23
+ prerelease: false
24
+ type: :runtime
22
25
  version_requirements: &id001 !ruby/object:Gem::Requirement
23
26
  none: false
24
27
  requirements:
@@ -30,11 +33,11 @@ dependencies:
30
33
  - 14
31
34
  - 6
32
35
  version: 0.14.6
33
- type: :runtime
34
36
  requirement: *id001
35
- name: thor
36
- prerelease: false
37
37
  - !ruby/object:Gem::Dependency
38
+ name: rest-client
39
+ prerelease: false
40
+ type: :runtime
38
41
  version_requirements: &id002 !ruby/object:Gem::Requirement
39
42
  none: false
40
43
  requirements:
@@ -46,11 +49,11 @@ dependencies:
46
49
  - 6
47
50
  - 0
48
51
  version: 1.6.0
49
- type: :runtime
50
52
  requirement: *id002
51
- name: rest-client
52
- prerelease: false
53
53
  - !ruby/object:Gem::Dependency
54
+ name: highline
55
+ prerelease: false
56
+ type: :runtime
54
57
  version_requirements: &id003 !ruby/object:Gem::Requirement
55
58
  none: false
56
59
  requirements:
@@ -62,11 +65,11 @@ dependencies:
62
65
  - 6
63
66
  - 1
64
67
  version: 1.6.1
65
- type: :runtime
66
68
  requirement: *id003
67
- name: highline
68
- prerelease: false
69
69
  - !ruby/object:Gem::Dependency
70
+ name: json_pure
71
+ prerelease: false
72
+ type: :runtime
70
73
  version_requirements: &id004 !ruby/object:Gem::Requirement
71
74
  none: false
72
75
  requirements:
@@ -76,11 +79,11 @@ dependencies:
76
79
  segments:
77
80
  - 0
78
81
  version: "0"
79
- type: :runtime
80
82
  requirement: *id004
81
- name: json_pure
82
- prerelease: false
83
83
  - !ruby/object:Gem::Dependency
84
+ name: escape
85
+ prerelease: false
86
+ type: :runtime
84
87
  version_requirements: &id005 !ruby/object:Gem::Requirement
85
88
  none: false
86
89
  requirements:
@@ -92,11 +95,11 @@ dependencies:
92
95
  - 0
93
96
  - 4
94
97
  version: 0.0.4
95
- type: :runtime
96
98
  requirement: *id005
97
- name: escape
98
- prerelease: false
99
99
  - !ruby/object:Gem::Dependency
100
+ name: engineyard-serverside-adapter
101
+ prerelease: false
102
+ type: :runtime
100
103
  version_requirements: &id006 !ruby/object:Gem::Requirement
101
104
  none: false
102
105
  requirements:
@@ -108,11 +111,11 @@ dependencies:
108
111
  - 4
109
112
  - 1
110
113
  version: 1.4.1
111
- type: :runtime
112
114
  requirement: *id006
113
- name: engineyard-serverside-adapter
114
- prerelease: false
115
115
  - !ruby/object:Gem::Dependency
116
+ name: net-ssh
117
+ prerelease: false
118
+ type: :runtime
116
119
  version_requirements: &id007 !ruby/object:Gem::Requirement
117
120
  none: false
118
121
  requirements:
@@ -124,11 +127,11 @@ dependencies:
124
127
  - 1
125
128
  - 0
126
129
  version: 2.1.0
127
- type: :runtime
128
130
  requirement: *id007
129
- name: net-ssh
130
- prerelease: false
131
131
  - !ruby/object:Gem::Dependency
132
+ name: rspec
133
+ prerelease: false
134
+ type: :development
132
135
  version_requirements: &id008 !ruby/object:Gem::Requirement
133
136
  none: false
134
137
  requirements:
@@ -140,11 +143,11 @@ dependencies:
140
143
  - 3
141
144
  - 0
142
145
  version: 1.3.0
143
- type: :development
144
146
  requirement: *id008
145
- name: rspec
146
- prerelease: false
147
147
  - !ruby/object:Gem::Dependency
148
+ name: rake
149
+ prerelease: false
150
+ type: :development
148
151
  version_requirements: &id009 !ruby/object:Gem::Requirement
149
152
  none: false
150
153
  requirements:
@@ -154,11 +157,11 @@ dependencies:
154
157
  segments:
155
158
  - 0
156
159
  version: "0"
157
- type: :development
158
160
  requirement: *id009
159
- name: rake
160
- prerelease: false
161
161
  - !ruby/object:Gem::Dependency
162
+ name: fakeweb
163
+ prerelease: false
164
+ type: :development
162
165
  version_requirements: &id010 !ruby/object:Gem::Requirement
163
166
  none: false
164
167
  requirements:
@@ -168,11 +171,11 @@ dependencies:
168
171
  segments:
169
172
  - 0
170
173
  version: "0"
171
- type: :development
172
174
  requirement: *id010
173
- name: fakeweb
174
- prerelease: false
175
175
  - !ruby/object:Gem::Dependency
176
+ name: fakeweb-matcher
177
+ prerelease: false
178
+ type: :development
176
179
  version_requirements: &id011 !ruby/object:Gem::Requirement
177
180
  none: false
178
181
  requirements:
@@ -182,11 +185,11 @@ dependencies:
182
185
  segments:
183
186
  - 0
184
187
  version: "0"
185
- type: :development
186
188
  requirement: *id011
187
- name: fakeweb-matcher
188
- prerelease: false
189
189
  - !ruby/object:Gem::Dependency
190
+ name: fakefs
191
+ prerelease: false
192
+ type: :development
190
193
  version_requirements: &id012 !ruby/object:Gem::Requirement
191
194
  none: false
192
195
  requirements:
@@ -196,11 +199,11 @@ dependencies:
196
199
  segments:
197
200
  - 0
198
201
  version: "0"
199
- type: :development
200
202
  requirement: *id012
201
- name: fakefs
202
- prerelease: false
203
203
  - !ruby/object:Gem::Dependency
204
+ name: bundler
205
+ prerelease: false
206
+ type: :development
204
207
  version_requirements: &id013 !ruby/object:Gem::Requirement
205
208
  none: false
206
209
  requirements:
@@ -212,11 +215,11 @@ dependencies:
212
215
  - 0
213
216
  - 0
214
217
  version: 1.0.0
215
- type: :development
216
218
  requirement: *id013
217
- name: bundler
218
- prerelease: false
219
219
  - !ruby/object:Gem::Dependency
220
+ name: sinatra
221
+ prerelease: false
222
+ type: :development
220
223
  version_requirements: &id014 !ruby/object:Gem::Requirement
221
224
  none: false
222
225
  requirements:
@@ -226,11 +229,11 @@ dependencies:
226
229
  segments:
227
230
  - 0
228
231
  version: "0"
229
- type: :development
230
232
  requirement: *id014
231
- name: sinatra
232
- prerelease: false
233
233
  - !ruby/object:Gem::Dependency
234
+ name: realweb
235
+ prerelease: false
236
+ type: :development
234
237
  version_requirements: &id015 !ruby/object:Gem::Requirement
235
238
  none: false
236
239
  requirements:
@@ -242,11 +245,11 @@ dependencies:
242
245
  - 1
243
246
  - 6
244
247
  version: 0.1.6
245
- type: :development
246
248
  requirement: *id015
247
- name: realweb
248
- prerelease: false
249
249
  - !ruby/object:Gem::Dependency
250
+ name: open4
251
+ prerelease: false
252
+ type: :development
250
253
  version_requirements: &id016 !ruby/object:Gem::Requirement
251
254
  none: false
252
255
  requirements:
@@ -258,10 +261,7 @@ dependencies:
258
261
  - 0
259
262
  - 1
260
263
  version: 1.0.1
261
- type: :development
262
264
  requirement: *id016
263
- name: open4
264
- prerelease: false
265
265
  description: This gem allows you to deploy your rails application to the Engine Yard cloud directly from the command line.
266
266
  email: cloud@engineyard.com
267
267
  executables:
@@ -327,9 +327,11 @@ files:
327
327
  - spec/spec_helper.rb
328
328
  - spec/support/bundled_ey
329
329
  - spec/support/fake_awsm.ru
330
+ - spec/support/fixture_recipes.tgz
330
331
  - spec/support/git_repo.rb
331
332
  - spec/support/helpers.rb
332
333
  - spec/support/ruby_ext.rb
334
+ - spec/support/scenarios.rb
333
335
  - spec/support/shared_behavior.rb
334
336
  has_rdoc: true
335
337
  homepage: http://github.com/engineyard/engineyard
@@ -373,7 +375,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
373
375
  requirements: []
374
376
 
375
377
  rubyforge_project:
376
- rubygems_version: 1.4.2
378
+ rubygems_version: 1.5.0
377
379
  signing_key:
378
380
  specification_version: 3
379
381
  summary: Command-line deployment for the Engine Yard cloud
@@ -405,7 +407,9 @@ test_files:
405
407
  - spec/spec_helper.rb
406
408
  - spec/support/bundled_ey
407
409
  - spec/support/fake_awsm.ru
410
+ - spec/support/fixture_recipes.tgz
408
411
  - spec/support/git_repo.rb
409
412
  - spec/support/helpers.rb
410
413
  - spec/support/ruby_ext.rb
414
+ - spec/support/scenarios.rb
411
415
  - spec/support/shared_behavior.rb