Class: PuavoRest::ServerFilter
- Inherits:
-
Object
- Object
- PuavoRest::ServerFilter
- Defined in:
- resources/ltsp_servers.rb
Constant Summary
- MAX_AGE =
How old servers we report as available
60 * 2
Instance Method Summary (collapse)
- - (Boolean) empty?
- - (Object) filter_by_image(ltsp_image)
-
- (Object) filter_by_other_schools(school_dn)
Filter out servers that are dedicated to some other schools.
-
- (Object) filter_by_school(school_dn)
get only those servers that are dedicated to this school.
-
- (Object) filter_by_server(server_dn)
client can be limited to specific server.
- - (Object) filter_has_state
-
- (Object) filter_old
filter out servers that have not posted their load under MAX_AGE.
- - (Object) first
-
- (ServerFilter) initialize(servers)
constructor
A new instance of ServerFilter.
-
- (Object) safe_apply(method, *args)
Apply method of this class to @servers but revert it if it goes to empty.
- - (Object) sort_by_load
- - (Object) to_a
Constructor Details
- (ServerFilter) initialize(servers)
Returns a new instance of ServerFilter
12 13 14 |
# File 'resources/ltsp_servers.rb', line 12 def initialize(servers) @servers = servers end |
Instance Method Details
- (Boolean) empty?
24 25 26 |
# File 'resources/ltsp_servers.rb', line 24 def empty? @servers.empty? end |
- (Object) filter_by_image(ltsp_image)
36 37 38 39 40 |
# File 'resources/ltsp_servers.rb', line 36 def filter_by_image(ltsp_image) @servers = @servers.select do |server| server.state["ltsp_image"] == ltsp_image end end |
- (Object) filter_by_other_schools(school_dn)
Filter out servers that are dedicated to some other schools
49 50 51 52 53 54 55 56 |
# File 'resources/ltsp_servers.rb', line 49 def filter_by_other_schools(school_dn) @servers = @servers.select do |server| schools_dedicated_to = Array(server.school_dns) # If schools attribute is empty server will serve any school # TODO: dn string comparison!! schools_dedicated_to.empty? || schools_dedicated_to.include?(school_dn.downcase) end end |
- (Object) filter_by_school(school_dn)
get only those servers that are dedicated to this school
59 60 61 62 63 64 |
# File 'resources/ltsp_servers.rb', line 59 def filter_by_school(school_dn) @servers = @servers.select do |server| # TODO: dn string comparison!! Array(server.school_dns).include?(school_dn.downcase) end end |
- (Object) filter_by_server(server_dn)
client can be limited to specific server
67 68 69 70 71 |
# File 'resources/ltsp_servers.rb', line 67 def filter_by_server(server_dn) @servers = @servers.select do |server| server["dn"] == server_dn end end |
- (Object) filter_has_state
42 43 44 45 46 |
# File 'resources/ltsp_servers.rb', line 42 def filter_has_state @servers = @servers.select do |server| server.state end end |
- (Object) filter_old
filter out servers that have not posted their load under MAX_AGE. ie. assume them being offline
30 31 32 33 34 |
# File 'resources/ltsp_servers.rb', line 30 def filter_old @servers = @servers.select do |server| Time.now.to_i - server.state["updated"] < MAX_AGE end end |
- (Object) first
20 21 22 |
# File 'resources/ltsp_servers.rb', line 20 def first @servers.first end |
- (Object) safe_apply(method, *args)
Apply method of this class to @servers but revert it if it goes to empty
80 81 82 83 84 85 86 87 88 |
# File 'resources/ltsp_servers.rb', line 80 def safe_apply(method, *args) prev = @servers send(method, *args) if @servers.empty? @servers = prev else @servers end end |
- (Object) sort_by_load
73 74 75 76 77 |
# File 'resources/ltsp_servers.rb', line 73 def sort_by_load @servers = @servers.sort do |a, b| a["state"]["load_avg"] <=> b["state"]["load_avg"] end end |
- (Object) to_a
16 17 18 |
# File 'resources/ltsp_servers.rb', line 16 def to_a @servers.to_a end |