shelly 0.4.23 → 0.4.24

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 156c647aa3ce6482062d6bdfb9cef969f492b1a8
4
- data.tar.gz: 27c61878672f174c08b2b7f6b92a39a96fb7ea03
3
+ metadata.gz: 25534c9362fd63574107232cf2eadd9c2b200627
4
+ data.tar.gz: 833dd066a7c2451b69f719c84fdfdbc1a15222a4
5
5
  SHA512:
6
- metadata.gz: 4a47ff8e7391d5001d705c0ea7ac2753604a44fb02d36366046ccf233481e08ae860a62373bb4a540e2fa64acf008069debe7506d484397ca0ff7afb69f69252
7
- data.tar.gz: 8b8cab53bb372b57ea65e8d100506f151a3250a8bc5e3d0d26629d4089c4daf19ede26361c04ea0d54f30b3d136856075a2edfdcb70865d6f60a83482229cb1d
6
+ metadata.gz: 37591a488e05a52e64d0f49eff04dedfc8199b98186ea9deeb7dff40e55d6f0896a21042d4cea1043a5826328092a5b4a945dad98ccce36849b8baadeb6d9921
7
+ data.tar.gz: 46d2dc570e9f0c519be6117bd040c8be91e8d1352e8ca5ec00dacf5744f018a845f85a3c91c696a9e7315eee947bfcdb738f611403c8df8ca1c18c4e56e33197
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## 0.4.24 / 2014-02-25
2
+
3
+ * [improvement] Show recent information about filesystem, database and traffic
4
+ usage in `shelly info` output
5
+
1
6
  ## 0.4.23 / 2014-02-17
2
7
 
3
8
  * [improvement] Force pseudo-tty allocation when connection via ssh - fixes ssh
data/lib/shelly/app.rb CHANGED
@@ -235,6 +235,10 @@ module Shelly
235
235
  @stats ||= shelly.statistics(code_name)
236
236
  end
237
237
 
238
+ def usage
239
+ @usage ||= shelly.usage(code_name)
240
+ end
241
+
238
242
  def system_user
239
243
  attributes["system_user"]
240
244
  end
@@ -116,6 +116,17 @@ module Shelly
116
116
  print_wrapped "Repository URL: #{app.git_info["repository_url"]}", :ident => 2
117
117
  print_wrapped "Web server IP: #{app.web_server_ip}", :ident => 2
118
118
  say_new_line
119
+ print_wrapped "Usage:", :ident => 2
120
+ print_wrapped "Filesystem:", :ident => 4
121
+ print_wrapped "Current: #{app.usage['filesystem']['current']}", :ident => 6
122
+ print_wrapped "Average: #{app.usage['filesystem']['avg']}", :ident => 6
123
+ print_wrapped "Database:", :ident => 4
124
+ print_wrapped "Current: #{app.usage['database']['current']}", :ident => 6
125
+ print_wrapped "Average: #{app.usage['database']['avg']}", :ident => 6
126
+ print_wrapped "Traffic:", :ident => 4
127
+ print_wrapped "Incoming: #{app.usage['traffic']['incoming']}", :ident => 6
128
+ print_wrapped "Outgoing: #{app.usage['traffic']['outgoing']}", :ident => 6
129
+ say_new_line
119
130
  if app.statistics.present?
120
131
  print_wrapped "Statistics:", :ident => 2
121
132
  app.statistics.each do |stat|
@@ -30,6 +30,10 @@ class Shelly::Client
30
30
  get("/apps/#{code_name}/statistics")
31
31
  end
32
32
 
33
+ def usage(code_name)
34
+ get("/apps/#{code_name}/usage")
35
+ end
36
+
33
37
  def command(cloud, body, type)
34
38
  post("/apps/#{cloud}/command", {:body => body, :type => type})
35
39
  end
@@ -1,3 +1,3 @@
1
1
  module Shelly
2
- VERSION = "0.4.23"
2
+ VERSION = "0.4.24"
3
3
  end
@@ -229,6 +229,31 @@ describe Shelly::App do
229
229
  end
230
230
  end
231
231
 
