engineyard 1.3.15 → 1.3.16
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/lib/engineyard/cli.rb +1 -1
- data/lib/engineyard/version.rb +1 -1
- data/spec/ey/deploy_spec.rb +8 -8
- data/spec/ey/ey_spec.rb +2 -2
- data/spec/ey/list_environments_spec.rb +6 -6
- data/spec/ey/logs_spec.rb +5 -5
- data/spec/ey/rebuild_spec.rb +3 -3
- data/spec/ey/recipes/apply_spec.rb +5 -5
- data/spec/ey/recipes/download_spec.rb +5 -5
- data/spec/ey/recipes/upload_spec.rb +6 -6
- data/spec/ey/rollback_spec.rb +8 -8
- data/spec/ey/ssh_spec.rb +43 -20
- data/spec/ey/web/disable_spec.rb +5 -5
- data/spec/ey/web/enable_spec.rb +6 -6
- data/spec/spec_helper.rb +1 -0
- data/spec/support/helpers.rb +2 -2
- data/spec/support/shared_behavior.rb +1 -1
- metadata +156 -23
- data/lib/engineyard/cli/#recipes.rb# +0 -32
data/lib/engineyard/cli.rb
CHANGED
@@ -189,7 +189,7 @@ module EY
|
|
189
189
|
raise NoCommandError.new if cmd.nil? and hosts.count != 1
|
190
190
|
|
191
191
|
hosts.each do |host|
|
192
|
-
system
|
192
|
+
system Escape.shell_command(['ssh', "#{environment.username}@#{host}", cmd].compact)
|
193
193
|
end
|
194
194
|
end
|
195
195
|
|
data/lib/engineyard/version.rb
CHANGED
data/spec/ey/deploy_spec.rb
CHANGED
@@ -11,7 +11,7 @@ describe "ey deploy without an eyrc file" do
|
|
11
11
|
end
|
12
12
|
|
13
13
|
it "prompts for authentication before continuing" do
|
14
|
-
ey(
|
14
|
+
ey(%w[deploy], :hide_err => true) do |input|
|
15
15
|
input.puts("test@test.test")
|
16
16
|
input.puts("test")
|
17
17
|
end
|
@@ -28,12 +28,12 @@ describe "ey deploy" do
|
|
28
28
|
given "integration"
|
29
29
|
|
30
30
|
def command_to_run(opts)
|
31
|
-
cmd = "deploy"
|
32
|
-
cmd << "
|
33
|
-
cmd << "
|
34
|
-
cmd << "
|
35
|
-
cmd << "
|
36
|
-
cmd << "
|
31
|
+
cmd = ["deploy"]
|
32
|
+
cmd << "--environment" << opts[:environment] if opts[:environment]
|
33
|
+
cmd << "--app" << opts[:app] if opts[:app]
|
34
|
+
cmd << "--account" << opts[:account] if opts[:account]
|
35
|
+
cmd << "--ref" << opts[:ref] if opts[:ref]
|
36
|
+
cmd << "--verbose" if opts[:verbose]
|
37
37
|
cmd
|
38
38
|
end
|
39
39
|
|
@@ -308,7 +308,7 @@ describe "ey deploy" do
|
|
308
308
|
end
|
309
309
|
|
310
310
|
it "passes the extra configuration to engineyard-serverside" do
|
311
|
-
ey
|
311
|
+
ey %w[deploy --extra-deploy-hook-options some:stuff more:crap]
|
312
312
|
extra_deploy_hook_options.should_not be_nil
|
313
313
|
extra_deploy_hook_options['some'].should == 'stuff'
|
314
314
|
extra_deploy_hook_options['more'].should == 'crap'
|
data/spec/ey/ey_spec.rb
CHANGED
@@ -9,14 +9,14 @@ describe "ey" do
|
|
9
9
|
|
10
10
|
context "run with an argument that is not a command" do
|
11
11
|
it "tells the user that is not a command" do
|
12
|
-
ey
|
12
|
+
ey %w[foobarbaz], :expect_failure => true
|
13
13
|
@err.should include("Could not find command")
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
17
|
context "run a command and a bad flag" do
|
18
18
|
it "tells the user that is not a valid flag" do
|
19
|
-
ey
|
19
|
+
ey %w[help --expect-failure], :expect_failure => true
|
20
20
|
@err.should include("Unknown switches")
|
21
21
|
end
|
22
22
|
end
|
@@ -9,7 +9,7 @@ describe "ey environments" do
|
|
9
9
|
end
|
10
10
|
|
11
11
|
it "lists the environments your app is in" do
|
12
|
-
ey
|
12
|
+
ey %w[environments]
|
13
13
|
@out.should include('rails232app (main)')
|
14
14
|
@out.should =~ /giblets/
|
15
15
|
@out.should =~ /bakon/
|
@@ -17,25 +17,25 @@ describe "ey environments" do
|
|
17
17
|
|
18
18
|
it "reports failure to find a git repo when not in one" do
|
19
19
|
Dir.chdir("/tmp") do
|
20
|
-
ey
|
20
|
+
ey %w[environments], :expect_failure => true
|
21
21
|
@err.should =~ /fatal: No git remotes found in .*\/tmp/
|
22
22
|
@out.should_not =~ /no application configured/
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
26
|
it "lists all environments that have apps with -a" do
|
27
|
-
ey
|
27
|
+
ey %w[environments -a]
|
28
28
|
@out.should include("bakon")
|
29
29
|
@out.should include("giblets")
|
30
30
|
end
|
31
31
|
|
32
32
|
it "outputs simply with -s" do
|
33
|
-
ey
|
33
|
+
ey %w[environments -s], :debug => false
|
34
34
|
@out.split(/\n/).sort.should == ["bakon", "giblets"]
|
35
35
|
end
|
36
36
|
|
37
37
|
it "outputs all environments (including ones with no apps) simply with -a and -s" do
|
38
|
-
ey
|
38
|
+
ey %w[environments -a -s], :debug => false
|
39
39
|
@out.split(/\n/).sort.should == ["bakon", "beef", "giblets"]
|
40
40
|
end
|
41
41
|
|
@@ -46,7 +46,7 @@ describe "ey environments with an ambiguous git repo" do
|
|
46
46
|
it_should_behave_like "it has an ambiguous git repo"
|
47
47
|
|
48
48
|
it "lists environments from all apps using the git repo" do
|
49
|
-
ey
|
49
|
+
ey %w[environments]
|
50
50
|
@out.should =~ /git repo matches multiple/i
|
51
51
|
@out.should include("giblets")
|
52
52
|
@out.should include("keycollector_production")
|
data/spec/ey/logs_spec.rb
CHANGED
@@ -5,7 +5,7 @@ describe "ey logs" do
|
|
5
5
|
|
6
6
|
it "prints logs returned by awsm" do
|
7
7
|
api_scenario "one app, one environment"
|
8
|
-
ey
|
8
|
+
ey %w[logs -e giblets]
|
9
9
|
@out.should match(/MAIN LOG OUTPUT/)
|
10
10
|
@out.should match(/CUSTOM LOG OUTPUT/)
|
11
11
|
@err.should be_empty
|
@@ -13,7 +13,7 @@ describe "ey logs" do
|
|
13
13
|
|
14
14
|
it "complains when it can't infer the environment" do
|
15
15
|
api_scenario "one app, many environments"
|
16
|
-
ey
|
16
|
+
ey %w[logs], :expect_failure => true
|
17
17
|
@err.should =~ /repository url in this directory is ambiguous/i
|
18
18
|
end
|
19
19
|
end
|
@@ -22,9 +22,9 @@ describe "ey logs" do
|
|
22
22
|
given "integration"
|
23
23
|
|
24
24
|
def command_to_run(opts)
|
25
|
-
cmd = "logs"
|
26
|
-
cmd << "
|
27
|
-
cmd << "
|
25
|
+
cmd = ["logs"]
|
26
|
+
cmd << "--environment" << opts[:environment] if opts[:environment]
|
27
|
+
cmd << "--account" << opts[:account] if opts[:account]
|
28
28
|
cmd
|
29
29
|
end
|
30
30
|
|
data/spec/ey/rebuild_spec.rb
CHANGED
@@ -4,9 +4,9 @@ describe "ey rebuild" do
|
|
4
4
|
given "integration"
|
5
5
|
|
6
6
|
def command_to_run(opts)
|
7
|
-
cmd = "rebuild"
|
8
|
-
cmd << "
|
9
|
-
cmd << "
|
7
|
+
cmd = ["rebuild"]
|
8
|
+
cmd << "--environment" << opts[:environment] if opts[:environment]
|
9
|
+
cmd << "--account" << opts[:account] if opts[:account]
|
10
10
|
cmd
|
11
11
|
end
|
12
12
|
|
@@ -4,9 +4,9 @@ describe "ey recipes apply" do
|
|
4
4
|
given "integration"
|
5
5
|
|
6
6
|
def command_to_run(opts)
|
7
|
-
cmd =
|
8
|
-
cmd << "
|
9
|
-
cmd << "
|
7
|
+
cmd = %w[recipes apply]
|
8
|
+
cmd << "-e" << opts[:environment] if opts[:environment]
|
9
|
+
cmd << "--account" << opts[:account] if opts[:account]
|
10
10
|
cmd
|
11
11
|
end
|
12
12
|
|
@@ -17,13 +17,13 @@ describe "ey recipes apply" do
|
|
17
17
|
it_should_behave_like "it takes an environment name and an account name"
|
18
18
|
|
19
19
|
it "fails when given a bad option" do
|
20
|
-
ey
|
20
|
+
ey %w[web enable --lots --of --bogus --options], :expect_failure => true
|
21
21
|
@err.should include("Unknown switches")
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
25
|
describe "ey recipes apply with an ambiguous git repo" do
|
26
26
|
given "integration"
|
27
|
-
def command_to_run(_)
|
27
|
+
def command_to_run(_) %w[recipes apply] end
|
28
28
|
it_should_behave_like "it requires an unambiguous git repo"
|
29
29
|
end
|
@@ -15,9 +15,9 @@ describe "ey recipes download" do
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def command_to_run(opts)
|
18
|
-
cmd =
|
19
|
-
cmd << "
|
20
|
-
cmd << "
|
18
|
+
cmd = %w[recipes download]
|
19
|
+
cmd << "--environment" << opts[:environment] if opts[:environment]
|
20
|
+
cmd << "--account" << opts[:account] if opts[:account]
|
21
21
|
cmd
|
22
22
|
end
|
23
23
|
|
@@ -31,13 +31,13 @@ describe "ey recipes download" do
|
|
31
31
|
it "fails when cookbooks/ already exists" do
|
32
32
|
api_scenario "one app, one environment"
|
33
33
|
Dir.mkdir("cookbooks")
|
34
|
-
ey
|
34
|
+
ey %w[recipes download], :expect_failure => true
|
35
35
|
@err.should match(/cookbooks.*already exists/i)
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
39
|
describe "ey recipes download with an ambiguous git repo" do
|
40
40
|
given "integration"
|
41
|
-
def command_to_run(_)
|
41
|
+
def command_to_run(_) %w[recipes download] end
|
42
42
|
it_should_behave_like "it requires an unambiguous git repo"
|
43
43
|
end
|
@@ -10,9 +10,9 @@ describe "ey recipes upload" do
|
|
10
10
|
use_git_repo('+cookbooks')
|
11
11
|
|
12
12
|
def command_to_run(opts)
|
13
|
-
cmd =
|
14
|
-
cmd << "
|
15
|
-
cmd << "
|
13
|
+
cmd = %w[recipes upload]
|
14
|
+
cmd << "--environment" << opts[:environment] if opts[:environment]
|
15
|
+
cmd << "--account" << opts[:account] if opts[:account]
|
16
16
|
cmd
|
17
17
|
end
|
18
18
|
|
@@ -25,7 +25,7 @@ end
|
|
25
25
|
|
26
26
|
describe "ey recipes upload with an ambiguous git repo" do
|
27
27
|
given "integration"
|
28
|
-
def command_to_run(_)
|
28
|
+
def command_to_run(_) %w[recipes upload] end
|
29
29
|
it_should_behave_like "it requires an unambiguous git repo"
|
30
30
|
end
|
31
31
|
|
@@ -47,7 +47,7 @@ describe "ey recipes upload from a separate cookbooks directory" do
|
|
47
47
|
it "takes the environment specified by -e" do
|
48
48
|
api_scenario "one app, one environment"
|
49
49
|
|
50
|
-
ey
|
50
|
+
ey %w[recipes upload -e giblets]
|
51
51
|
@out.should =~ /Recipes uploaded successfully/
|
52
52
|
end
|
53
53
|
end
|
@@ -69,7 +69,7 @@ describe "ey recipes upload from a separate cookbooks directory" do
|
|
69
69
|
it "takes the environment specified by -e" do
|
70
70
|
api_scenario "one app, one environment"
|
71
71
|
|
72
|
-
ey
|
72
|
+
ey %w[recipes upload -e giblets]
|
73
73
|
@out.should =~ /Recipes uploaded successfully/
|
74
74
|
end
|
75
75
|
|
data/spec/ey/rollback_spec.rb
CHANGED
@@ -4,11 +4,11 @@ describe "ey rollback" do
|
|
4
4
|
given "integration"
|
5
5
|
|
6
6
|
def command_to_run(opts)
|
7
|
-
cmd = "rollback"
|
8
|
-
cmd << "
|
9
|
-
cmd << "
|
10
|
-
cmd << "
|
11
|
-
cmd << "
|
7
|
+
cmd = ["rollback"]
|
8
|
+
cmd << "-e" << opts[:environment] if opts[:environment]
|
9
|
+
cmd << "-a" << opts[:app] if opts[:app]
|
10
|
+
cmd << "-c" << opts[:account] if opts[:account]
|
11
|
+
cmd << "--verbose" if opts[:verbose]
|
12
12
|
cmd
|
13
13
|
end
|
14
14
|
|
@@ -23,7 +23,7 @@ describe "ey rollback" do
|
|
23
23
|
|
24
24
|
it "passes along the web server stack to engineyard-serverside" do
|
25
25
|
api_scenario "one app, one environment"
|
26
|
-
ey
|
26
|
+
ey %w[rollback]
|
27
27
|
@ssh_commands.last.should =~ /--stack nginx_mongrel/
|
28
28
|
end
|
29
29
|
|
@@ -41,7 +41,7 @@ describe "ey rollback" do
|
|
41
41
|
end
|
42
42
|
|
43
43
|
it "passes the extra configuration to engineyard-serverside" do
|
44
|
-
ey
|
44
|
+
ey %w[rollback --extra-deploy-hook-options some:stuff more:crap]
|
45
45
|
extra_deploy_hook_options.should_not be_nil
|
46
46
|
extra_deploy_hook_options['some'].should == 'stuff'
|
47
47
|
extra_deploy_hook_options['more'].should == 'crap'
|
@@ -55,7 +55,7 @@ describe "ey rollback" do
|
|
55
55
|
after { File.unlink("ey.yml") }
|
56
56
|
|
57
57
|
it "overrides what's in ey.yml" do
|
58
|
-
ey
|
58
|
+
ey %w[rollback --extra-deploy-hook-options beer:esb]
|
59
59
|
extra_deploy_hook_options['beer'].should == 'esb'
|
60
60
|
end
|
61
61
|
end
|
data/spec/ey/ssh_spec.rb
CHANGED
@@ -7,7 +7,13 @@ shared_examples_for "running ey ssh" do
|
|
7
7
|
include Spec::Helpers::SharedIntegrationTestUtils
|
8
8
|
|
9
9
|
def extra_ey_options
|
10
|
-
|
10
|
+
ssh_cmd = <<-RUBY
|
11
|
+
#!#{`which ruby`}
|
12
|
+
require "rubygems"
|
13
|
+
require "escape"
|
14
|
+
puts "ssh \#{Escape.shell_command(ARGV)}"
|
15
|
+
RUBY
|
16
|
+
{:prepend_to_path => {'ssh' => ssh_cmd}}
|
11
17
|
end
|
12
18
|
end
|
13
19
|
|
@@ -20,9 +26,8 @@ shared_examples_for "running ey ssh for select role" do
|
|
20
26
|
end
|
21
27
|
|
22
28
|
def command_to_run(opts)
|
23
|
-
cmd = "ssh
|
24
|
-
cmd << "
|
25
|
-
cmd << " --environment #{opts[:environment]}" if opts[:environment]
|
29
|
+
cmd = ["ssh", opts[:ssh_command]].compact + (@ssh_flag || [])
|
30
|
+
cmd << "--environment" << opts[:environment] if opts[:environment]
|
26
31
|
cmd
|
27
32
|
end
|
28
33
|
|
@@ -60,7 +65,7 @@ describe "ey ssh" do
|
|
60
65
|
end
|
61
66
|
|
62
67
|
it "complains if it has no app master" do
|
63
|
-
ey
|
68
|
+
ey %w[ssh -e bakon], :expect_failure => true
|
64
69
|
@err.should =~ /'bakon' does not have any matching instances/
|
65
70
|
end
|
66
71
|
|
@@ -68,7 +73,7 @@ end
|
|
68
73
|
|
69
74
|
describe "ey ssh with an ambiguous git repo" do
|
70
75
|
it_should_behave_like "running ey ssh"
|
71
|
-
def command_to_run(_)
|
76
|
+
def command_to_run(_) %w[ssh ls] end
|
72
77
|
it_should_behave_like "it requires an unambiguous git repo"
|
73
78
|
end
|
74
79
|
|
@@ -76,9 +81,9 @@ describe "ey ssh without a command" do
|
|
76
81
|
it_should_behave_like "running ey ssh"
|
77
82
|
|
78
83
|
def command_to_run(opts)
|
79
|
-
cmd = "ssh"
|
80
|
-
cmd << "
|
81
|
-
cmd << "
|
84
|
+
cmd = ["ssh"]
|
85
|
+
cmd << "--environment" << opts[:environment] if opts[:environment]
|
86
|
+
cmd << "--account" << opts[:account] if opts[:account]
|
82
87
|
cmd
|
83
88
|
end
|
84
89
|
|
@@ -94,9 +99,9 @@ describe "ey ssh with a command" do
|
|
94
99
|
it_should_behave_like "running ey ssh"
|
95
100
|
|
96
101
|
def command_to_run(opts)
|
97
|
-
cmd =
|
98
|
-
cmd << "
|
99
|
-
cmd << "
|
102
|
+
cmd = %w[ssh ls]
|
103
|
+
cmd << "--environment" << opts[:environment] if opts[:environment]
|
104
|
+
cmd << "--account" << opts[:account] if opts[:account]
|
100
105
|
cmd
|
101
106
|
end
|
102
107
|
|
@@ -108,9 +113,27 @@ describe "ey ssh with a command" do
|
|
108
113
|
it_should_behave_like "it takes an environment name and an account name"
|
109
114
|
end
|
110
115
|
|
116
|
+
describe "ey ssh with a multi-part command" do
|
117
|
+
it_should_behave_like "running ey ssh"
|
118
|
+
|
119
|
+
def command_to_run(opts)
|
120
|
+
cmd = ['ssh', 'echo "echo"']
|
121
|
+
cmd << "--environment" << opts[:environment] if opts[:environment]
|
122
|
+
cmd << "--account" << opts[:account] if opts[:account]
|
123
|
+
cmd
|
124
|
+
end
|
125
|
+
|
126
|
+
def verify_ran(scenario)
|
127
|
+
ssh_target = scenario[:ssh_username] + '@' + scenario[:master_hostname]
|
128
|
+
@raw_ssh_commands.should == ["ssh #{ssh_target} 'echo \"echo\"'"]
|
129
|
+
end
|
130
|
+
|
131
|
+
it_should_behave_like "it takes an environment name and an account name"
|
132
|
+
end
|
133
|
+
|
111
134
|
describe "ey ssh --all" do
|
112
135
|
before do
|
113
|
-
@ssh_flag =
|
136
|
+
@ssh_flag = %w[--all]
|
114
137
|
@hosts = %w(app_hostname
|
115
138
|
app_master_hostname
|
116
139
|
util_fluffy_hostname
|
@@ -126,7 +149,7 @@ end
|
|
126
149
|
|
127
150
|
describe "ey ssh --app-servers" do
|
128
151
|
before do
|
129
|
-
@ssh_flag =
|
152
|
+
@ssh_flag = %w[--app-servers]
|
130
153
|
@hosts = %w(app_hostname app_master_hostname)
|
131
154
|
end
|
132
155
|
|
@@ -136,7 +159,7 @@ end
|
|
136
159
|
|
137
160
|
describe "ey ssh --db-master" do
|
138
161
|
before do
|
139
|
-
@ssh_flag =
|
162
|
+
@ssh_flag = %w[--db-master]
|
140
163
|
@hosts = %w(db_master_hostname)
|
141
164
|
end
|
142
165
|
|
@@ -146,7 +169,7 @@ end
|
|
146
169
|
|
147
170
|
describe "ey ssh --db-slaves" do
|
148
171
|
before do
|
149
|
-
@ssh_flag =
|
172
|
+
@ssh_flag = %w[--db-slaves]
|
150
173
|
@hosts = %w(db_slave_1_hostname db_slave_2_hostname)
|
151
174
|
end
|
152
175
|
|
@@ -156,7 +179,7 @@ end
|
|
156
179
|
|
157
180
|
describe "ey ssh --db-servers" do
|
158
181
|
before do
|
159
|
-
@ssh_flag =
|
182
|
+
@ssh_flag = %w[--db-servers]
|
160
183
|
@hosts = %w(db_master_hostname db_slave_1_hostname db_slave_2_hostname)
|
161
184
|
end
|
162
185
|
|
@@ -166,7 +189,7 @@ end
|
|
166
189
|
|
167
190
|
describe "ey ssh --utilities" do
|
168
191
|
before do
|
169
|
-
@ssh_flag =
|
192
|
+
@ssh_flag = %w[--utilities]
|
170
193
|
@hosts = %w(util_fluffy_hostname util_rocky_hostname)
|
171
194
|
end
|
172
195
|
|
@@ -176,7 +199,7 @@ end
|
|
176
199
|
|
177
200
|
describe "ey ssh --utilities fluffy" do
|
178
201
|
before do
|
179
|
-
@ssh_flag =
|
202
|
+
@ssh_flag = %w[--utilities fluffy]
|
180
203
|
@hosts = %w(util_fluffy_hostname)
|
181
204
|
end
|
182
205
|
|
@@ -186,7 +209,7 @@ end
|
|
186
209
|
|
187
210
|
describe "ey ssh --utilities fluffy rocky" do
|
188
211
|
before do
|
189
|
-
@ssh_flag =
|
212
|
+
@ssh_flag = %w[--utilities fluffy rocky]
|
190
213
|
@hosts = %w(util_fluffy_hostname util_rocky_hostname)
|
191
214
|
end
|
192
215
|
|
data/spec/ey/web/disable_spec.rb
CHANGED
@@ -4,11 +4,11 @@ describe "ey web disable" do
|
|
4
4
|
given "integration"
|
5
5
|
|
6
6
|
def command_to_run(opts)
|
7
|
-
cmd =
|
8
|
-
cmd << "
|
9
|
-
cmd << "
|
10
|
-
cmd << "
|
11
|
-
cmd << "
|
7
|
+
cmd = %w[web disable]
|
8
|
+
cmd << "-e" << opts[:environment] if opts[:environment]
|
9
|
+
cmd << "-a" << opts[:app] if opts[:app]
|
10
|
+
cmd << "-c" << opts[:account] if opts[:account]
|
11
|
+
cmd << "--verbose" if opts[:verbose]
|
12
12
|
cmd
|
13
13
|
end
|
14
14
|
|
data/spec/ey/web/enable_spec.rb
CHANGED
@@ -4,11 +4,11 @@ describe "ey web enable" do
|
|
4
4
|
given "integration"
|
5
5
|
|
6
6
|
def command_to_run(opts)
|
7
|
-
cmd =
|
8
|
-
cmd << "
|
9
|
-
cmd << "
|
10
|
-
cmd << "
|
11
|
-
cmd << "
|
7
|
+
cmd = %w[web enable]
|
8
|
+
cmd << "-e" << opts[:environment] if opts[:environment]
|
9
|
+
cmd << "-a" << opts[:app] if opts[:app]
|
10
|
+
cmd << "-c" << opts[:account] if opts[:account]
|
11
|
+
cmd << "--verbose" if opts[:verbose]
|
12
12
|
cmd
|
13
13
|
end
|
14
14
|
|
@@ -20,7 +20,7 @@ describe "ey web enable" do
|
|
20
20
|
it_should_behave_like "it invokes engineyard-serverside"
|
21
21
|
|
22
22
|
it "fails when given a bad option" do
|
23
|
-
ey
|
23
|
+
ey %w[web enable --lots --of --bogus --options], :expect_failure => true
|
24
24
|
@err.should include("Unknown switches")
|
25
25
|
end
|
26
26
|
end
|
data/spec/spec_helper.rb
CHANGED
data/spec/support/helpers.rb
CHANGED
@@ -69,7 +69,7 @@ module Spec
|
|
69
69
|
$stdout = STDOUT
|
70
70
|
end
|
71
71
|
|
72
|
-
def ey(
|
72
|
+
def ey(args = [], options = {}, &block)
|
73
73
|
hide_err = options.has_key?(:hide_err) ? options[:hide_err] : options[:expect_failure]
|
74
74
|
path_prepends = options[:prepend_to_path]
|
75
75
|
|
@@ -94,7 +94,7 @@ module Spec
|
|
94
94
|
eybin = File.expand_path('../bundled_ey', __FILE__)
|
95
95
|
|
96
96
|
with_env(ey_env) do
|
97
|
-
exit_status = Open4::open4("#{eybin} #{
|
97
|
+
exit_status = Open4::open4("#{eybin} #{Escape.shell_command(args)}") do |pid, stdin, stdout, stderr|
|
98
98
|
block.call(stdin) if block
|
99
99
|
@err = stderr.read
|
100
100
|
@out = stdout.read
|
@@ -110,7 +110,7 @@ shared_examples_for "it takes an environment name and an account name" do
|
|
110
110
|
|
111
111
|
it "returns the error message to the user" do
|
112
112
|
lambda do
|
113
|
-
fast_ey(command_to_run({:environment => "giblets", :account => "main"})
|
113
|
+
fast_ey(command_to_run({:environment => "giblets", :account => "main"}))
|
114
114
|
end.should raise_error(EY::Error, /400.*Important infos/)
|
115
115
|
end
|
116
116
|
end
|
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:
|
5
|
-
prerelease:
|
4
|
+
hash: 59
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 3
|
9
|
-
-
|
10
|
-
version: 1.3.
|
9
|
+
- 16
|
10
|
+
version: 1.3.16
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- EY Cloud Team
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-02-
|
18
|
+
date: 2011-02-16 00:00:00 -08:00
|
19
19
|
default_executable: ey
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -30,10 +30,10 @@ dependencies:
|
|
30
30
|
- 14
|
31
31
|
- 6
|
32
32
|
version: 0.14.6
|
33
|
-
|
33
|
+
prerelease: false
|
34
34
|
type: :runtime
|
35
|
+
requirement: *id001
|
35
36
|
name: thor
|
36
|
-
prerelease: false
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
version_requirements: &id002 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
@@ -46,10 +46,10 @@ dependencies:
|
|
46
46
|
- 6
|
47
47
|
- 0
|
48
48
|
version: 1.6.0
|
49
|
-
|
49
|
+
prerelease: false
|
50
50
|
type: :runtime
|
51
|
+
requirement: *id002
|
51
52
|
name: rest-client
|
52
|
-
prerelease: false
|
53
53
|
- !ruby/object:Gem::Dependency
|
54
54
|
version_requirements: &id003 !ruby/object:Gem::Requirement
|
55
55
|
none: false
|
@@ -62,10 +62,10 @@ dependencies:
|
|
62
62
|
- 6
|
63
63
|
- 1
|
64
64
|
version: 1.6.1
|
65
|
-
|
65
|
+
prerelease: false
|
66
66
|
type: :runtime
|
67
|
+
requirement: *id003
|
67
68
|
name: highline
|
68
|
-
prerelease: false
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
version_requirements: &id004 !ruby/object:Gem::Requirement
|
71
71
|
none: false
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
segments:
|
77
77
|
- 0
|
78
78
|
version: "0"
|
79
|
-
|
79
|
+
prerelease: false
|
80
80
|
type: :runtime
|
81
|
+
requirement: *id004
|
81
82
|
name: json_pure
|
82
|
-
prerelease: false
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
version_requirements: &id005 !ruby/object:Gem::Requirement
|
85
85
|
none: false
|
@@ -92,10 +92,10 @@ dependencies:
|
|
92
92
|
- 0
|
93
93
|
- 4
|
94
94
|
version: 0.0.4
|
95
|
-
|
95
|
+
prerelease: false
|
96
96
|
type: :runtime
|
97
|
+
requirement: *id005
|
97
98
|
name: escape
|
98
|
-
prerelease: false
|
99
99
|
- !ruby/object:Gem::Dependency
|
100
100
|
version_requirements: &id006 !ruby/object:Gem::Requirement
|
101
101
|
none: false
|
@@ -108,26 +108,160 @@ dependencies:
|
|
108
108
|
- 4
|
109
109
|
- 0
|
110
110
|
version: 1.4.0
|
111
|
-
|
111
|
+
prerelease: false
|
112
112
|
type: :runtime
|
113
|
+
requirement: *id006
|
113
114
|
name: engineyard-serverside-adapter
|
114
|
-
prerelease: false
|
115
115
|
- !ruby/object:Gem::Dependency
|
116
116
|
version_requirements: &id007 !ruby/object:Gem::Requirement
|
117
117
|
none: false
|
118
118
|
requirements:
|
119
119
|
- - ~>
|
120
120
|
- !ruby/object:Gem::Version
|
121
|
-
hash:
|
121
|
+
hash: 11
|
122
122
|
segments:
|
123
123
|
- 2
|
124
|
+
- 1
|
124
125
|
- 0
|
125
|
-
|
126
|
-
|
127
|
-
requirement: *id007
|
126
|
+
version: 2.1.0
|
127
|
+
prerelease: false
|
128
128
|
type: :runtime
|
129
|
+
requirement: *id007
|
129
130
|
name: net-ssh
|
131
|
+
- !ruby/object:Gem::Dependency
|
132
|
+
version_requirements: &id008 !ruby/object:Gem::Requirement
|
133
|
+
none: false
|
134
|
+
requirements:
|
135
|
+
- - "="
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
hash: 27
|
138
|
+
segments:
|
139
|
+
- 1
|
140
|
+
- 3
|
141
|
+
- 0
|
142
|
+
version: 1.3.0
|
143
|
+
prerelease: false
|
144
|
+
type: :development
|
145
|
+
requirement: *id008
|
146
|
+
name: rspec
|
147
|
+
- !ruby/object:Gem::Dependency
|
148
|
+
version_requirements: &id009 !ruby/object:Gem::Requirement
|
149
|
+
none: false
|
150
|
+
requirements:
|
151
|
+
- - ">="
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
hash: 3
|
154
|
+
segments:
|
155
|
+
- 0
|
156
|
+
version: "0"
|
157
|
+
prerelease: false
|
158
|
+
type: :development
|
159
|
+
requirement: *id009
|
160
|
+
name: rake
|
161
|
+
- !ruby/object:Gem::Dependency
|
162
|
+
version_requirements: &id010 !ruby/object:Gem::Requirement
|
163
|
+
none: false
|
164
|
+
requirements:
|
165
|
+
- - ">="
|
166
|
+
- !ruby/object:Gem::Version
|
167
|
+
hash: 3
|
168
|
+
segments:
|
169
|
+
- 0
|
170
|
+
version: "0"
|
171
|
+
prerelease: false
|
172
|
+
type: :development
|
173
|
+
requirement: *id010
|
174
|
+
name: fakeweb
|
175
|
+
- !ruby/object:Gem::Dependency
|
176
|
+
version_requirements: &id011 !ruby/object:Gem::Requirement
|
177
|
+
none: false
|
178
|
+
requirements:
|
179
|
+
- - ">="
|
180
|
+
- !ruby/object:Gem::Version
|
181
|
+
hash: 3
|
182
|
+
segments:
|
183
|
+
- 0
|
184
|
+
version: "0"
|
185
|
+
prerelease: false
|
186
|
+
type: :development
|
187
|
+
requirement: *id011
|
188
|
+
name: fakeweb-matcher
|
189
|
+
- !ruby/object:Gem::Dependency
|
190
|
+
version_requirements: &id012 !ruby/object:Gem::Requirement
|
191
|
+
none: false
|
192
|
+
requirements:
|
193
|
+
- - ">="
|
194
|
+
- !ruby/object:Gem::Version
|
195
|
+
hash: 3
|
196
|
+
segments:
|
197
|
+
- 0
|
198
|
+
version: "0"
|
199
|
+
prerelease: false
|
200
|
+
type: :development
|
201
|
+
requirement: *id012
|
202
|
+
name: fakefs
|
203
|
+
- !ruby/object:Gem::Dependency
|
204
|
+
version_requirements: &id013 !ruby/object:Gem::Requirement
|
205
|
+
none: false
|
206
|
+
requirements:
|
207
|
+
- - ~>
|
208
|
+
- !ruby/object:Gem::Version
|
209
|
+
hash: 23
|
210
|
+
segments:
|
211
|
+
- 1
|
212
|
+
- 0
|
213
|
+
- 0
|
214
|
+
version: 1.0.0
|
215
|
+
prerelease: false
|
216
|
+
type: :development
|
217
|
+
requirement: *id013
|
218
|
+
name: bundler
|
219
|
+
- !ruby/object:Gem::Dependency
|
220
|
+
version_requirements: &id014 !ruby/object:Gem::Requirement
|
221
|
+
none: false
|
222
|
+
requirements:
|
223
|
+
- - ">="
|
224
|
+
- !ruby/object:Gem::Version
|
225
|
+
hash: 3
|
226
|
+
segments:
|
227
|
+
- 0
|
228
|
+
version: "0"
|
229
|
+
prerelease: false
|
230
|
+
type: :development
|
231
|
+
requirement: *id014
|
232
|
+
name: sinatra
|
233
|
+
- !ruby/object:Gem::Dependency
|
234
|
+
version_requirements: &id015 !ruby/object:Gem::Requirement
|
235
|
+
none: false
|
236
|
+
requirements:
|
237
|
+
- - ~>
|
238
|
+
- !ruby/object:Gem::Version
|
239
|
+
hash: 23
|
240
|
+
segments:
|
241
|
+
- 0
|
242
|
+
- 1
|
243
|
+
- 6
|
244
|
+
version: 0.1.6
|
245
|
+
prerelease: false
|
246
|
+
type: :development
|
247
|
+
requirement: *id015
|
248
|
+
name: realweb
|
249
|
+
- !ruby/object:Gem::Dependency
|
250
|
+
version_requirements: &id016 !ruby/object:Gem::Requirement
|
251
|
+
none: false
|
252
|
+
requirements:
|
253
|
+
- - ~>
|
254
|
+
- !ruby/object:Gem::Version
|
255
|
+
hash: 21
|
256
|
+
segments:
|
257
|
+
- 1
|
258
|
+
- 0
|
259
|
+
- 1
|
260
|
+
version: 1.0.1
|
130
261
|
prerelease: false
|
262
|
+
type: :development
|
263
|
+
requirement: *id016
|
264
|
+
name: open4
|
131
265
|
description: This gem allows you to deploy your rails application to the Engine Yard cloud directly from the command line.
|
132
266
|
email: cloud@engineyard.com
|
133
267
|
executables:
|
@@ -139,7 +273,6 @@ extra_rdoc_files: []
|
|
139
273
|
files:
|
140
274
|
- bin/ey
|
141
275
|
- lib/engineyard/api.rb
|
142
|
-
- lib/engineyard/cli/#recipes.rb#
|
143
276
|
- lib/engineyard/cli/api.rb
|
144
277
|
- lib/engineyard/cli/recipes.rb
|
145
278
|
- lib/engineyard/cli/ui.rb
|
@@ -240,7 +373,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
240
373
|
requirements: []
|
241
374
|
|
242
375
|
rubyforge_project:
|
243
|
-
rubygems_version: 1.
|
376
|
+
rubygems_version: 1.5.0
|
244
377
|
signing_key:
|
245
378
|
specification_version: 3
|
246
379
|
summary: Command-line deployment for the Engine Yard cloud
|
@@ -1,32 +0,0 @@
|
|
1
|
-
module EY
|
2
|
-
class CLI
|
3
|
-
class Recipes < EY::Thor
|
4
|
-
X1gx1GGG desc "recipes apply [ENVIRONMENT]", <<-DESC
|
5
|
-
Run uploaded chef recipes on specified environment.
|
6
|
-
|
7
|
-
This is similar to '#{banner_base} rebuild' except Engine Yard's main
|
8
|
-
configuration step is skipped.
|
9
|
-
DESC
|
10
|
-
|
11
|
-
def apply(name = nil)
|
12
|
-
environment = fetch_environment(name)
|
13
|
-
environment.run_custom_recipes
|
14
|
-
EY.ui.say "Uploaded recipes started for #{environment.name}"
|
15
|
-
end
|
16
|
-
|
17
|
-
desc "recipes upload [ENVIRONMENT]", <<-DESC
|
18
|
-
Upload custom chef recipes to specified environment.
|
19
|
-
|
20
|
-
The current directory should contain a subdirectory named "cookbooks" to be
|
21
|
-
uploaded.
|
22
|
-
DESC
|
23
|
-
|
24
|
-
def upload(name = nil)
|
25
|
-
environment = fetch_environment(name)
|
26
|
-
environment.upload_recipes
|
27
|
-
EY.ui.say "Recipes uploaded successfully for #{environment.name}"
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
end
|