module Kitchen::Salt::States
Private Instance Methods
prepare_formula(path, formula)
click to toggle source
# File lib/kitchen-salt/states.rb, line 74 def prepare_formula(path, formula) info("Preparing formula: #{formula} from #{path}") debug("Using config #{config}") formula_dir = File.join(sandbox_path, config[:salt_file_root], formula) FileUtils.mkdir_p(formula_dir) cp_r_with_filter(File.join(path, formula), formula_dir, config[:salt_copy_filter]) # copy across the _modules etc directories for python implementation %w(_modules _states _grains _renderers _returners _runners _utils).each do |extrapath| prepare_formula_dir(path, extrapath) end end
prepare_formula_dir(path, subdir)
click to toggle source
# File lib/kitchen-salt/states.rb, line 61 def prepare_formula_dir(path, subdir) src = File.join(path, subdir) if File.directory?(src) debug("prepare_formula_dir: #{src} exists, copying..") subdir_path = File.join(sandbox_path, config[:salt_file_root], subdir) FileUtils.mkdir_p(subdir_path) cp_r_with_filter(src, subdir_path, config[:salt_copy_filter]) else debug("prepare_formula_dir: #{src} doesn't exist, skipping.") end end
prepare_remote_states()
click to toggle source
# File lib/kitchen-salt/states.rb, line 113 def prepare_remote_states info('Preparing remote states') remoteconf = config[:remote_states] if remoteconf[:repo] == 'git' debug("Cloning #{remoteconf[:name]}") require 'git' repo = Git.clone(remoteconf[:name], File.join(sandbox_path, config[:salt_file_root]), opts={:branch => remoteconf[:branch]}) end if remoteconf[:testingdir] dest = File.join(sandbox_path, remoteconf[:testingdir]) FileUtils.mkdir_p(dest) cp_r_with_filter(config[:kitchen_root], dest, config[:salt_copy_filter]) end end
prepare_state_collection()
click to toggle source
# File lib/kitchen-salt/states.rb, line 88 def prepare_state_collection info('Preparing state collection') collection_name = config[:collection_name] formula = config[:formula] if collection_name.nil? && formula.nil? info('neither collection_name or formula have been set, assuming this is a pre-built collection') collection_name = '' elsif collection_name.nil? collection_name = formula end if config[:local_salt_root].nil? states_location = config[:kitchen_root] if config[:state_collection] states_location = File.join(states_location, config[:state_collection]) end else states_location = File.join(config[:local_salt_root], 'salt') end collection_dir = File.join(sandbox_path, config[:salt_file_root], collection_name) FileUtils.mkdir_p(collection_dir) cp_r_with_filter(states_location, collection_dir, config[:salt_copy_filter]) end
prepare_state_top()
click to toggle source
# File lib/kitchen-salt/states.rb, line 6 def prepare_state_top info('Preparing state_top') sandbox_state_top_path = File.join(sandbox_path, config[:salt_state_top]) if config[:state_top_from_file] == false # use the top.sls embedded in .kitchen.yml # we get a hash with all the keys converted to symbols, salt doesn't like this # to convert all the keys back to strings again state_top_content = unsymbolize(config[:state_top]).to_yaml # .to_yaml will produce ! '*' for a key, Salt doesn't like this either state_top_content.gsub!(/(!\s'\*')/, "'*'") else # load a top.sls from disk if config[:local_salt_root].nil? top_file = 'top.sls' unless config[:state_collection].nil? top_file = File.join(config[:state_collection], top_file) end else top_file = File.join(config[:local_salt_root], 'salt/top.sls') end state_top_content = File.read(top_file) end write_raw_file(sandbox_state_top_path, state_top_content) end
prepare_states()
click to toggle source
# File lib/kitchen-salt/states.rb, line 35 def prepare_states if config[:state_collection] || config[:is_file_root] || !config[:local_salt_root].nil? prepare_state_collection elsif config[:remote_states] prepare_remote_states else prepare_formula config[:kitchen_root], config[:formula] prepare_vendor_states end end
prepare_vendor_states()
click to toggle source
# File lib/kitchen-salt/states.rb, line 46 def prepare_vendor_states vendor_path = config[:vendor_path] unless vendor_path.nil? if Pathname.new(vendor_path).exist? Dir[File.join(vendor_path, '*')].each do |d| prepare_formula vendor_path, File.basename(d) end else # :vendor_path was set, but not valid raise UserError, "kitchen-salt: Invalid vendor_path set: #{vendor_path}" end end end