#
# Monitor status of system
# Currently only checks puppet
#

require 'time'

def Monitor.system(previous_status)
  name=:puppet
  status = {}
  status[name] = {
    command: 'service puppet status',
  }

  begin
    ENV['LC_ALL'] = 'en_US.UTF-8'
    ENV['LANG'] = 'en_US.UTF-8'
    ENV['LANGUAGE'] = 'en_US.UTF-8'

    puppet = `service puppet status`.force_encoding('utf-8').strip

    if puppet.include? 'Active: active (running)'
      status[name].merge! level: 'success', data: puppet.split("\n")
    elsif puppet.include? '* agent is running'
      status[name].merge! level: 'success', data: puppet.split("\n")
    else
      status[name].merge! level: 'warning', data: puppet.split("\n")
    end

  rescue Exception => e
    status[name] = {
      level: 'danger',
      data: {
        exception: {
          level: 'danger',
          text: e.inspect,
          data: e.backtrace
        }
      }
    }
  end

  # Are we the master node?
  begin
    require_relative '../../whimsy'
    master = Whimsy.master?
    rescue LoadError, StandardError => e
      master = e.inspect
  end
  name = :master
  status[name] = {command: 'Whimsy.master?'}
  # TODO change the false level to warning or danger at some point?
  # N.B. need to compare with true as master may be a string, i.e. 'truthy'
  status[name] = {level: master == true ? 'success' : 'warning',
                  data: master.to_s}

  {data: status}
end

# for debugging purposes
if __FILE__ == $0
  require_relative 'unit_test'
  runtest('system') # must agree with method name above
end