232
+ describe "#usage" do
233
+ before do
234
+ @response = {
235
+ "filesystem" => {
236
+ "avg" => "32 KiB",
237
+ "current" => "64 KiB"
238
+ },
239
+ "database" => {
240
+ "avg" => "64 KiB",
241
+ "current" => "128 KiB"
242
+ },
243
+ "traffic" => {
244
+ "incoming" => "32 KiB",
245
+ "outgoing" => "64 KiB"
246
+ }
247
+ }
248
+ @client.stub(:usage).and_return(@response)
249
+ end
250
+
251
+ it "should fetch app usage from API and cache them" do
252
+ @client.should_receive(:usage).with("foo-staging").exactly(:once).and_return(@response)
253
+ 2.times { @app.usage }
254
+ end
255
+ end
256
+
232
257
  describe "#start & #stop" do
233
258
  it "should start cloud" do
234
259
  @client.should_receive(:start_cloud).with("foo-staging").
@@ -974,7 +974,22 @@ Wait until cloud is in 'turned off' state and try again.")
974
974
  "swap" => {"kilobyte" => "44332", "percent" => "2.8"},
975
975
  "cpu" => {"wait" => "0.8", "system" => "0.0", "user" => "0.1"},
976
976
  "load" => {"avg15" => "0.13", "avg05" => "0.15", "avg01" => "0.04"}}]
977
+ @usage = {
978
+ "filesystem" => {
979
+ "avg" => "32 KiB",
980
+ "current" => "64 KiB"
981
+ },
982
+ "database" => {
983
+ "avg" => "64 KiB",
984
+ "current" => "128 KiB"
985
+ },
986
+ "traffic" => {
987
+ "incoming" => "32 KiB",
988
+ "outgoing" => "64 KiB"
989
+ }
990
+ }
977
991
  @app.stub(:statistics).and_return(@statistics)
992
+ @app.stub(:usage).and_return(@usage)
978
993
  end
979
994
 
980
995
  it "should ensure user has logged in" do
@@ -997,6 +1012,16 @@ Wait until cloud is in 'turned off' state and try again.")
997
1012
  $stdout.should_receive(:puts).with(" Deployed by: megan@example.com")
998
1013
  $stdout.should_receive(:puts).with(" Repository URL: git@winniecloud.net:example-cloud")
999
1014
  $stdout.should_receive(:puts).with(" Web server IP: 22.22.22.22")
1015
+ $stdout.should_receive(:puts).with(" Usage:")
1016
+ $stdout.should_receive(:puts).with(" Filesystem:")
1017
+ $stdout.should_receive(:puts).with(" Average: 32 KiB")
1018
+ $stdout.should_receive(:puts).with(" Current: 64 KiB")
1019
+ $stdout.should_receive(:puts).with(" Database:")
1020
+ $stdout.should_receive(:puts).with(" Average: 64 KiB")
1021
+ $stdout.should_receive(:puts).with(" Current: 128 KiB")
1022
+ $stdout.should_receive(:puts).with(" Traffic:")
1023
+ $stdout.should_receive(:puts).with(" Incoming: 32 KiB")
1024
+ $stdout.should_receive(:puts).with(" Outgoing: 64 KiB")
1000
1025
  $stdout.should_receive(:puts).with(" Statistics:")
1001
1026
  $stdout.should_receive(:puts).with(" app1:")
1002
1027
  $stdout.should_receive(:puts).with(" Load average: 1m: 0.04, 5m: 0.15, 15m: 0.13")
@@ -1019,6 +1044,16 @@ Wait until cloud is in 'turned off' state and try again.")
1019
1044
  $stdout.should_receive(:puts).with(" Deployed by: megan@example.com")
1020
1045
  $stdout.should_receive(:puts).with(" Repository URL: git@winniecloud.net:example-cloud")
1021
1046
  $stdout.should_receive(:puts).with(" Web server IP: 22.22.22.22")
1047
+ $stdout.should_receive(:puts).with(" Usage:")
1048
+ $stdout.should_receive(:puts).with(" Filesystem:")
1049
+ $stdout.should_receive(:puts).with(" Average: 32 KiB")
1050
+ $stdout.should_receive(:puts).with(" Current: 64 KiB")
1051
+ $stdout.should_receive(:puts).with(" Database:")
1052
+ $stdout.should_receive(:puts).with(" Average: 64 KiB")
1053
+ $stdout.should_receive(:puts).with(" Current: 128 KiB")
1054
+ $stdout.should_receive(:puts).with(" Traffic:")
1055
+ $stdout.should_receive(:puts).with(" Incoming: 32 KiB")
1056
+ $stdout.should_receive(:puts).with(" Outgoing: 64 KiB")
1022
1057
  $stdout.should_receive(:puts).with(" Statistics:")
1023
1058
  $stdout.should_receive(:puts).with(" app1:")
