Class: Kitchen::DataMunger

Inherits:
Object
  • Object
show all
Defined in:
lib/kitchen/data_munger.rb

Overview

Class to handle recursive merging of configuration between platforms, suites, and common data.

This object will mutate the data Hash passed into its constructor and so should not be reused or shared across threads.

Author:

Instance Method Summary collapse

Constructor Details

#initialize(data, kitchen_config = {}) ⇒ DataMunger

Returns a new instance of DataMunger.



32
33
34
35
36
37
38
39
# File 'lib/kitchen/data_munger.rb', line 32

def initialize(data, kitchen_config = {})
  @data = data
  @kitchen_config = kitchen_config
  convert_legacy_driver_format!
  convert_legacy_chef_paths_format!
  convert_legacy_require_chef_omnibus_format!
  move_chef_data_to_provisioner!
end

Instance Method Details

#busser_data_for(suite, platform) ⇒ Object



41
42
43
44
45
46
47
# File 'lib/kitchen/data_munger.rb', line 41

def busser_data_for(suite, platform)
  merged_data_for(:busser, suite, platform, :version).tap do |bdata|
    set_kitchen_config_at!(bdata, :kitchen_root)
    set_kitchen_config_at!(bdata, :test_base_path)
    set_kitchen_config_at!(bdata, :log_level)
  end
end

#driver_data_for(suite, platform) ⇒ Object



49
50
51
52
53
54
55
# File 'lib/kitchen/data_munger.rb', line 49

def driver_data_for(suite, platform)
  merged_data_for(:driver, suite, platform).tap do |ddata|
    set_kitchen_config_at!(ddata, :kitchen_root)
    set_kitchen_config_at!(ddata, :test_base_path)
    set_kitchen_config_at!(ddata, :log_level)
  end
end

#platform_dataObject



57
58
59
# File 'lib/kitchen/data_munger.rb', line 57

def platform_data
  data.fetch(:platforms, [])
end

#provisioner_data_for(suite, platform) ⇒ Object



61
62
63
64
65
66
67
68
# File 'lib/kitchen/data_munger.rb', line 61

def provisioner_data_for(suite, platform)
  merged_data_for(:provisioner, suite, platform).tap do |pdata|
    set_kitchen_config_at!(pdata, :kitchen_root)
    set_kitchen_config_at!(pdata, :test_base_path)
    set_kitchen_config_at!(pdata, :log_level)
    combine_arrays!(pdata, :run_list, :platform, :suite)
  end
end

#suite_dataObject



70
71
72
# File 'lib/kitchen/data_munger.rb', line 70

def suite_data
  data.fetch(:suites, [])
end