diff --git a/manifests/drivers/redfish.pp b/manifests/drivers/redfish.pp new file mode 100644 index 00000000..7d07a226 --- /dev/null +++ b/manifests/drivers/redfish.pp @@ -0,0 +1,51 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +# Configure the Redfish driver in Ironic +# +# === Parameters +# +# [*package_ensure*] +# (optional) The state of the sushy package +# Defaults to 'present' +# +# [*connection_attempts*] +# (optional) Maximum number of attempts to try to connect to Redfish. +# Should be a positive integer value. +# Defaults to $::os_service_default. +# +# [*connection_retry_interval*] +# (optional) Number of seconds to wait between attempts to connect to Redfish +# Should be a positive integer value. +# Defaults to $::os_service_default. +# +class ironic::drivers::redfish ( + $package_ensure = 'present', + $connection_attempts = $::os_service_default, + $connection_retry_interval = $::os_service_default, +) { + + include ::ironic::deps + + ironic_config { + 'redfish/connection_attempts': value => $connection_attempts; + 'redfish/connection_retry_interval': value => $connection_retry_interval; + } + + ensure_packages('python-sushy', + { + ensure => $package_ensure, + tag => ['openstack', 'ironic-package'], + } + ) + +} diff --git a/releasenotes/notes/redfish-4afc29a2ff07917f.yaml b/releasenotes/notes/redfish-4afc29a2ff07917f.yaml new file mode 100644 index 00000000..4ebc5730 --- /dev/null +++ b/releasenotes/notes/redfish-4afc29a2ff07917f.yaml @@ -0,0 +1,5 @@ +--- +features: + - | + Support configuring the Redfish driver via new ``ironic::drivers::redfish`` + manifest. diff --git a/spec/classes/ironic_drivers_redfish_spec.rb b/spec/classes/ironic_drivers_redfish_spec.rb new file mode 100644 index 00000000..b000d8ac --- /dev/null +++ b/spec/classes/ironic_drivers_redfish_spec.rb @@ -0,0 +1,66 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +# Unit tests for ironic::drivers::redfish class +# + +require 'spec_helper' + +describe 'ironic::drivers::redfish' do + + let :params do + {} + end + + shared_examples_for 'ironic redfish driver' do + let :p do + params + end + + it 'configures ironic.conf' do + is_expected.to contain_ironic_config('redfish/connection_attempts').with_value('') + is_expected.to contain_ironic_config('redfish/connection_retry_interval').with_value('') + end + + it 'installs sushy package' do + is_expected.to contain_package('python-sushy').with( + :ensure => 'present', + :name => 'python-sushy', + :tag => ['openstack', 'ironic-package'], + ) + end + + context 'when overriding parameters' do + before do + params.merge!(:connection_attempts => 10, + :connection_retry_interval => 1) + end + it 'should replace default parameter with new value' do + is_expected.to contain_ironic_config('redfish/connection_attempts').with_value(10) + is_expected.to contain_ironic_config('redfish/connection_retry_interval').with_value(1) + 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_behaves_like 'ironic redfish driver' + end + end + +end