1024
1059
  $stdout.should_receive(:puts).with(" Load average: 1m: 0.04, 5m: 0.15, 15m: 0.13")
@@ -1041,6 +1076,16 @@ Wait until cloud is in 'turned off' state and try again.")
1041
1076
  $stdout.should_receive(:puts).with(" Deployed by: megan@example.com")
1042
1077
  $stdout.should_receive(:puts).with(" Repository URL: git@winniecloud.net:example-cloud")
1043
1078
  $stdout.should_receive(:puts).with(" Web server IP: 22.22.22.22")
1079
+ $stdout.should_receive(:puts).with(" Usage:")
1080
+ $stdout.should_receive(:puts).with(" Filesystem:")
1081
+ $stdout.should_receive(:puts).with(" Average: 32 KiB")
1082
+ $stdout.should_receive(:puts).with(" Current: 64 KiB")
1083
+ $stdout.should_receive(:puts).with(" Database:")
1084
+ $stdout.should_receive(:puts).with(" Average: 64 KiB")
1085
+ $stdout.should_receive(:puts).with(" Current: 128 KiB")
1086
+ $stdout.should_receive(:puts).with(" Traffic:")
1087
+ $stdout.should_receive(:puts).with(" Incoming: 32 KiB")
1088
+ $stdout.should_receive(:puts).with(" Outgoing: 64 KiB")
1044
1089
  $stdout.should_receive(:puts).with(" Statistics:")
1045
1090
  $stdout.should_receive(:puts).with(" app1:")
1046
1091
  $stdout.should_receive(:puts).with(" Load average: 1m: 0.04, 5m: 0.15, 15m: 0.13")
@@ -243,6 +243,44 @@ describe Shelly::Client do
243
243
  end
244
244
  end
245
245
 
246
+ describe "#usage" do
247
+ before do
248
+ FakeWeb.register_uri(:get,
249
+ api_url("apps/staging-foo/usage"),
250
+ :body => {
251
+ :filesystem => {
252
+ :avg => "32 KiB",
253
+ :current => "64 KiB"
254
+ },
255
+ :database => {
256
+ :avg => "64 KiB",
257
+ :current => "128 KiB"
258
+ },
259
+ :traffic => {
260
+ :incoming => "32 KiB",
261
+ :outgoing => "64 KiB"
262
+ }
263
+ }.to_json)
264
+ end
265
+
266
+ it "should fetch application usage from API" do
267
+ expect(@client.usage("staging-foo")).to eq({
268
+ "filesystem" => {
269
+ "avg" => "32 KiB",
270
+ "current" => "64 KiB"
271
+ },
272
+ "database" => {
273
+ "avg" => "64 KiB",
274
+ "current" => "128 KiB"
275
+ },
276
+ "traffic" => {
277
+ "incoming" => "32 KiB",
278
+ "outgoing" => "64 KiB"
279
+ }
280
+ })
281
+ end
282
+ end
283
+
246
284
  describe "#command" do
247
285
  it "should send post request with app code_name, body and type" do
