module Salus::BaseCliUtils

Constants

SALUS_FILE
SALUS_GLOB
SALUS_STATE_FILE

Public Instance Methods

get_files(options={}) click to toggle source
# File lib/salus/cli/baseutils.rb, line 73
def get_files(options={})
  if options.key?(:file)
    ret = []
    options[:file].each do |file|
      next unless File.exists?(file)
      if File.directory?(file)
        ret += Dir.glob(File.join(file, SALUS_GLOB)).sort
      else
        ret.push(file)
      end
    end
    ret
  elsif File.exists?(SALUS_FILE)
    [SALUS_FILE]
  else
    Dir.glob(SALUS_GLOB).sort
  end
end
get_state_file(options={}) click to toggle source
# File lib/salus/cli/baseutils.rb, line 67
def get_state_file(options={})
  options.fetch(:state,
    Salus.var(:state_file,
      File.join(Dir.pwd, SALUS_STATE_FILE)))
end
load_files(files) click to toggle source
# File lib/salus/cli/baseutils.rb, line 34
def load_files(files)
  raise "No metric definition files found" if files.empty?
  files.each do |file|
    begin
      Salus.load(file)
    rescue Exception => e
      log ERROR, "Failed to load #{file}: " + e.message
    end
  end
end
load_state(file) click to toggle source
# File lib/salus/cli/baseutils.rb, line 45
def load_state(file)
  return unless file
  Salus.load_state do
    begin
      YAML.load(read_file(file)) if File.exists?(file)
    rescue Exception => e
      log ERROR, "Failed to load state #{file}: " + e.message
    end
  end
end
read_file(file) click to toggle source
# File lib/salus/cli/baseutils.rb, line 8
def read_file(file)
  ret = nil
  File.open(file, "r") do |f|
    f.flock(File::LOCK_SH)
    ret = f.read
    f.flock(File::LOCK_UN)
  end
  ret
end
save_state(file) click to toggle source
# File lib/salus/cli/baseutils.rb, line 56
def save_state(file)
  return unless file
  Salus.save_state do |data|
    begin
      write_file(file, data.to_yaml)
    rescue Exception => e
      log ERROR, "Failed to save state #{file}: " + e.message
    end
  end
end
write_file(file, data) click to toggle source
# File lib/salus/cli/baseutils.rb, line 18
def write_file(file, data)
  ret = nil
  File.open(file, File::RDWR|File::CREAT) do |f|
    f.flock(File::LOCK_EX)
    begin
      f.rewind
      ret = f.write(data)
      f.flush
      f.truncate(f.pos)
    ensure
      f.flock(File::LOCK_UN)
    end
  end
  ret
end