module ItamaeMitsurin::Mitsurin::Base

Constants

RoleLoadError

Public Class Methods

get_node_recipes(node_file) click to toggle source
# File lib/itamae-mitsurin/mitsurin/base.rb, line 67
def get_node_recipes(node_file)
  recipes = []
  JSON.parse(File.read(node_file))['run_list'].each do |recipe|
    if /recipe\[(.+)::(.+)\]/.match?(recipe)
      recipes << { recipe.gsub(/recipe\[(.+)::(.+)\]/, '\1') => recipe.gsub(/recipe\[(.+)::(.+)\]/, '\2') }
    elsif /recipe\[(.+)\]/.match?(recipe)
      recipes << { recipe.gsub(/recipe\[(.+)\]/, '\1') => 'default' }
    elsif /role\[(.+)\]/.match?(recipe)
      recipes << get_role_recipes(recipe.gsub(/role\[(.+)\]/, '\1'))
    end
  end
rescue JSON::ParserError
  raise RoleLoadError, "JSON Parser Faild. - #{node_file}"
rescue Errno::ENOENT
  raise RoleLoadError, "No such node file or directory - #{node_fie}"
else
  recipes
end
get_role_recipes(role) click to toggle source

def get_roles(node_file)

roles = []
JSON.parse(File.read(node_file))['run_list'].each do |role|
  roles << role.gsub(/role\[(.+)\]/, '\1') if /role\[(.+)\]/.match?(role)
end

roles

end

# File lib/itamae-mitsurin/mitsurin/base.rb, line 50
def get_role_recipes(role)
  recipes = []
  JSON.parse(File.read("roles/#{role}.json"))['run_list'].each do |recipe|
    if /recipe\[(.+)::(.+)\]/.match?(recipe)
      recipes << { recipe.gsub(/recipe\[(.+)::(.+)\]/, '\1') => recipe.gsub(/recipe\[(.+)::(.+)\]/, '\2') }
    elsif /recipe\[(.+)\]/.match?(recipe)
      recipes << { recipe.gsub(/recipe\[(.+)\]/, '\1') => 'default' }
    end
  end
rescue JSON::ParserError
  raise RoleLoadError, "JSON Parser Faild. - roles/#{role}.json"
rescue Errno::ENOENT
  raise RoleLoadError, "No such role file or directory - roles/#{role}.json"
else
  recipes
end
handler_logger() click to toggle source
# File lib/itamae-mitsurin/mitsurin/base.rb, line 113
def handler_logger
  default = {"handlers"=>[{"type"=>"json", "path"=>"itamae-log.json"}]}
end
jq(*objs) click to toggle source
# File lib/itamae-mitsurin/mitsurin/base.rb, line 86
def jq(*objs)
  par = nil
  objs.each {|obj| par = JSON.pretty_generate(obj, allow_nan: true, max_nesting: false) }
  par
end
write_tmp_json(filename) { |f| ... } click to toggle source
# File lib/itamae-mitsurin/mitsurin/base.rb, line 102
def write_tmp_json(filename)
  path = Dir.mktmpdir('mitsurin-')
  open("#{path}/#{filename}.json", 'w') do |f|
    f.flock File::LOCK_EX
    yield f
    f.flock File::LOCK_UN
  end

  path
end
write_tmp_nodes(filename) { |f| ... } click to toggle source
# File lib/itamae-mitsurin/mitsurin/base.rb, line 92
def write_tmp_nodes(filename)
  ItamaeMitsurin.logger.info "Output attributes log file to: tmp-nodes/#{filename}.json"

  File.open "tmp-nodes/#{filename}.json", 'w' do |f|
    f.flock File::LOCK_EX
    yield f
    f.flock File::LOCK_UN
  end
end