class Netuitived
Provides facilities for running Netuitived
Attributes
server_uri[R]
Public Class Methods
front_object()
click to toggle source
The DRb front object
@return [NetuitivedServer] The NetuitivedServer front object
# File lib/netuitived.rb, line 31 def front_object @front_object ||= new_front_object end
interactively_check_config()
click to toggle source
Checks that config values are provided and prompts for them if not
# File lib/netuitived.rb, line 42 def interactively_check_config gem_root = File.expand_path('../..', __FILE__) data = YAML.load_file("#{gem_root}/config/agent.yml") written = false element_name = ENV['NETUITIVED_ELEMENT_NAME'] || data['elementName'] || '' if element_name == 'elementName' || element_name == '' puts 'please enter an element name: ' element_name = STDIN.gets.chomp data['elementName'] = element_name written = true end api_id = ENV['NETUITIVED_API_ID'] || data['apiId'] || '' if api_id == 'apiId' || api_id == '' puts 'please enter an api key: ' api_id = STDIN.gets.chomp data['apiId'] = api_id written = true end return unless written File.open("#{gem_root}/config/agent.yml", 'w') { |f| f.write data.to_yaml } end
new_front_object()
click to toggle source
# File lib/netuitived.rb, line 35 def new_front_object apiEmissary = NetuitiveD::APIEmissary.new NetuitiveD::NetuitivedServer.new(NetuitiveD::MetricAggregator.new(apiEmissary), NetuitiveD::EventHandler.new(apiEmissary)) end
start(foreground = false)
click to toggle source
Starts netuitived
@param foreground [true, false] If true, run netuitived in the foreground
# File lib/netuitived.rb, line 74 def start(foreground = false) # Maintain the initial setup behavior interactively_check_config # Load the config from disk into ConfigManager load_config # Stop the service if it's already running stop(true) # Create a proc to run netuitived runner = proc do NetuitiveD::NetuitiveLogger.log.debug 'starting scheduler' NetuitiveD::Scheduler.startSchedule NetuitiveD::NetuitiveLogger.log.debug 'starting drb service' begin DRb.start_service(server_uri, front_object) DRb.thread.join rescue => e NetuitiveD::NetuitiveLogger.log.error "drb error: #{e.message} backtrace: #{e.backtrace}" end end if foreground puts 'netuitived running' runner.call else fork(&runner) puts 'netuitived started' end end
stop(suppress_not_running_message = false)
click to toggle source
Stops netuitived if it's running
@param suppress_not_running_message [true, false] suppresses the “netuitived isn't running” message
# File lib/netuitived.rb, line 110 def stop(suppress_not_running_message = false) load_config DRb.start_service begin DRbObject.new_with_uri(@server_uri).stopServer puts 'netuitived stopped' rescue puts "netuitived isn't running" unless suppress_not_running_message end end
Private Class Methods
load_config()
click to toggle source
Loads the configuration if necessary
# File lib/netuitived.rb, line 127 def load_config unless @config_manager_setup NetuitiveD::ConfigManager.load_config NetuitiveD::NetuitiveLogger.setup NetuitiveD::ConfigManager.read_config end @config_manager_setup = true @server_uri ||= "druby://#{NetuitiveD::ConfigManager.netuitivedAddr}:#{NetuitiveD::ConfigManager.netuitivedPort}".freeze end