Class: Kitchen::DataMunger
- Inherits:
-
Object
- Object
- Kitchen::DataMunger
- 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.
If you are squeamish or faint of heart, then you might want to skip this class. Just remember, you were warned. And if you made it this far, be sure to tweet at @fnichol and let him know your fear factor level.
Instance Method Summary collapse
-
#driver_data_for(suite, platform) ⇒ Hash
Generate a new Hash of configuration data that can be used to construct a new Driver object.
-
#initialize(data, kitchen_config = {}) ⇒ DataMunger
constructor
Constructs a new DataMunger object.
-
#lifecycle_hooks_data_for(suite, platform) ⇒ Hash
Generate a new Hash of configuration data that can be used to construct a new LifecycleHooks object.
-
#platform_data ⇒ Array<Hash>
Returns an Array of platform Hashes.
-
#provisioner_data_for(suite, platform) ⇒ Hash
Generate a new Hash of configuration data that can be used to construct a new Provisioner object.
-
#suite_data ⇒ Array<Hash>
Returns an Array of suite Hashes.
-
#transport_data_for(suite, platform) ⇒ Hash
Generate a new Hash of configuration data that can be used to construct a new Transport object.
-
#verifier_data_for(suite, platform) ⇒ Hash
Generate a new Hash of configuration data that can be used to construct a new Verifier object.
Constructor Details
#initialize(data, kitchen_config = {}) ⇒ DataMunger
Constructs a new DataMunger object.
38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/kitchen/data_munger.rb', line 38 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! convert_legacy_busser_format! convert_legacy_driver_http_proxy_format! move_chef_data_to_provisioner! convert_legacy_pre_create_command! end |
Instance Method Details
#driver_data_for(suite, platform) ⇒ Hash
Generate a new Hash of configuration data that can be used to construct a new Driver object.
57 58 59 60 61 62 63 |
# File 'lib/kitchen/data_munger.rb', line 57 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 |
#lifecycle_hooks_data_for(suite, platform) ⇒ Hash
Generate a new Hash of configuration data that can be used to construct a new LifecycleHooks object.
72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/kitchen/data_munger.rb', line 72 def lifecycle_hooks_data_for(suite, platform) merged_data_for(:lifecycle, suite, platform).tap do |lhdata| lhdata.each_key do |k| combine_arrays!(lhdata, k, :common, :platform, :suite) end set_kitchen_config_at!(lhdata, :kitchen_root) set_kitchen_config_at!(lhdata, :test_base_path) set_kitchen_config_at!(lhdata, :log_level) set_kitchen_config_at!(lhdata, :debug) end end |
#platform_data ⇒ Array<Hash>
Returns an Array of platform Hashes.
87 88 89 |
# File 'lib/kitchen/data_munger.rb', line 87 def platform_data data.fetch(:platforms, []) end |
#provisioner_data_for(suite, platform) ⇒ Hash
Generate a new Hash of configuration data that can be used to construct a new Provisioner object.
98 99 100 101 102 103 104 105 |
# File 'lib/kitchen/data_munger.rb', line 98 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, :debug) combine_arrays!(pdata, :run_list, :platform, :suite) end end |
#suite_data ⇒ Array<Hash>
Returns an Array of suite Hashes.
110 111 112 |
# File 'lib/kitchen/data_munger.rb', line 110 def suite_data data.fetch(:suites, []) end |
#transport_data_for(suite, platform) ⇒ Hash
Generate a new Hash of configuration data that can be used to construct a new Transport object.
121 122 123 124 125 126 127 |
# File 'lib/kitchen/data_munger.rb', line 121 def transport_data_for(suite, platform) merged_data_for(:transport, suite, platform).tap do |tdata| set_kitchen_config_at!(tdata, :kitchen_root) set_kitchen_config_at!(tdata, :test_base_path) set_kitchen_config_at!(tdata, :log_level) end end |
#verifier_data_for(suite, platform) ⇒ Hash
Generate a new Hash of configuration data that can be used to construct a new Verifier object.
136 137 138 139 140 141 142 143 |
# File 'lib/kitchen/data_munger.rb', line 136 def verifier_data_for(suite, platform) merged_data_for(:verifier, suite, platform).tap do |vdata| set_kitchen_config_at!(vdata, :kitchen_root) set_kitchen_config_at!(vdata, :test_base_path) set_kitchen_config_at!(vdata, :log_level) set_kitchen_config_at!(vdata, :debug) end end |