Class: RHC::Rest::Application
Instance Method Summary
collapse
Methods included from Membership
#compact_members, #delete_members, included, #leave, #members, #owner, #supports_members?, #supports_update_members?, #update_members
Methods inherited from Base
#add_message, #has_param?, #initialize, #link_href, #links, #rest_method, #supports?
#define_attr, #model_name
Methods included from Attributes
#attribute, #attributes, #attributes=, #clear_attribute
Instance Method Details
#<=>(other) ⇒ Object
325
326
327
328
329
|
# File 'lib/rhc/rest/application.rb', line 325
def <=>(other)
c = name.downcase <=> other.name.downcase
return c unless c == 0
domain_id <=> other.domain_id
end
|
#add_alias(app_alias) ⇒ Object
239
240
241
242
|
# File 'lib/rhc/rest/application.rb', line 239
def add_alias(app_alias)
debug "Running add_alias for #{name}"
rest_method "ADD_ALIAS", :event => "add-alias", :alias => app_alias
end
|
#add_cartridge(cart, options = {}) ⇒ Object
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
# File 'lib/rhc/rest/application.rb', line 35
def add_cartridge(cart, options={})
debug "Adding cartridge #{name}"
clear_attribute :cartridges
cart =
if cart.is_a? String
{:name => cart}
elsif cart.respond_to? :[]
cart
else
c = cart.url ? {:url => cart.url} : {:name => cart.name}
if cart.respond_to?(:environment_variables) && cart.environment_variables.present?
c[:environment_variables] = cart.environment_variables
end
if cart.respond_to?(:gear_size) && cart.gear_size.present?
c[:gear_size] = cart.gear_size
end
cart = c
end
if cart.respond_to?(:[]) and cart[:url] and !has_param?('ADD_CARTRIDGE', 'url')
raise RHC::Rest::DownloadingCartridgesNotSupported, "The server does not support downloading cartridges."
end
rest_method(
"ADD_CARTRIDGE",
cart,
options
)
end
|
253
254
255
256
257
258
259
260
261
262
263
264
265
|
# File 'lib/rhc/rest/application.rb', line 253
def aliases
debug "Getting all aliases for application #{name}"
@aliases ||= begin
aliases = attributes['aliases']
if aliases.nil? or not aliases.is_a?(Array)
supports?('LIST_ALIASES') ? rest_method("LIST_ALIASES") : []
else
aliases.map do |a|
Alias.new(a.is_a?(String) ? {'id' => a} : a, client)
end
end
end
end
|
#cartridges ⇒ Object
65
66
67
68
69
70
71
72
73
|
# File 'lib/rhc/rest/application.rb', line 65
def cartridges
@cartridges ||=
unless (carts = attributes['cartridges']).nil?
carts.map{|x| Cartridge.new(x, client) }
else
debug "Getting all cartridges for application #{name}"
rest_method "LIST_CARTRIDGES"
end
end
|
230
231
232
233
234
235
236
237
|
# File 'lib/rhc/rest/application.rb', line 230
def configure(options={})
debug "Running update for #{name} with options #{options.inspect}"
if supports? "UPDATE"
rest_method "UPDATE", options
else
raise RHC::DeploymentsNotSupportedException
end
end
|
#deployment_activations ⇒ Object
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
|
# File 'lib/rhc/rest/application.rb', line 194
def deployment_activations
items = []
deployments.each do |deployment|
deployment.activations.each do |activation|
items << {:activation => activation, :deployment => deployment}
end
end
items.sort! {|a,b| a[:activation].created_at <=> b[:activation].created_at }
first_activation = {}
items.each do |item|
deployment = item[:deployment]
activation = item[:activation]
item[:active] = item == items.last
if rollback_to = first_activation[deployment.id]
item[:rollback] = true
item[:rollback_to] = rollback_to
items.each {|i| i[:rolled_back] = true if i[:activation].created_at > rollback_to && i[:activation].created_at < activation.created_at }
else
first_activation[deployment.id] = activation.created_at
end
end
items
end
|
#deployments ⇒ Object
188
189
190
191
192
|
# File 'lib/rhc/rest/application.rb', line 188
def deployments
debug "Listing deployments for application #{name}"
raise RHC::DeploymentsNotSupportedException if !supports? "LIST_DEPLOYMENTS"
rest_method("LIST_DEPLOYMENTS").sort
end
|
#destroy ⇒ Object
Also known as:
delete
122
123
124
125
|
# File 'lib/rhc/rest/application.rb', line 122
def destroy
debug "Deleting application #{name}"
rest_method "DELETE"
end
|
24
25
26
|
# File 'lib/rhc/rest/application.rb', line 24
def domain
domain_id
end
|
#environment_variables ⇒ Object
138
139
140
141
142
143
144
145
|
# File 'lib/rhc/rest/application.rb', line 138
def environment_variables
debug "Getting all environment variables for application #{name}"
if supports? "LIST_ENVIRONMENT_VARIABLES"
rest_method "LIST_ENVIRONMENT_VARIABLES"
else
raise RHC::EnvironmentVariablesNotSupportedException.new
end
end
|
#find_alias(name, options = {}) ⇒ Object
267
268
269
270
271
272
273
274
275
276
|
# File 'lib/rhc/rest/application.rb', line 267
def find_alias(name, options={})
debug "Finding alias #{name} in app #{@name}"
if name.is_a?(Hash)
options = name
name = options[:name]
end
aliases.each { |a| return a if a.is_a?(String) || a.id == name.downcase }
raise RHC::AliasNotFoundException.new("Alias #{name} can't be found in application #{@name}.")
end
|
#find_cartridge(sought, options = {}) ⇒ Object
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
|
# File 'lib/rhc/rest/application.rb', line 279
def find_cartridge(sought, options={})
debug "Finding cartridge #{sought} in app #{name}"
type = options[:type]
cartridges.each { |cart| return cart if cart.name == sought and (type.nil? or cart.type == type) }
suggested_msg = ""
valid_cartridges = cartridges.select {|c| type.nil? or c.type == type}
unless valid_cartridges.empty?
suggested_msg = "\n\nValid cartridges:"
valid_cartridges.each { |cart| suggested_msg += "\n#{cart.name}" }
end
raise RHC::CartridgeNotFoundException.new("Cartridge #{sought} can't be found in application #{name}.#{suggested_msg}")
end
|
#find_cartridges(name, options = {}) ⇒ Object
Find Cartridges by name or regex
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
|
# File 'lib/rhc/rest/application.rb', line 296
def find_cartridges(name, options={})
if name.is_a?(Hash)
options = name
name = options[:name]
end
type = options[:type]
regex = options[:regex]
debug "Finding cartridge #{name || regex} in app #{@name}"
filtered = Array.new
cartridges.each do |cart|
if regex
filtered.push(cart) if cart.name.match(/(?i:#{regex})/) and (type.nil? or cart.type == type)
else
filtered.push(cart) if cart.name.downcase == name.downcase and (type.nil? or cart.type == type)
end
end
filtered
end
|
#find_environment_variable(env_var_name) ⇒ Object
147
148
149
|
# File 'lib/rhc/rest/application.rb', line 147
def find_environment_variable(env_var_name)
find_environment_variables(env_var_name).first
end
|
#find_environment_variables(env_var_names = nil) ⇒ Object
151
152
153
154
155
156
157
158
|
# File 'lib/rhc/rest/application.rb', line 151
def find_environment_variables(env_var_names=nil)
return environment_variables if env_var_names.nil?
env_var_names = [env_var_names].flatten
debug "Finding environment variable(s) #{env_var_names.inspect} in app #{@name}"
env_vars = environment_variables.select { |item| env_var_names.include? item.name }
raise RHC::EnvironmentVariableNotFoundException.new("Environment variable(s) #{env_var_names.join(', ')} can't be found in application #{name}.") if env_vars.empty?
env_vars
end
|
#gear_groups ⇒ Object
79
80
81
82
|
# File 'lib/rhc/rest/application.rb', line 79
def gear_groups
debug "Getting all gear groups for application #{name}"
rest_method "GET_GEAR_GROUPS"
end
|
#gear_info ⇒ Object
75
76
77
|
# File 'lib/rhc/rest/application.rb', line 75
def gear_info
{ :gear_count => gear_count, :gear_profile => gear_profile } unless gear_count.nil?
end
|
#gear_ssh_url(gear_id) ⇒ Object
88
89
90
91
92
93
|
# File 'lib/rhc/rest/application.rb', line 88
def gear_ssh_url(gear_id)
gear = gears.find{ |g| g['id'] == gear_id }
raise ArgumentError, "Gear #{gear_id} not found" if gear.nil?
gear['ssh_url'] or raise NoPerGearOperations
end
|
84
85
86
|
# File 'lib/rhc/rest/application.rb', line 84
def gears
gear_groups.map{ |group| group.gears }.flatten
end
|
317
318
319
|
# File 'lib/rhc/rest/application.rb', line 317
def host
@host ||= URI.parse(app_url).host rescue nil
end
|
20
21
22
|
# File 'lib/rhc/rest/application.rb', line 20
def id
attributes['id'] || uuid
end
|
128
129
130
131
|
# File 'lib/rhc/rest/application.rb', line 128
def reload
debug "Reload application #{name}"
rest_method "RELOAD", :event => "reload"
end
|
#remove_alias(app_alias) ⇒ Object
244
245
246
247
248
249
250
251
|
# File 'lib/rhc/rest/application.rb', line 244
def remove_alias(app_alias)
debug "Running remove_alias for #{name}"
if (client.api_version_negotiated >= 1.4)
find_alias(app_alias).destroy
else
rest_method "REMOVE_ALIAS", :event => "remove-alias", :alias => app_alias
end
end
|
117
118
119
120
|
# File 'lib/rhc/rest/application.rb', line 117
def restart
debug "Restarting application #{name}"
rest_method "RESTART", :event => "restart"
end
|
#scalable? ⇒ Boolean
Query helper to say consistent with cartridge
16
17
18
|
# File 'lib/rhc/rest/application.rb', line 16
def scalable?
scalable
end
|
#scalable_carts ⇒ Object
28
29
30
31
32
33
|
# File 'lib/rhc/rest/application.rb', line 28
def scalable_carts
return [] unless scalable?
carts = cartridges.select(&:scalable?)
scales_with = carts.map(&:scales_with)
carts.delete_if{|x| scales_with.include?(x.name)}
end
|
#set_environment_variables(env_vars = []) ⇒ Object
161
162
163
164
165
166
167
168
|
# File 'lib/rhc/rest/application.rb', line 161
def set_environment_variables(env_vars=[])
debug "Adding environment variable(s) #{env_vars.inspect} for #{name}"
if supports? "SET_UNSET_ENVIRONMENT_VARIABLES"
rest_method "SET_UNSET_ENVIRONMENT_VARIABLES", :environment_variables => env_vars.map{|item| item.to_hash}
else
raise RHC::EnvironmentVariablesNotSupportedException.new
end
end
|
#ssh_string ⇒ Object
321
322
323
|
# File 'lib/rhc/rest/application.rb', line 321
def ssh_string
RHC::Helpers.ssh_string(ssh_url)
end
|
100
101
102
103
|
# File 'lib/rhc/rest/application.rb', line 100
def start
debug "Starting application #{name}"
rest_method 'START', :event => "start"
end
|
#stop(force = false) ⇒ Object
105
106
107
108
109
110
111
112
113
114
115
|
# File 'lib/rhc/rest/application.rb', line 105
def stop(force=false)
debug "Stopping application #{name} force-#{force}"
if force
payload = {:event=> "force-stop"}
else
payload = {:event=> "stop"}
end
rest_method "STOP", payload
end
|
#supports_add_cartridge_with_env_vars? ⇒ Boolean
180
181
182
|
# File 'lib/rhc/rest/application.rb', line 180
def supports_add_cartridge_with_env_vars?
has_param?('ADD_CARTRIDGE', 'environment_variables')
end
|
#supports_add_cartridge_with_gear_size? ⇒ Boolean
184
185
186
|
# File 'lib/rhc/rest/application.rb', line 184
def supports_add_cartridge_with_gear_size?
has_param?('ADD_CARTRIDGE', 'gear_size')
end
|
#threaddump ⇒ Object
133
134
135
136
|
# File 'lib/rhc/rest/application.rb', line 133
def threaddump
debug "Running thread dump for #{name}"
rest_method "THREAD_DUMP", :event => "thread-dump"
end
|
95
96
97
98
|
# File 'lib/rhc/rest/application.rb', line 95
def tidy
debug "Starting application #{name}"
rest_method 'TIDY', :event => "tidy"
end
|
#unset_environment_variables(env_vars = []) ⇒ Object
171
172
173
174
175
176
177
178
|
# File 'lib/rhc/rest/application.rb', line 171
def unset_environment_variables(env_vars=[])
debug "Removing environment variable(s) #{env_vars.inspect} for #{name}"
if supports? "SET_UNSET_ENVIRONMENT_VARIABLES"
rest_method "SET_UNSET_ENVIRONMENT_VARIABLES", :environment_variables => env_vars.map{|item| {:name => item}}
else
raise RHC::EnvironmentVariablesNotSupportedException.new
end
end
|