248
286
  @client.should_receive(:post).with("/apps/staging-foo/command",
metadata CHANGED
@@ -1,211 +1,211 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shelly
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.23
4
+ version: 0.4.24
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shelly Cloud team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-17 00:00:00.000000000 Z
11
+ date: 2014-02-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- version_requirements: !ruby/object:Gem::Requirement
15
- requirements:
16
- - - ~>
17
- - !ruby/object:Gem::Version
18
- version: 2.11.0
19
- prerelease: false
20
14
  name: rspec
21
15
  requirement: !ruby/object:Gem::Requirement
22
16
  requirements:
23
- - - ~>
17
+ - - "~>"
24
18
  - !ruby/object:Gem::Version
25
19
  version: 2.11.0
26
20
  type: :development
27
- - !ruby/object:Gem::Dependency
21
+ prerelease: false
28
22
  version_requirements: !ruby/object:Gem::Requirement
29
23
  requirements:
30
- - - '>='
24
+ - - "~>"
31
25
  - !ruby/object:Gem::Version
32
- version: '0'
33
- prerelease: false
26
+ version: 2.11.0
27
+ - !ruby/object:Gem::Dependency
34
28
  name: rake
35
29
  requirement: !ruby/object:Gem::Requirement
36
30
  requirements:
37
- - - '>='
31
+ - - ">="
38
32
  - !ruby/object:Gem::Version
39
33
  version: '0'
40
34
  type: :development
41
- - !ruby/object:Gem::Dependency
35
+ prerelease: false
42
36
  version_requirements: !ruby/object:Gem::Requirement
43
37
  requirements:
44
- - - '>='
38
+ - - ">="
45
39
  - !ruby/object:Gem::Version
46
40
  version: '0'
47
- prerelease: false
41
+ - !ruby/object:Gem::Dependency
48
42
  name: simplecov
49
43
  requirement: !ruby/object:Gem::Requirement
50
44
  requirements:
51
- - - '>='
45
+ - - ">="
52
46
  - !ruby/object:Gem::Version
53
47
  version: '0'
54
48
  type: :development
55
- - !ruby/object:Gem::Dependency
49
+ prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
51
  requirements:
58
- - - '>='
52
+ - - ">="
59
53
  - !ruby/object:Gem::Version
60
54
  version: '0'
61
- prerelease: false
55
+ - !ruby/object:Gem::Dependency
62
56
  name: ruby_gntp
63
57
  requirement: !ruby/object:Gem::Requirement
64
58
  requirements:
65
- - - '>='
59
+ - - ">="
66
60
  - !ruby/object:Gem::Version
67
61
  version: '0'
68
62
  type: :development
69
- - !ruby/object:Gem::Dependency
63
+ prerelease: false
70
64
  version_requirements: !ruby/object:Gem::Requirement
71
65
  requirements:
72
- - - '>='
66
+ - - ">="
73
67
  - !ruby/object:Gem::Version
74
68
  version: '0'
75
- prerelease: false
69
+ - !ruby/object:Gem::Dependency
76
70
  name: rb-fsevent
77
71
  requirement: !ruby/object:Gem::Requirement
78
72
  requirements:
79
- - - '>='
73
+ - - ">="
80
74
  - !ruby/object:Gem::Version
81
75
  version: '0'
82
76
  type: :development
83
- - !ruby/object:Gem::Dependency
77
+ prerelease: false
84
78
  version_requirements: !ruby/object:Gem::Requirement
85
79
  requirements:
86
- - - ~>
80
+ - - ">="
87
81
  - !ruby/object:Gem::Version
88
- version: 0.4.3
89
- prerelease: false
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
90
84
  name: fakefs
91
85
  requirement: !ruby/object:Gem::Requirement
92
86
  requirements:
93
- - - ~>
87
+ - - "~>"
94
88
  - !ruby/object:Gem::Version
95
89
  version: 0.4.3
96
90
  type: :development
97
- - !ruby/object:Gem::Dependency
91
+ prerelease: false
98
92
  version_requirements: !ruby/object:Gem::Requirement
99
93
  requirements:
100
- - - '>='
94
+ - - "~>"
101
95
  - !ruby/object:Gem::Version
102
- version: '0'
103
- prerelease: false
96
+ version: 0.4.3
97
+ - !ruby/object:Gem::Dependency
104
98
  name: fakeweb
105
99
  requirement: !ruby/object:Gem::Requirement
106
100
  requirements:
107
- - - '>='
101
+ - - ">="
108
102
  - !ruby/object:Gem::Version
109
103
  version: '0'
110
104
  type: :development
111
- - !ruby/object:Gem::Dependency
105
+ prerelease: false
112
106
  version_requirements: !ruby/object:Gem::Requirement
113
107
  requirements:
114
- - - ~>
108
+ - - ">="
115
109
  - !ruby/object:Gem::Version
116
- version: 0.14.10
117
- prerelease: false
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
118
112
  name: wijet-thor
119
113
  requirement: !ruby/object:Gem::Requirement
120
114
  requirements:
121
- - - ~>
115
+ - - "~>"
122
116
  - !ruby/object:Gem::Version
123
117
  version: 0.14.10
124
118
  type: :runtime
125
- - !ruby/object:Gem::Dependency
119
+ prerelease: false
126
120
  version_requirements: !ruby/object:Gem::Requirement
127
121
  requirements:
128
- - - '>='
122
+ - - "~>"
129
123
  - !ruby/object:Gem::Version
130
- version: '0'
131
- prerelease: false
124
+ version: 0.14.10
125
+ - !ruby/object:Gem::Dependency
132
126
  name: rest-client
133
127
  requirement: !ruby/object:Gem::Requirement
134
128
  requirements:
135
- - - '>='
129
+ - - ">="
136
130
  - !ruby/object:Gem::Version
137
131
  version: '0'
138
132
  type: :runtime
139
- - !ruby/object:Gem::Dependency
133
+ prerelease: false
140
134
  version_requirements: !ruby/object:Gem::Requirement
141
135
  requirements:
142
- - - ~>
136
+ - - ">="
143
137
  - !ruby/object:Gem::Version
144
- version: '1.16'
145
- prerelease: false
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
146
140
  name: mime-types
147
141
  requirement: !ruby/object:Gem::Requirement
148
142
  requirements:
149
- - - ~>
143
+ - - "~>"
150
144
  - !ruby/object:Gem::Version
151
145
  version: '1.16'
152
146
  type: :runtime
153
- - !ruby/object:Gem::Dependency
147
+ prerelease: false
154
148
  version_requirements: !ruby/object:Gem::Requirement
155
149
  requirements:
156
- - - '>='
150
+ - - "~>"
157
151
  - !ruby/object:Gem::Version
158
- version: '0'
159
- prerelease: false
152
+ version: '1.16'
153
+ - !ruby/object:Gem::Dependency
160
154
  name: json
161
155
  requirement: !ruby/object:Gem::Requirement
162
156
  requirements:
163
- - - '>='
157
+ - - ">="
164
158
  - !ruby/object:Gem::Version
165
159
  version: '0'
166
160
  type: :runtime
167
- - !ruby/object:Gem::Dependency
161
+ prerelease: false
168
162
  version_requirements: !ruby/object:Gem::Requirement
169
163
  requirements:
170
- - - '>='
164
+ - - ">="
171
165
  - !ruby/object:Gem::Version
172
166
  version: '0'
173
- prerelease: false
167
+ - !ruby/object:Gem::Dependency
174
168
  name: progressbar
175
169
  requirement: !ruby/object:Gem::Requirement
176
170
  requirements:
177
- - - '>='
171
+ - - ">="
178
172
  - !ruby/object:Gem::Version
179
173
  version: '0'
180
174
  type: :runtime
181
- - !ruby/object:Gem::Dependency
175
+ prerelease: false
182
176
  version_requirements: !ruby/object:Gem::Requirement
183
177
  requirements:
184
- - - '>='
178
+ - - ">="
185
179
  - !ruby/object:Gem::Version
186
180
  version: '0'
187
- prerelease: false
181
+ - !ruby/object:Gem::Dependency
188
182
  name: launchy
189
183
  requirement: !ruby/object:Gem::Requirement
190
184
  requirements:
191
- - - '>='
185
+ - - ">="
192
186
  - !ruby/object:Gem::Version
193
187
  version: '0'
194
188
  type: :runtime
195
- - !ruby/object:Gem::Dependency
189
+ prerelease: false
196
190
  version_requirements: !ruby/object:Gem::Requirement
197
191
  requirements:
198
- - - '>='
192
+ - - ">="
199
193
  - !ruby/object:Gem::Version
200
194
  version: '0'
201
- prerelease: false
195
+ - !ruby/object:Gem::Dependency
202
196
  name: netrc
203
197
  requirement: !ruby/object:Gem::Requirement
204
198
  requirements:
205
- - - '>='
199
+ - - ">="
206
200
  - !ruby/object:Gem::Version
207
201
  version: '0'
208
202
  type: :runtime
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
209
209
  description: Tool for managing applications and clouds at shellycloud.com
210
210
  email:
211
211
  - devs@shellycloud.com
@@ -214,8 +214,8 @@ executables:
214
214
  extensions: []
215
215
  extra_rdoc_files: []
216
216
  files:
217
- - .gitignore
218
- - .travis.yml
217
+ - ".gitignore"
218
+ - ".travis.yml"
219
219
  - CHANGELOG.md
220
220
  - Gemfile
221
221
  - LICENSE
@@ -310,17 +310,17 @@ require_paths:
310
310
  - lib
311
311
  required_ruby_version: !ruby/object:Gem::Requirement
312
312
  requirements:
313
- - - '>='
313
+ - - ">="
314
314
  - !ruby/object:Gem::Version
315
315
  version: '0'
316
316
  required_rubygems_version: !ruby/object:Gem::Requirement
317
317
  requirements:
318
- - - '>='
318
+ - - ">="
319
319
  - !ruby/object:Gem::Version
320
320
  version: '0'
321
321
  requirements: []
322
322
  rubyforge_project: shelly
323
- rubygems_version: 2.2.1
323
+ rubygems_version: 2.2.2
324
324
  signing_key:
325
325
  specification_version: 4
326
326
  summary: Shelly Cloud command line tool