diff --git a/manifests/inventory.pp b/manifests/inventory.pp new file mode 100644 index 00000000..8d94de2c --- /dev/null +++ b/manifests/inventory.pp @@ -0,0 +1,34 @@ +# == Class: ironic::inventory +# +# Configure the inventory parameters +# +# === Parameters +# +# [*data_backend*] +# (Optional) The storage backend for storing introspection data. +# Defaults to $::os_service_default. +# +# [*swift_data_container*] +# (Optional) The Swift introspection data container to store the inventory +# data. +# Defaults to $::os_service_default. +# +class ironic::inventory ( + $data_backend = $::os_service_default, + $swift_data_container = $::os_service_default, +) { + + include ironic::deps + include ironic::params + + if ! is_service_default($data_backend) { + validate_legacy(Enum['none', 'database', 'swift'], 'validate_re', $data_backend, + ['^none$', '^database$', '^swift$']) + } + + ironic_config { + 'inventory/data_backend': value => $data_backend; + 'inventory/swift_data_container': value => $swift_data_container; + } + +} diff --git a/releasenotes/notes/inventory-ffdad31e3fc409c5.yaml b/releasenotes/notes/inventory-ffdad31e3fc409c5.yaml new file mode 100644 index 00000000..b4f4e1b0 --- /dev/null +++ b/releasenotes/notes/inventory-ffdad31e3fc409c5.yaml @@ -0,0 +1,4 @@ +--- +features: + - | + The new ``ironic::inventory`` class has been added. diff --git a/spec/classes/ironic_inventory_spec.rb b/spec/classes/ironic_inventory_spec.rb new file mode 100644 index 00000000..1bea4e14 --- /dev/null +++ b/spec/classes/ironic_inventory_spec.rb @@ -0,0 +1,45 @@ +require 'spec_helper' + +describe 'ironic::inventory' do + + shared_examples_for 'ironic::inventory' do + + context 'with default parameters' do + let :params do + {} + end + + it 'configures default values' do + is_expected.to contain_ironic_config('inventory/data_backend').with_value('') + is_expected.to contain_ironic_config('inventory/swift_data_container').with_value('') + end + end + + context 'with specific parameters' do + let :params do + { + :data_backend => 'database', + :swift_data_container => 'introspection_data_container' + } + end + + it 'configures specified values' do + is_expected.to contain_ironic_config('inventory/data_backend').with_value('database') + is_expected.to contain_ironic_config('inventory/swift_data_container').with_value('introspection_data_container') + end + end + end + + on_supported_os({ + :supported_os => OSDefaults.get_supported_os + }).each do |os,facts| + context "on #{os}" do + let (:facts) do + facts.merge!(OSDefaults.get_facts()) + end + + it_configures 'ironic::inventory' + end + end + +end