class Pione::Log::DomainLog

DomainLog is a domain log that records domain inputs and parameters.

Constants

FILENAME

Attributes

domain_location[R]

@return [Location::BasicLocation]

domain's location
record[R]

@return [Hash{String => String}]

record table

Public Class Methods

new(handler) click to toggle source

@param handler [RuleHandler::BasicHandler]

rule handler
# File lib/pione/log/domain-log.rb, line 21
def initialize(handler)
  @domain_location = handler.domain_location
  @record = {
    :system_name => Uname.sysname,
    :system_nodename => Uname.nodename,
    :system_machine => Uname.machine,
    :system_version => Uname.version,
    :system_release => Uname.release,
    :params => handler.param_set.textize,
    :inputs => inputs_string(handler.inputs),
    :domain => handler.domain_id,
    :domain_location => @domain_location.uri.to_s,
    :dry_run => handler.dry_run.to_s
  }
  if handler.respond_to?(:working_directory)
    @record[:working_directory] = handler.working_directory.location.uri.to_s
  end
end

Public Instance Methods

save() click to toggle source

Save domain information file.

@return [void]

# File lib/pione/log/domain-log.rb, line 43
def save
  domain_info_location = @domain_location + FILENAME
  text = "== %s\n\n" % Time.now
  text << @record.map{|key, val| "- %s: %s" % [key,val]}.join("\n")
  text << "\n\n"
  if domain_info_location.exist?
    domain_info_location.append(text)
  else
    domain_info_location.create(text)
  end
end

Private Instance Methods

input_data_string(input, i) click to toggle source

Build a data tuple string.

@param input [TupleSpace::DataTuple]

data tuple

@param i [Integer]

index number
# File lib/pione/log/domain-log.rb, line 79
def input_data_string(input, i)
  i = i.to_s
  sp1 = " "*4
  sp2 = " "*(6+i.size)
  args = [sp1, i, input.name, sp2, input.location.uri, sp2, input.timestamp]
  "%s%s. %s,\n%s%s,\n%s%s" % args
end
inputs_string(inputs) click to toggle source

Build a record string for inputs.

@param inputs [Array<TupleSpace::DataTuple>]

input tuples

@return [String]

a record string
# File lib/pione/log/domain-log.rb, line 63
def inputs_string(inputs)
  "\n%s" % inputs.map.with_index(1) do |input, i|
    if input.kind_of?(Array)
      input.map{|_input| input_data_string(_input, i)}.join("\n")
    else
      input_data_string(input, i)
    end
  end.join("\n")
end