Class: Edwig::Munin::StopVisitStatus

Inherits:
Plugin
  • Object
show all
Defined in:
lib/edwig/munin/stop_visit_status.rb

Constant Summary collapse

DEPARTURE_STATUS =
%w{onTime early delayed cancelled noReport departed}
ARRIVAL_STATUS =
%w{arrived onTime early delayed cancelled noReport missed notExpected}
UNKNOWN_STATUS =
"unknown"

Instance Attribute Summary

Attributes inherited from Plugin

#referential, #server, #token

Instance Method Summary collapse

Methods inherited from Plugin

create, #env, #run

Instance Method Details

#arrival_key(status) ⇒ Object



53
54
55
# File 'lib/edwig/munin/stop_visit_status.rb', line 53

def arrival_key(status)
  "ArrivalStatus-#{status}"
end

#arrival_keysObject



61
62
63
# File 'lib/edwig/munin/stop_visit_status.rb', line 61

def arrival_keys
  ARRIVAL_STATUS.map { |status| arrival_key status }
end

#configObject



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/edwig/munin/stop_visit_status.rb', line 29

def config
  config = {
    host_name: server,
    graph_title: "Arrivals and Departures by status",
    graph_order: keys.join(' '),
    graph_info: "Represent StopVisits count by Arrival and Departure statuses",
    graph_args: "--base 1000 -l 0",
    graph_vlabel: "count"
  }

  keys.each_with_index do |key, index|
    label = key.gsub('-',' ')
    config["#{key}.label"] = label
    config["#{key}.draw"] = index == 0 ? 'AREA' : 'STACK'
    config["#{key}.info"] = "The number of StopVisits in #{label}"
  end

  config
end

#departure_key(status) ⇒ Object



49
50
51
# File 'lib/edwig/munin/stop_visit_status.rb', line 49

def departure_key(status)
  "DepartureStatus-#{status}"
end

#departure_keysObject



57
58
59
# File 'lib/edwig/munin/stop_visit_status.rb', line 57

def departure_keys
  DEPARTURE_STATUS.map { |status| departure_key status }
end

#keysObject



65
66
67
# File 'lib/edwig/munin/stop_visit_status.rb', line 65

def keys
  @keys ||= (departure_keys + arrival_keys + [departure_key(UNKNOWN_STATUS), arrival_key(UNKNOWN_STATUS)]).sort
end

#valuesObject



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/edwig/munin/stop_visit_status.rb', line 8

def values
  stopVisits = RestClient.get("http://#{server}/#{referential}/stop_visits" , {content_type: :json, :Authorization => "Token token=#{token}"})
  stopVisitsTab = JSON.parse(stopVisits)

  counts = {}
  keys.each { |k| counts[k] = 0 }

  stopVisitsTab.each do |stopVisit|
   departureState = stopVisit["DepartureStatus"]
    departureState = UNKNOWN_STATUS unless DEPARTURE_STATUS.include?(departureState)

   arrivalState = stopVisit["ArrivalStatus"]
    arrivalState = UNKNOWN_STATUS unless ARRIVAL_STATUS.include?(arrivalState)

   counts[departure_key(departureState)] += 1
   counts[arrival_key(arrivalState)] += 1
  end

  counts
end