shelly 0.3.2 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## 0.3.3 / 2013-06-28
2
+
3
+ * [feature] user is able to access MongoDB console
4
+ * [feature] user is able to access redis-cli
5
+
1
6
  ## 0.3.2 / 2013-06-28
2
7
 
3
8
  * [improvement] API changes to handle user virtual server interactions
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
@@ -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, :delete, :info, :ip, :logout, :execute, :rake, :setup, :console, :dbconsole]
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"
@@ -1,3 +1,3 @@
1
1
  module Shelly
2
- VERSION = "0.3.2"
2
+ VERSION = "0.3.3"
3
3
  end
@@ -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.2
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
- requirements:
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: 2.0.3
332
+ rubygems_version: 1.8.25
327
333
  signing_key:
328
- specification_version: 4
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=