shelly 0.3.2 → 0.3.3
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/CHANGELOG.md +5 -0
- data/lib/shelly/app.rb +8 -0
- data/lib/shelly/cli/main.rb +21 -1
- data/lib/shelly/version.rb +1 -1
- data/spec/shelly/app_spec.rb +18 -0
- data/spec/shelly/cli/main_spec.rb +52 -0
- metadata +39 -56
- checksums.yaml +0 -15
data/CHANGELOG.md
CHANGED
data/lib/shelly/app.rb
CHANGED
@@ -204,6 +204,14 @@ module Shelly
|
|
204
204
|
ssh_with_db_server(:command => "dbconsole")
|
205
205
|
end
|
206
206
|
|
207
|
+
def mongoconsole
|
208
|
+
ssh_with_db_server(:command => "mongo")
|
209
|
+
end
|
210
|
+
|
211
|
+
def redis_cli
|
212
|
+
ssh_with_db_server(:command => "redis-cli")
|
213
|
+
end
|
214
|
+
|
207
215
|
def attributes
|
208
216
|
@attributes ||= shelly.app(code_name)
|
209
217
|
end
|
data/lib/shelly/cli/main.rb
CHANGED
@@ -24,7 +24,9 @@ module Shelly
|
|
24
24
|
check_unknown_options!(:except => :rake)
|
25
25
|
|
26
26
|
# FIXME: it should be possible to pass single symbol, instead of one element array
|
27
|
-
before_hook :logged_in?, :only => [:add, :status, :list, :start, :stop,
|
27
|
+
before_hook :logged_in?, :only => [:add, :status, :list, :start, :stop,
|
28
|
+
:delete, :info, :ip, :logout, :execute, :rake, :setup, :console,
|
29
|
+
:dbconsole, :mongoconsole, :redis_cli]
|
28
30
|
before_hook :inside_git_repository?, :only => [:add, :setup, :check]
|
29
31
|
|
30
32
|
map %w(-v --version) => :version
|
@@ -344,6 +346,24 @@ Wait until cloud is in 'turned off' state and try again.}
|
|
344
346
|
say_error "Cloud #{app} wasn't deployed properly. Can not run dbconsole."
|
345
347
|
end
|
346
348
|
|
349
|
+
desc "mongoconsole", "Run MongoDB console"
|
350
|
+
method_option :cloud, :type => :string, :aliases => "-c", :desc => "Specify cloud"
|
351
|
+
def mongoconsole
|
352
|
+
app = multiple_clouds(options[:cloud], "mongoconsole")
|
353
|
+
app.mongoconsole
|
354
|
+
rescue Client::ConflictException
|
355
|
+
say_error "Cloud #{app} wasn't deployed properly. Can not run MongoDB console."
|
356
|
+
end
|
357
|
+
|
358
|
+
desc "redis-cli", "Run redis-cli"
|
359
|
+
method_option :cloud, :type => :string, :aliases => "-c", :desc => "Specify cloud"
|
360
|
+
def redis_cli
|
361
|
+
app = multiple_clouds(options[:cloud], "redis-cli")
|
362
|
+
app.redis_cli
|
363
|
+
rescue Client::ConflictException
|
364
|
+
say_error "Cloud #{app} wasn't deployed properly. Can not run redis-cli."
|
365
|
+
end
|
366
|
+
|
347
367
|
desc "redeploy", "Redeploy application"
|
348
368
|
method_option :cloud, :type => :string, :aliases => "-c",
|
349
369
|
:desc => "Specify which cloud to redeploy application for"
|
data/lib/shelly/version.rb
CHANGED
data/spec/shelly/app_spec.rb
CHANGED
@@ -307,6 +307,24 @@ describe Shelly::App do
|
|
307
307
|
end
|
308
308
|
end
|
309
309
|
|
310
|
+
describe "#mongoconsole" do
|
311
|
+
it "should return result of mongoconsole" do
|
312
|
+
@client.stub(:configured_db_server).and_return(
|
313
|
+
{"host" => "console.example.com", "port" => "40010", "user" => "foo"})
|
314
|
+
@app.should_receive(:system).with("ssh -o StrictHostKeyChecking=no -p 40010 -l foo -t console.example.com mongo")
|
315
|
+
@app.mongoconsole
|
316
|
+
end
|
317
|
+
end
|
318
|
+
|
319
|
+
describe "#redis_cli" do
|
320
|
+
it "should return result of redis-cli" do
|
321
|
+
@client.stub(:configured_db_server).and_return(
|
322
|
+
{"host" => "console.example.com", "port" => "40010", "user" => "foo"})
|
323
|
+
@app.should_receive(:system).with("ssh -o StrictHostKeyChecking=no -p 40010 -l foo -t console.example.com redis-cli")
|
324
|
+
@app.redis_cli
|
325
|
+
end
|
326
|
+
end
|
327
|
+
|
310
328
|
describe "#to_s" do
|
311
329
|
it "should return code_name" do
|
312
330
|
@app.to_s.should == "foo-staging"
|
@@ -46,10 +46,12 @@ describe Shelly::CLI::Main do
|
|
46
46
|
out.should include("shelly login [EMAIL] # Log into Shelly Cloud")
|
47
47
|
out.should include("shelly logout # Logout from Shelly Cloud")
|
48
48
|
out.should include("shelly logs <command> # View application logs")
|
49
|
+
out.should include("shelly mongoconsole # Run MongoDB console")
|
49
50
|
out.should include("shelly open # Open application page in browser")
|
50
51
|
out.should include("shelly organization <command> # View organizations")
|
51
52
|
out.should include("shelly rake TASK # Run rake task")
|
52
53
|
out.should include("shelly redeploy # Redeploy application")
|
54
|
+
out.should include("shelly redis-cli # Run redis-cli")
|
53
55
|
out.should include("shelly register [EMAIL] # Register new account")
|
54
56
|
out.should include("shelly setup # Set up git remotes for deployment on Shelly Cloud")
|
55
57
|
out.should include("shelly start # Start the cloud")
|
@@ -1423,6 +1425,56 @@ Wait until cloud is in 'turned off' state and try again.")
|
|
1423
1425
|
end
|
1424
1426
|
end
|
1425
1427
|
|
1428
|
+
describe "#mongoconsole" do
|
1429
|
+
before do
|
1430
|
+
setup_project
|
1431
|
+
end
|
1432
|
+
|
1433
|
+
it "should ensure user has logged in" do
|
1434
|
+
hooks(@main, :mongoconsole).should include(:logged_in?)
|
1435
|
+
end
|
1436
|
+
|
1437
|
+
it "should execute ssh command" do
|
1438
|
+
@app.should_receive(:mongoconsole)
|
1439
|
+
invoke(@main, :mongoconsole)
|
1440
|
+
end
|
1441
|
+
|
1442
|
+
context "Instances are not running" do
|
1443
|
+
it "should display error" do
|
1444
|
+
@client.stub(:configured_db_server).and_raise(Shelly::Client::ConflictException)
|
1445
|
+
$stdout.should_receive(:puts).with(red "Cloud foo-production wasn't deployed properly. Can not run MongoDB console.")
|
1446
|
+
lambda {
|
1447
|
+
invoke(@main, :mongoconsole)
|
1448
|
+
}.should raise_error(SystemExit)
|
1449
|
+
end
|
1450
|
+
end
|
1451
|
+
end
|
1452
|
+
|
1453
|
+
describe "#redis_cli" do
|
1454
|
+
before do
|
1455
|
+
setup_project
|
1456
|
+
end
|
1457
|
+
|
1458
|
+
it "should ensure user has logged in" do
|
1459
|
+
hooks(@main, :redis_cli).should include(:logged_in?)
|
1460
|
+
end
|
1461
|
+
|
1462
|
+
it "should execute ssh command" do
|
1463
|
+
@app.should_receive(:redis_cli)
|
1464
|
+
invoke(@main, :redis_cli)
|
1465
|
+
end
|
1466
|
+
|
1467
|
+
context "Instances are not running" do
|
1468
|
+
it "should display error" do
|
1469
|
+
@client.stub(:configured_db_server).and_raise(Shelly::Client::ConflictException)
|
1470
|
+
$stdout.should_receive(:puts).with(red "Cloud foo-production wasn't deployed properly. Can not run redis-cli.")
|
1471
|
+
lambda {
|
1472
|
+
invoke(@main, :redis_cli)
|
1473
|
+
}.should raise_error(SystemExit)
|
1474
|
+
end
|
1475
|
+
end
|
1476
|
+
end
|
1477
|
+
|
1426
1478
|
describe "#check" do
|
1427
1479
|
before do
|
1428
1480
|
Shelly::App.stub(:inside_git_repository?).and_return(true)
|
metadata
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shelly
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.3
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Shelly Cloud team
|
@@ -13,6 +14,7 @@ dependencies:
|
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: rspec
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
16
18
|
requirements:
|
17
19
|
- - ~>
|
18
20
|
- !ruby/object:Gem::Version
|
@@ -20,6 +22,7 @@ dependencies:
|
|
20
22
|
type: :development
|
21
23
|
prerelease: false
|
22
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
23
26
|
requirements:
|
24
27
|
- - ~>
|
25
28
|
- !ruby/object:Gem::Version
|
@@ -27,6 +30,7 @@ dependencies:
|
|
27
30
|
- !ruby/object:Gem::Dependency
|
28
31
|
name: rake
|
29
32
|
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
30
34
|
requirements:
|
31
35
|
- - ! '>='
|
32
36
|
- !ruby/object:Gem::Version
|
@@ -34,6 +38,7 @@ dependencies:
|
|
34
38
|
type: :development
|
35
39
|
prerelease: false
|
36
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
37
42
|
requirements:
|
38
43
|
- - ! '>='
|
39
44
|
- !ruby/object:Gem::Version
|
@@ -41,6 +46,7 @@ dependencies:
|
|
41
46
|
- !ruby/object:Gem::Dependency
|
42
47
|
name: guard
|
43
48
|
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
44
50
|
requirements:
|
45
51
|
- - ! '>='
|
46
52
|
- !ruby/object:Gem::Version
|
@@ -48,6 +54,7 @@ dependencies:
|
|
48
54
|
type: :development
|
49
55
|
prerelease: false
|
50
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
51
58
|
requirements:
|
52
59
|
- - ! '>='
|
53
60
|
- !ruby/object:Gem::Version
|
@@ -55,6 +62,7 @@ dependencies:
|
|
55
62
|
- !ruby/object:Gem::Dependency
|
56
63
|
name: guard-rspec
|
57
64
|
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
58
66
|
requirements:
|
59
67
|
- - ! '>='
|
60
68
|
- !ruby/object:Gem::Version
|
@@ -62,6 +70,7 @@ dependencies:
|
|
62
70
|
type: :development
|
63
71
|
prerelease: false
|
64
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
65
74
|
requirements:
|
66
75
|
- - ! '>='
|
67
76
|
- !ruby/object:Gem::Version
|
@@ -69,6 +78,7 @@ dependencies:
|
|
69
78
|
- !ruby/object:Gem::Dependency
|
70
79
|
name: simplecov
|
71
80
|
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
72
82
|
requirements:
|
73
83
|
- - ! '>='
|
74
84
|
- !ruby/object:Gem::Version
|
@@ -76,34 +86,7 @@ dependencies:
|
|
76
86
|
type: :development
|
77
87
|
prerelease: false
|
78
88
|
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
|
80
|
-
- - ! '>='
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: ruby_gntp
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - ! '>='
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - ! '>='
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '0'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: rb-fsevent
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - ! '>='
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '0'
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
107
90
|
requirements:
|
108
91
|
- - ! '>='
|
109
92
|
- !ruby/object:Gem::Version
|
@@ -111,6 +94,7 @@ dependencies:
|
|
111
94
|
- !ruby/object:Gem::Dependency
|
112
95
|
name: fakefs
|
113
96
|
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
114
98
|
requirements:
|
115
99
|
- - ! '>='
|
116
100
|
- !ruby/object:Gem::Version
|
@@ -118,6 +102,7 @@ dependencies:
|
|
118
102
|
type: :development
|
119
103
|
prerelease: false
|
120
104
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
121
106
|
requirements:
|
122
107
|
- - ! '>='
|
123
108
|
- !ruby/object:Gem::Version
|
@@ -125,6 +110,7 @@ dependencies:
|
|
125
110
|
- !ruby/object:Gem::Dependency
|
126
111
|
name: fakeweb
|
127
112
|
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
128
114
|
requirements:
|
129
115
|
- - ! '>='
|
130
116
|
- !ruby/object:Gem::Version
|
@@ -132,6 +118,7 @@ dependencies:
|
|
132
118
|
type: :development
|
133
119
|
prerelease: false
|
134
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
135
122
|
requirements:
|
136
123
|
- - ! '>='
|
137
124
|
- !ruby/object:Gem::Version
|
@@ -139,6 +126,7 @@ dependencies:
|
|
139
126
|
- !ruby/object:Gem::Dependency
|
140
127
|
name: wijet-thor
|
141
128
|
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
142
130
|
requirements:
|
143
131
|
- - ~>
|
144
132
|
- !ruby/object:Gem::Version
|
@@ -146,6 +134,7 @@ dependencies:
|
|
146
134
|
type: :runtime
|
147
135
|
prerelease: false
|
148
136
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
149
138
|
requirements:
|
150
139
|
- - ~>
|
151
140
|
- !ruby/object:Gem::Version
|
@@ -153,6 +142,7 @@ dependencies:
|
|
153
142
|
- !ruby/object:Gem::Dependency
|
154
143
|
name: rest-client
|
155
144
|
requirement: !ruby/object:Gem::Requirement
|
145
|
+
none: false
|
156
146
|
requirements:
|
157
147
|
- - ! '>='
|
158
148
|
- !ruby/object:Gem::Version
|
@@ -160,6 +150,7 @@ dependencies:
|
|
160
150
|
type: :runtime
|
161
151
|
prerelease: false
|
162
152
|
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
163
154
|
requirements:
|
164
155
|
- - ! '>='
|
165
156
|
- !ruby/object:Gem::Version
|
@@ -167,6 +158,7 @@ dependencies:
|
|
167
158
|
- !ruby/object:Gem::Dependency
|
168
159
|
name: json
|
169
160
|
requirement: !ruby/object:Gem::Requirement
|
161
|
+
none: false
|
170
162
|
requirements:
|
171
163
|
- - ! '>='
|
172
164
|
- !ruby/object:Gem::Version
|
@@ -174,6 +166,7 @@ dependencies:
|
|
174
166
|
type: :runtime
|
175
167
|
prerelease: false
|
176
168
|
version_requirements: !ruby/object:Gem::Requirement
|
169
|
+
none: false
|
177
170
|
requirements:
|
178
171
|
- - ! '>='
|
179
172
|
- !ruby/object:Gem::Version
|
@@ -181,6 +174,7 @@ dependencies:
|
|
181
174
|
- !ruby/object:Gem::Dependency
|
182
175
|
name: progressbar
|
183
176
|
requirement: !ruby/object:Gem::Requirement
|
177
|
+
none: false
|
184
178
|
requirements:
|
185
179
|
- - ! '>='
|
186
180
|
- !ruby/object:Gem::Version
|
@@ -188,6 +182,7 @@ dependencies:
|
|
188
182
|
type: :runtime
|
189
183
|
prerelease: false
|
190
184
|
version_requirements: !ruby/object:Gem::Requirement
|
185
|
+
none: false
|
191
186
|
requirements:
|
192
187
|
- - ! '>='
|
193
188
|
- !ruby/object:Gem::Version
|
@@ -195,6 +190,7 @@ dependencies:
|
|
195
190
|
- !ruby/object:Gem::Dependency
|
196
191
|
name: launchy
|
197
192
|
requirement: !ruby/object:Gem::Requirement
|
193
|
+
none: false
|
198
194
|
requirements:
|
199
195
|
- - ! '>='
|
200
196
|
- !ruby/object:Gem::Version
|
@@ -202,6 +198,7 @@ dependencies:
|
|
202
198
|
type: :runtime
|
203
199
|
prerelease: false
|
204
200
|
version_requirements: !ruby/object:Gem::Requirement
|
201
|
+
none: false
|
205
202
|
requirements:
|
206
203
|
- - ! '>='
|
207
204
|
- !ruby/object:Gem::Version
|
@@ -209,6 +206,7 @@ dependencies:
|
|
209
206
|
- !ruby/object:Gem::Dependency
|
210
207
|
name: netrc
|
211
208
|
requirement: !ruby/object:Gem::Requirement
|
209
|
+
none: false
|
212
210
|
requirements:
|
213
211
|
- - ! '>='
|
214
212
|
- !ruby/object:Gem::Version
|
@@ -216,6 +214,7 @@ dependencies:
|
|
216
214
|
type: :runtime
|
217
215
|
prerelease: false
|
218
216
|
version_requirements: !ruby/object:Gem::Requirement
|
217
|
+
none: false
|
219
218
|
requirements:
|
220
219
|
- - ! '>='
|
221
220
|
- !ruby/object:Gem::Version
|
@@ -306,48 +305,32 @@ files:
|
|
306
305
|
- spec/thor/options_spec.rb
|
307
306
|
homepage: http://shellycloud.com
|
308
307
|
licenses: []
|
309
|
-
metadata: {}
|
310
308
|
post_install_message:
|
311
309
|
rdoc_options: []
|
312
310
|
require_paths:
|
313
311
|
- lib
|
314
312
|
required_ruby_version: !ruby/object:Gem::Requirement
|
313
|
+
none: false
|
315
314
|
requirements:
|
316
315
|
- - ! '>='
|
317
316
|
- !ruby/object:Gem::Version
|
318
317
|
version: '0'
|
318
|
+
segments:
|
319
|
+
- 0
|
320
|
+
hash: -2831045740089132690
|
319
321
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
322
|
+
none: false
|
320
323
|
requirements:
|
321
324
|
- - ! '>='
|
322
325
|
- !ruby/object:Gem::Version
|
323
326
|
version: '0'
|
327
|
+
segments:
|
328
|
+
- 0
|
329
|
+
hash: -2831045740089132690
|
324
330
|
requirements: []
|
325
331
|
rubyforge_project: shelly
|
326
|
-
rubygems_version:
|
332
|
+
rubygems_version: 1.8.25
|
327
333
|
signing_key:
|
328
|
-
specification_version:
|
334
|
+
specification_version: 3
|
329
335
|
summary: Shelly Cloud command line tool
|
330
|
-
test_files:
|
331
|
-
- spec/helpers.rb
|
332
|
-
- spec/input_faker.rb
|
333
|
-
- spec/shelly/app_spec.rb
|
334
|
-
- spec/shelly/backup_spec.rb
|
335
|
-
- spec/shelly/cli/backup_spec.rb
|
336
|
-
- spec/shelly/cli/config_spec.rb
|
337
|
-
- spec/shelly/cli/database_spec.rb
|
338
|
-
- spec/shelly/cli/deploy_spec.rb
|
339
|
-
- spec/shelly/cli/file_spec.rb
|
340
|
-
- spec/shelly/cli/logs_spec.rb
|
341
|
-
- spec/shelly/cli/main_spec.rb
|
342
|
-
- spec/shelly/cli/organization_spec.rb
|
343
|
-
- spec/shelly/cli/runner_spec.rb
|
344
|
-
- spec/shelly/cli/user_spec.rb
|
345
|
-
- spec/shelly/client_spec.rb
|
346
|
-
- spec/shelly/cloudfile_spec.rb
|
347
|
-
- spec/shelly/download_progress_bar_spec.rb
|
348
|
-
- spec/shelly/model_spec.rb
|
349
|
-
- spec/shelly/organization_spec.rb
|
350
|
-
- spec/shelly/structure_validator_spec.rb
|
351
|
-
- spec/shelly/user_spec.rb
|
352
|
-
- spec/spec_helper.rb
|
353
|
-
- spec/thor/options_spec.rb
|
336
|
+
test_files: []
|
checksums.yaml
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
---
|
2
|
-
!binary "U0hBMQ==":
|
3
|
-
metadata.gz: !binary |-
|
4
|
-
ZWM1NDEyYjYzZTUyNGQ0NDVhMzg0NjdmM2QzNWM4MGQ3NTA0NDJmYQ==
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
ZjllMDk5Nzk2NjY5OWM4OTUxMTZiZmMzMDdlZWMxZDU3OGM4YzRiNw==
|
7
|
-
!binary "U0hBNTEy":
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
NDEzZTBmOTQ5YzA1NWY1YTEyNzQ3Njc5ZDAyOGEyNDZjMDJmM2YyZTZkOWQw
|
10
|
-
MGUxZmY5ODY4Y2NlZTNjZjgxYzQxMmNkNDMzMWE3NDdmNzhjMjM3ODFkYmVl
|
11
|
-
N2U2OGRiMTRkMTk2NmFkOGFiZWJiMWE1ZTJkMmRiNWI4MjFlY2M=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
ZDk3OTg5NjVlYmVhYWI4NTVhY2U1MjUwZWZjYjUyMjFjZDc1YzgzYTA5YzM5
|
14
|
-
NWM3YmRhYzIxMWE1NDVlNTFkNzAzOTkxNTM5NjYyZWZlMDNiMDdjMzZlYjg2
|
15
|
-
OGIwZGIwMDdlOWU4ZjA1NTE0ODgzY2E0Y2RjMTI4NGQyYTU1OTc=
|