cfoundry 0.3.27 → 0.3.28
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/lib/cfoundry/v1/app.rb +58 -0
- data/lib/cfoundry/v1/base.rb +4 -0
- data/lib/cfoundry/v2/app.rb +67 -0
- data/lib/cfoundry/v2/base.rb +5 -0
- data/lib/cfoundry/version.rb +1 -1
- metadata +4 -4
data/lib/cfoundry/v1/app.rb
CHANGED
@@ -111,6 +111,13 @@ module CFoundry::V1
|
|
111
111
|
end
|
112
112
|
end
|
113
113
|
|
114
|
+
# Retrieve crashed instances
|
115
|
+
def crashes
|
116
|
+
@client.base.crashes(@name).collect do |i|
|
117
|
+
CrashedInstance.new(@name, i[:instance], @client, i)
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
114
121
|
# Retrieve application statistics, e.g. CPU load and memory usage.
|
115
122
|
def stats
|
116
123
|
@client.base.stats(@name)
|
@@ -551,5 +558,56 @@ module CFoundry::V1
|
|
551
558
|
@client.base.files(@app, @index, *path)
|
552
559
|
end
|
553
560
|
end
|
561
|
+
|
562
|
+
# Class represnting a crashed instance of an application.
|
563
|
+
class CrashedInstance
|
564
|
+
# The application this instance belonged to.
|
565
|
+
attr_reader :app
|
566
|
+
|
567
|
+
# Crashed instance (pseudo-)unique identifier.
|
568
|
+
attr_reader :id
|
569
|
+
|
570
|
+
# Create a CrashedInstance object.
|
571
|
+
#
|
572
|
+
# You'll usually call App#crashes instead
|
573
|
+
def initialize(appname, id, client, manifest = {})
|
574
|
+
@app = appname
|
575
|
+
@id = id
|
576
|
+
@client = client
|
577
|
+
@manifest = manifest
|
578
|
+
end
|
579
|
+
|
580
|
+
# Show string representing the application instance.
|
581
|
+
def inspect
|
582
|
+
"#<App::CrashedInstance '#@app' \##@id>"
|
583
|
+
end
|
584
|
+
|
585
|
+
# Instance crashed time.
|
586
|
+
def since
|
587
|
+
@manifest[:since] && Time.at(@manifest[:since])
|
588
|
+
end
|
589
|
+
|
590
|
+
# Retrieve file listing under path for this instance.
|
591
|
+
#
|
592
|
+
# [path]
|
593
|
+
# A sequence of strings representing path segments.
|
594
|
+
#
|
595
|
+
# For example, <code>files("foo", "bar")</code> for +foo/bar+.
|
596
|
+
def files(*path)
|
597
|
+
@client.base.files(@app, @id, *path).split("\n").collect do |entry|
|
598
|
+
path + [entry.split(/\s+/, 2)[0]]
|
599
|
+
end
|
600
|
+
end
|
601
|
+
|
602
|
+
# Retrieve file contents for this instance.
|
603
|
+
#
|
604
|
+
# [path]
|
605
|
+
# A sequence of strings representing path segments.
|
606
|
+
#
|
607
|
+
# For example, <code>file("foo", "bar")</code> for +foo/bar+.
|
608
|
+
def file(*path)
|
609
|
+
@client.base.files(@app, @id, *path)
|
610
|
+
end
|
611
|
+
end
|
554
612
|
end
|
555
613
|
end
|
data/lib/cfoundry/v1/base.rb
CHANGED
@@ -95,6 +95,10 @@ module CFoundry::V1
|
|
95
95
|
get("apps", name, "instances", nil => :json)[:instances]
|
96
96
|
end
|
97
97
|
|
98
|
+
def crashes(name)
|
99
|
+
get("apps", name, "crashes", nil => :json)[:crashes]
|
100
|
+
end
|
101
|
+
|
98
102
|
def files(name, instance, *path)
|
99
103
|
get("apps", name, "instances", instance, "files", *path)
|
100
104
|
end
|
data/lib/cfoundry/v2/app.rb
CHANGED
@@ -195,6 +195,73 @@ module CFoundry::V2
|
|
195
195
|
FileUtils.rm_rf(tmpdir) if tmpdir
|
196
196
|
end
|
197
197
|
|
198
|
+
def files(*path)
|
199
|
+
Instance.new(self, 0, @client).files(*path)
|
200
|
+
end
|
201
|
+
|
202
|
+
def file(*path)
|
203
|
+
Instance.new(self, 0, @client).file(*path)
|
204
|
+
end
|
205
|
+
|
206
|
+
class Instance
|
207
|
+
attr_reader :app, :id
|
208
|
+
|
209
|
+
def initialize(app, id, client, manifest = {})
|
210
|
+
@app = app
|
211
|
+
@id = id
|
212
|
+
@client = client
|
213
|
+
@manifest = manifest
|
214
|
+
end
|
215
|
+
|
216
|
+
def inspect
|
217
|
+
"#<App::Instance '#{@app.name}' \##@id>"
|
218
|
+
end
|
219
|
+
|
220
|
+
def state
|
221
|
+
@manifest[:state]
|
222
|
+
end
|
223
|
+
alias_method :status, :state
|
224
|
+
|
225
|
+
def since
|
226
|
+
Time.at(@manifest[:since])
|
227
|
+
end
|
228
|
+
|
229
|
+
def debugger
|
230
|
+
return unless @manifest[:debug_ip] and @manifest[:debug_port]
|
231
|
+
|
232
|
+
{ :ip => @manifest[:debug_ip],
|
233
|
+
:port => @manifest[:debug_port]
|
234
|
+
}
|
235
|
+
end
|
236
|
+
|
237
|
+
def console
|
238
|
+
return unless @manifest[:console_ip] and @manifest[:console_port]
|
239
|
+
|
240
|
+
{ :ip => @manifest[:console_ip],
|
241
|
+
:port => @manifest[:console_port]
|
242
|
+
}
|
243
|
+
end
|
244
|
+
|
245
|
+
def healthy?
|
246
|
+
case state
|
247
|
+
when "STARTING", "RUNNING"
|
248
|
+
true
|
249
|
+
when "DOWN", "FLAPPING"
|
250
|
+
false
|
251
|
+
end
|
252
|
+
end
|
253
|
+
|
254
|
+
def files(*path)
|
255
|
+
@client.base.files(@app.guid, @id, *path).split("\n").collect do |entry|
|
256
|
+
path + [entry.split(/\s+/, 2)[0]]
|
257
|
+
end
|
258
|
+
end
|
259
|
+
|
260
|
+
def file(*path)
|
261
|
+
@client.base.files(@app.guid, @id, *path)
|
262
|
+
end
|
263
|
+
end
|
264
|
+
|
198
265
|
private
|
199
266
|
|
200
267
|
# Minimum size for an application payload to bother checking resources.
|
data/lib/cfoundry/v2/base.rb
CHANGED
data/lib/cfoundry/version.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cfoundry
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 43
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 3
|
9
|
-
-
|
10
|
-
version: 0.3.
|
9
|
+
- 28
|
10
|
+
version: 0.3.28
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Alex Suraci
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-
|
18
|
+
date: 2012-09-04 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: rest-client
|