module MiGA::Daemon::Base

Public Instance Methods

bypass_maintenance?() click to toggle source

Should the daemon ignore regular maintenance steps?

# File lib/miga/daemon/base.rb, line 83
def bypass_maintenance?
  !!runopts(:bypass_maintenance)
end
latency() click to toggle source

Returns Integer indicating the number of seconds to sleep between checks

# File lib/miga/daemon/base.rb, line 38
def latency
  runopts(:latency)
end
logfh() click to toggle source

Writing file handler (IO) to the log file

# File lib/miga/daemon/base.rb, line 100
def logfh
  @logfh ||= nil
  return $stderr if show_log?
  return @logfh if @logfh && !@logfh.closed?

  @logfh = File.open(output_file, 'w')
end
maxjobs() click to toggle source

Returns Integer indicating the maximum number of concurrent jobs to run

# File lib/miga/daemon/base.rb, line 44
def maxjobs
  runopts(:maxjobs)
end
nodelist() click to toggle source

Returns the path to the list of execution hostnames

# File lib/miga/daemon/base.rb, line 50
def nodelist
  runopts(:nodelist)
end
ppn(what = :dataset) click to toggle source

Returns Integer indicating the number of CPUs per job, in jobs for what. See also runopts_for

# File lib/miga/daemon/base.rb, line 70
def ppn(what = :dataset)
  runopts_for(:ppn, what)
end
runopts(k, v = nil, force = false) click to toggle source

Set/get options, where k is the Symbol of the option and v is the value (or nil to use as getter). Skips consistency tests if force. Returns new value.

# File lib/miga/daemon/base.rb, line 11
def runopts(k, v = nil, force = false)
  k = k.to_sym
  unless v.nil?
    case k
    when :latency, :maxjobs, :ppn, :ppn_project, :format_version, :verbosity,
         :skip_maintenance
      v = v.to_i
      if !force && v == 0 && !%[verbosity skip_maintenance].include?(k)
        raise "Daemon's #{k} cannot be set to zero"
      end
    when :shutdown_when_done, :show_log, :bypass_maintenance
      v = !!v
    when :nodelist
      if v =~ /^\$/
        vv = ENV[v.sub('$', '')] or raise "Unset environment variable: #{v}"
        v = vv
      end
      say "Reading node list: #{v}"
      v = File.readlines(v).map(&:chomp)
    end
    @runopts[k] = v
  end
  @runopts[k]
end
runopts_for(opt, what) click to toggle source

Returns the running option opt in jobs for what. what can be :dataset or :projects

# File lib/miga/daemon/base.rb, line 63
def runopts_for(opt, what)
  runopts(:"#{opt}_#{what}") || runopts(opt)
end
show_log!() click to toggle source

Display log instead of the progress summary

# File lib/miga/daemon/base.rb, line 110
def show_log!
  @runopts[:show_log] = true
end
show_log?() click to toggle source

Display log instead of the progress summary?

# File lib/miga/daemon/base.rb, line 122
def show_log?
  @runopts[:show_log] ||= false
end
show_summary!() click to toggle source

Display progress summary instead of the log

# File lib/miga/daemon/base.rb, line 116
def show_summary!
  @runopts[:show_log] = false
end
shutdown_when_done?() click to toggle source

Returns Boolean indicating if the daemon should shutdown when processing is complete

# File lib/miga/daemon/base.rb, line 77
def shutdown_when_done?
  !!runopts(:shutdown_when_done)
end
skip_maintenance() click to toggle source

Returns the number of times maintenance should be skipped before running

# File lib/miga/daemon/base.rb, line 56
def skip_maintenance
  runopts(:skip_maintenance) || 0
end
verbosity() click to toggle source

Returns the level of verbosity for the daemon as an Integer, or 1 if unset. Verbosity levels are: 0: No output 1: General daemon and job information 2: Same, and indicate when each task is performed (even if nothing happens) 3: Same, and indicate when each loop begins and ends

# File lib/miga/daemon/base.rb, line 94
def verbosity
  runopts(:verbosity) || 1
end