# File lib/genome-lib/config.rb, line 6
  def initialize(conf_file="/etc/genome/genome.conf")
    @conf_file = conf_file
    default_conf = {
      # The keys must be strings!
      "guest_report_interval" => 5,

      "genomed_logfile" => "/var/log/genomed.log",
      "genomed_pidfile" => "/var/run/genomed.pid",
      "genomed_port" => 8106,
      "genomed_bind_address" => "0.0.0.0",
      "genomed_nodes_dir" => "/etc/genome/nodes",

      "cloudhost_logfile" => "/var/log/cloudhost.log",
      "cloudhost_pidfile" => "/var/run/cloudhost.pid",
      "cloudhost_port" => 8108,
      "cloudhost_bind_address" => "0.0.0.0",
      "cloudhost_db" => ":memory:",
      "cloudhost_eviction_threshold" => 120,
      "cloudhost_eviction_thread_freq" => 5,
      "cloudhost_watcher_thread_freq" => 5,
      "cloudhost_reporter_thread_freq" => 30,

      "cloudmaster_logfile" => "/var/log/cloudmasterd.log",
      "cloudmaster_pidfile" => "/var/run/cloudmasterd.pid",
      "cloudmaster_port" => 8107,
      "cloudmaster_bind_address" => "0.0.0.0",
      "cloudmaster_eviction_threshold" => 120,
      "cloudmaster_eviction_thread_freq" => 5,
    }

    File.exist?(@conf_file) ? conf = YAML.load(File.read(@conf_file)) : conf = {}

    raise "Invalid YAML at #{@conf_file}" if conf == false

    # The blank example config file that is installed with the genome RPM 
    # returns nil.  That's to be expected since it's blank.  This handles that
    # case.
    @conf = conf ? default_conf.merge(conf) : default_conf
  end