class Tengine::Resource::Config::Resource

Public Class Methods

default_hash() click to toggle source
# File lib/tengine/resource/config/resource.rb, line 12
def default_hash
  new.to_hash
end
Also aliased as: skelton_hash
new(hash_or_filepath = nil) click to toggle source
# File lib/tengine/resource/config/resource.rb, line 33
def initialize(hash_or_filepath = nil)
  build if respond_to?(:build)
  case hash_or_filepath
  when Hash then
    if config = hash_or_filepath[:config]
      load_file(config)
    else
      load(hash_or_filepath)
    end
  when String then load_file(hash_or_filepath)
  end
end
parse(args) click to toggle source
# File lib/tengine/resource/config/resource.rb, line 25
def parse(args)
  config = new
  config.parse!(args)
  config
end
parse_to_hash(args) click to toggle source
# File lib/tengine/resource/config/resource.rb, line 17
def parse_to_hash(args)
  config = new
  config.parse!(args)
  result = new
  result.config = config.config
  result.to_hash
end
skelton_hash()
Alias for: default_hash

Public Instance Methods

build() click to toggle source
# File lib/tengine/resource/config/resource.rb, line 53
  def build
    banner <<EOS
Usage: tengine_resource_watchd [-k action] [-f path_to_config]
         [-o mq_conn_host] [-p mq_conn_port] [-u mq_conn_user]
         [-s mq_conn_pass] [-e mq_exchange_name] [-q mq_queue_name]
EOS

    field(:action, "start|stop|force-stop|status", :type => :string, :default => "start")
    load_config(:config, "path/to/config_file", :type => :string)

    add(:process, Tengine::Resource::Config::Resource::Process)
    add(:watchd,  Tengine::Resource::Config::Resource::Watchd)
    field(:db, "settings to connect to db", :type => :hash, :default => {
        'host' => 'localhost',
        'port' => 27017,
        'username' => nil,
        'password' => nil,
        'database' => 'tengine_production',
      })

    group(:event_queue) do
      add(:connection, Tengine::Core::Config::Core::AmqpConnection)
      add(:exchange  , Tengine::Support::Config::Amqp::Exchange, :defaults => {:name => 'tengine_event_exchange'})
      add(:queue     , Tengine::Support::Config::Amqp::Queue   , :defaults => {:name => 'tengine_event_queue'})
    end

    add(:log_common, Tengine::Support::Config::Logger,
      :defaults => {
        :rotation      => 3          ,
        :rotation_size => 1024 * 1024,
        :level         => 'info'     ,
      })
    add(:application_log, Tengine::Resource::Config::Resource::LoggerConfig,
      :parameters => {:logger_name => "application"},
      :dependencies => { :process_config => :process, :log_common => :log_common,}){
      self.formatter = lambda{|level, t, prog, msg| "#{t.iso8601} #{level} #{@process_identifier} #{msg}\n"}
    }
    add(:process_stdout_log, Tengine::Resource::Config::Resource::LoggerConfig,
      :parameters => {:logger_name => "#{File.basename($PROGRAM_NAME)}_#{::Process.pid}_stdout"},
      :dependencies => { :process_config => :process, :log_common => :log_common,}){
      self.formatter = lambda{|level, t, prog, msg| "#{t.iso8601} STDOUT #{@process_identifier} #{msg}\n"}
    }
    add(:process_stderr_log, Tengine::Resource::Config::Resource::LoggerConfig,
      :parameters => {:logger_name => "#{File.basename($PROGRAM_NAME)}_#{::Process.pid}_stderr"},
      :dependencies => { :process_config => :process, :log_common => :log_common,},
      :defaults => {
        :output => proc{ process_config.daemon ? "./log/#{logger_name}.log" : "STDERR" }}){
      self.formatter = lambda{|level, t, prog, msg| "#{t.iso8601} STDERR #{@process_identifier} #{msg}\n"}
    }

    group(:heartbeat, :hidden => true) do
      add(:resourcew, Tengine::Core::Config::Core::Heartbeat)
    end

    separator("\nGeneral:")
    field(:verbose, "Show detail to this command", :type => :boolean)
    __action__(:version, "show version"){ STDOUT.puts Tengine::Resource.version.to_s; exit }
    __action__(:dump_skelton, "dump skelton of config"){ STDOUT.puts YAML.dump(root.to_hash); exit }
    __action__(:help   , "show this help message"){ STDOUT.puts option_parser.help; exit }

    mapping({
        [:action] => :k,
        [:config] => :f,
        [:process, :daemon] => :D,

        [:event_queue,  :connection, :host] => :o,
        [:event_queue,  :connection, :port] => :p,
        [:event_queue,  :connection, :user] => :u,
        [:event_queue,  :connection, :pass] => :s,
        [:event_queue,  :exchange  , :name] => :e,
        [:event_queue,  :queue     , :name] => :q,

        [:verbose] => :V,
        [:version] => :v,
        [:help] => :h
      })
  end
load_file(filepath) click to toggle source
Calls superclass method
# File lib/tengine/resource/config/resource.rb, line 46
def load_file(filepath)
  super
rescue Exception => e
  raise Tengine::Core::ConfigError, "[#{e.class.name}] #{e.message} when loading configuration file: #{filepath}."
end
setup_loggers() click to toggle source
# File lib/tengine/resource/config/resource.rb, line 179
def setup_loggers
  Tengine.logger = application_log.new_logger
  Tengine::Core.stdout_logger = process_stdout_log.new_logger
  Tengine::Core.stderr_logger = process_stderr_log.new_logger

  Tengine::Core.stdout_logger.info("#{self.class.name}#setup_loggers complete")
rescue Exception
  Tengine::Core.stderr_logger.info("#{self.class.name}#setup_loggers failure")
  raise
end