class PoiseBoiler::Helpers::Kitchen::PolicyProvisioner
Public Class Methods
name()
click to toggle source
Override the default value from the base class. default_config :policyfile, '.kitchen/poise_policy.rb' expand_path_for :policyfile
# File lib/poise_boiler/helpers/kitchen/policy_provisioner.rb, line 42 def self.name 'PoisePolicyfileZero' end
Public Instance Methods
cleanup_sandbox()
click to toggle source
Calls superclass method
# File lib/poise_boiler/helpers/kitchen/policy_provisioner.rb, line 68 def cleanup_sandbox super if @sandbox_path end
create_sandbox()
click to toggle source
Run our policy generation first.
Calls superclass method
# File lib/poise_boiler/helpers/kitchen/policy_provisioner.rb, line 47 def create_sandbox policy_base = File.join(config[:kitchen_root], '.kitchen', 'poise_policy') # Copy all my halite-y stuff to a folder. This should probably use a # temp dir instead. FileUtils.rm_rf(policy_base) convert_halite_cookbooks(policy_base) unless poise_helper_instance.options['no_gem'] copy_test_cookbook(policy_base) copy_test_cookbooks(policy_base) # Generate a modified policy to use the cookbooks we just made. policy_path = generate_poise_policy(policy_base) # Compile that policy because the base provider doesn't do that. compile_poise_policy(policy_path) # Tell the base provider code to use our new policy instead. if $use_policyfile_zero config[:policyfile] = "#{config[:kitchen_root]}/#{policy_path}" else config[:policyfile_path] = policy_path end super end
Private Instance Methods
compile_poise_policy(policy_path)
click to toggle source
# File lib/poise_boiler/helpers/kitchen/policy_provisioner.rb, line 83 def compile_poise_policy(policy_path) compile_mode = if File.exist?(policy_path.gsub(/\.rb/, '.lock.json')) 'update' else 'install' end info("Compiling policy (#{compile_mode})") compile_cmd = Mixlib::ShellOut.new(['chef', compile_mode, policy_path]) compile_cmd.run_command compile_cmd.error! end
generate_poise_policy(base)
click to toggle source
# File lib/poise_boiler/helpers/kitchen/policy_provisioner.rb, line 74 def generate_poise_policy(base) info("Preparing modified policy") original_policy = IO.read(config[:policyfile]) new_policy = "default_source :chef_repo, #{base.inspect}\n#{original_policy}" policy_path = ".kitchen/poise_policy_#{instance.name}.rb" IO.write("#{config[:kitchen_root]}/#{policy_path}", new_policy) policy_path end