Class: TrafficControl::Airport

Inherits:
Object
  • Object
show all
Defined in:
lib/traffic_control/airport.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(host, community = "public") ⇒ Airport

Returns a new instance of Airport.



8
9
10
11
12
13
# File 'lib/traffic_control/airport.rb', line 8

def initialize(host, community = "public")
  @host = host
  @community = community
  @settings = {}
  @clients = []
end

Instance Attribute Details

#clientsObject

Returns the value of attribute clients.



6
7
8
# File 'lib/traffic_control/airport.rb', line 6

def clients
  @clients
end

#hostObject

Returns the value of attribute host.



6
7
8
# File 'lib/traffic_control/airport.rb', line 6

def host
  @host
end

#settingsObject

Returns the value of attribute settings.



6
7
8
# File 'lib/traffic_control/airport.rb', line 6

def settings
  @settings
end

Instance Method Details

#load_data!Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/traffic_control/airport.rb', line 15

def load_data!
  client_data = {}
  
  snmp_results = snmp_parser(snmp_output(@host, @community))
  snmp_results.each do |setting|
    if setting[1] == "0"
      self.settings[setting[0]] = setting[2]
    else
      client_data[setting[1]] ||= []
      client_data[setting.delete(setting[1])] << setting
    end      
  end

  client_data.each { |key, value| self.clients << TrafficControl::Client.new(Hash[value])  }
end

#snmp_output(host, community) ⇒ Object



31
32
33
34
35
36
37
# File 'lib/traffic_control/airport.rb', line 31

def snmp_output(host, community)
  snmpcmd = "#{SNMPBIN} -m AIRPORT-BASESTATION-3-MIB -Osq -v 2c "
  snmpcmd += "-c \"#{community}\" \"#{host}\" "
  snmpcmd += "SNMPv2-SMI::enterprises.apple.airport"
  
  `#{snmpcmd}`
end

#snmp_parser(output) ⇒ Object



39
40
41
42
43
44
# File 'lib/traffic_control/airport.rb', line 39

def snmp_parser(output)
  output.
    chomp
    .split("\n")
    .collect{ |v| v.split(/\.(.+)/).collect{ |t| t.split(" ") }.flatten }
end