cfoundry 0.3.8 → 0.3.9
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 +8 -4
- data/lib/cfoundry/v2/app.rb +36 -11
- data/lib/cfoundry/v2/model.rb +47 -10
- data/lib/cfoundry/version.rb +1 -1
- metadata +4 -4
data/lib/cfoundry/v1/app.rb
CHANGED
@@ -321,18 +321,22 @@ module CFoundry::V1
|
|
321
321
|
|
322
322
|
|
323
323
|
# Bind services to application.
|
324
|
-
def bind(*
|
325
|
-
update!(:services => services +
|
324
|
+
def bind(*instances)
|
325
|
+
update!(:services => services + instances.collect(&:name))
|
326
326
|
end
|
327
327
|
|
328
328
|
# Unbind services from application.
|
329
|
-
def unbind(*
|
329
|
+
def unbind(*instances)
|
330
330
|
update!(:services =>
|
331
331
|
services.reject { |s|
|
332
|
-
|
332
|
+
instances.any? { |i| i.name == s }
|
333
333
|
})
|
334
334
|
end
|
335
335
|
|
336
|
+
def binds?(instance)
|
337
|
+
services.any? { |s| s == instance.name }
|
338
|
+
end
|
339
|
+
|
336
340
|
# Retrieve file listing under path for the first instance of the application.
|
337
341
|
#
|
338
342
|
# [path]
|
data/lib/cfoundry/v2/app.rb
CHANGED
@@ -33,11 +33,12 @@ module CFoundry::V2
|
|
33
33
|
alias :total_instances :instances
|
34
34
|
alias :total_instances= :instances=
|
35
35
|
|
36
|
-
alias :services :service_bindings
|
37
|
-
alias :services= :service_bindings=
|
38
|
-
|
39
36
|
private :environment_json, :environment_json=
|
40
37
|
|
38
|
+
def services
|
39
|
+
service_bindings.collect(&:service_instance)
|
40
|
+
end
|
41
|
+
|
41
42
|
def env
|
42
43
|
@env ||= CFoundry::ChattyHash.new(
|
43
44
|
method(:env=),
|
@@ -50,10 +51,17 @@ module CFoundry::V2
|
|
50
51
|
hash
|
51
52
|
end
|
52
53
|
|
54
|
+
def command # TODO v2
|
55
|
+
nil
|
56
|
+
end
|
57
|
+
|
53
58
|
def debug_mode # TODO v2
|
54
59
|
nil
|
55
60
|
end
|
56
|
-
|
61
|
+
|
62
|
+
def console # TODO v2
|
63
|
+
nil
|
64
|
+
end
|
57
65
|
|
58
66
|
def uris # TODO v2
|
59
67
|
[]
|
@@ -118,16 +126,33 @@ module CFoundry::V2
|
|
118
126
|
end
|
119
127
|
|
120
128
|
# Bind services to application.
|
121
|
-
def bind(*
|
122
|
-
|
129
|
+
def bind(*instances)
|
130
|
+
instances.each do |i|
|
131
|
+
binding = @client.service_binding
|
132
|
+
binding.app = self
|
133
|
+
binding.service_instance = i
|
134
|
+
binding.credentials = {} # ?
|
135
|
+
binding.create!
|
136
|
+
end
|
137
|
+
|
138
|
+
self
|
123
139
|
end
|
124
140
|
|
125
141
|
# Unbind services from application.
|
126
|
-
def unbind(*
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
142
|
+
def unbind(*instances)
|
143
|
+
service_bindings.each do |b|
|
144
|
+
if instances.include? b.service_instance
|
145
|
+
b.delete!
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
self
|
150
|
+
end
|
151
|
+
|
152
|
+
def binds?(instance)
|
153
|
+
service_bindings.any? { |b|
|
154
|
+
b.service_instance == instance
|
155
|
+
}
|
131
156
|
end
|
132
157
|
end
|
133
158
|
end
|
data/lib/cfoundry/v2/model.rb
CHANGED
@@ -25,8 +25,8 @@ module CFoundry::V2
|
|
25
25
|
obj = opts[:as] || name
|
26
26
|
|
27
27
|
define_method(name) {
|
28
|
-
if manifest[:entity].key?
|
29
|
-
@client.send(:"make_#{obj}", manifest[:entity][name])
|
28
|
+
if @manifest && @manifest[:entity].key?(name)
|
29
|
+
@client.send(:"make_#{obj}", @manifest[:entity][name])
|
30
30
|
else
|
31
31
|
@client.send(
|
32
32
|
:"#{obj}_from",
|
@@ -56,8 +56,8 @@ module CFoundry::V2
|
|
56
56
|
define_method(plural) { |*args|
|
57
57
|
depth, query = args
|
58
58
|
|
59
|
-
if manifest[:entity].key?(plural)
|
60
|
-
objs = manifest[:entity][plural]
|
59
|
+
if @manifest && @manifest[:entity].key?(plural) && !depth
|
60
|
+
objs = @manifest[:entity][plural]
|
61
61
|
|
62
62
|
if query
|
63
63
|
find_by = query.keys.first
|
@@ -71,7 +71,7 @@ module CFoundry::V2
|
|
71
71
|
else
|
72
72
|
@client.send(
|
73
73
|
:"#{plural_object}_from",
|
74
|
-
|
74
|
+
"/v2/#{object_name}s/#@guid/#{plural}",
|
75
75
|
depth || opts[:depth],
|
76
76
|
query)
|
77
77
|
end
|
@@ -130,26 +130,58 @@ module CFoundry::V2
|
|
130
130
|
'\1_\2').downcase
|
131
131
|
end
|
132
132
|
|
133
|
+
# this does a bit of extra processing to allow for
|
134
|
+
# `delete!' followed by `create!'
|
133
135
|
def create!
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
136
|
+
payload = {}
|
137
|
+
|
138
|
+
self.class.defaults.merge(@manifest[:entity]).each do |k, v|
|
139
|
+
if v.is_a?(Hash) && v.key?(:metadata)
|
140
|
+
# skip; there's a _guid attribute already
|
141
|
+
elsif v.is_a?(Array) && v.all? { |x|
|
142
|
+
x.is_a?(Hash) && x.key?(:metadata)
|
143
|
+
}
|
144
|
+
singular = k.to_s.sub(/s$/, "")
|
145
|
+
|
146
|
+
payload[:"#{singular}_guids"] = v.collect do |x|
|
147
|
+
if x.is_a?(Hash) && x.key?(:metadata)
|
148
|
+
x[:metadata][:guid]
|
149
|
+
else
|
150
|
+
x
|
151
|
+
end
|
152
|
+
end
|
153
|
+
elsif k.to_s.end_with?("_json") && v.is_a?(String)
|
154
|
+
payload[k] = JSON.parse(v)
|
155
|
+
elsif k.to_s.end_with?("_url")
|
156
|
+
else
|
157
|
+
payload[k] = v
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
161
|
+
@manifest = @client.base.send(:"create_#{object_name}", payload)
|
138
162
|
|
139
163
|
@guid = @manifest[:metadata][:guid]
|
140
164
|
|
165
|
+
@diff.clear
|
166
|
+
|
141
167
|
true
|
142
168
|
end
|
143
169
|
|
144
170
|
def update!(diff = @diff)
|
145
171
|
@client.base.send(:"update_#{object_name}", @guid, diff)
|
146
172
|
|
173
|
+
@diff.clear if diff == @diff
|
174
|
+
|
147
175
|
@manifest = nil
|
148
176
|
end
|
149
177
|
|
150
178
|
def delete!
|
151
179
|
@client.base.send(:"delete_#{object_name}", @guid)
|
152
180
|
|
181
|
+
@guid = nil
|
182
|
+
|
183
|
+
@diff.clear
|
184
|
+
|
153
185
|
if @manifest
|
154
186
|
@manifest.delete :metadata
|
155
187
|
end
|
@@ -162,8 +194,13 @@ module CFoundry::V2
|
|
162
194
|
false
|
163
195
|
end
|
164
196
|
|
165
|
-
def
|
197
|
+
def eql?(other)
|
166
198
|
other.is_a?(self.class) && @guid == other.guid
|
167
199
|
end
|
200
|
+
alias :== :eql?
|
201
|
+
|
202
|
+
def hash
|
203
|
+
@guid.hash
|
204
|
+
end
|
168
205
|
end
|
169
206
|
end
|
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: 1
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 3
|
9
|
-
-
|
10
|
-
version: 0.3.
|
9
|
+
- 9
|
10
|
+
version: 0.3.9
|
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-07-
|
18
|
+
date: 2012-07-23 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: rest-client
|