Class: PuavoRest::ServerFilter

Inherits:
Object
  • Object
show all
Defined in:
resources/ltsp_servers.rb

Constant Summary

MAX_AGE =

How old servers we report as available

60 * 2

Instance Method Summary (collapse)

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?

Returns:

  • (Boolean)


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