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 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=