shelly 0.4.23 → 0.4.24

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