Module: Salus::BaseCliUtils

Includes:
Logging
Included in:
CLI, ZabbixCli
Defined in:
lib/salus/cli/baseutils.rb

Constant Summary collapse

SALUS_STATE_FILE =
"salus.state.yml"
SALUS_FILE =
"Salusfile"
SALUS_GLOB =
"*.salus"

Instance Method Summary collapse

Methods included from Logging

#log

Instance Method Details

#get_files(options = {}) ⇒ Object



73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# 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 = {}) ⇒ Object



67
68
69
70
71
# 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) ⇒ Object



34
35
36
37
38
39
40
41
42
43
# 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) ⇒ Object



45
46
47
48
49
50
51
52
53
54
# 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) ⇒ Object



8
9
10
11
12
13
14
15
16
# 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) ⇒ Object



56
57
58
59
60
61
62
63
64
65
# 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) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 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