diff --git a/manifests/drivers/interfaces.pp b/manifests/drivers/interfaces.pp new file mode 100644 index 00000000..ba2c7f6f --- /dev/null +++ b/manifests/drivers/interfaces.pp @@ -0,0 +1,38 @@ +# 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 interfaces in Ironic +# +# === Parameters +# +# [*enabled_network_interfaces*] +# (optional) Specify the list of network drivers to load during +# service initialization. +# Defaults to $::os_service_default +# + +class ironic::drivers::interfaces ( + $enabled_network_interfaces = $::os_service_default, +) { + + if !is_service_default($enabled_network_interfaces) and !empty($enabled_network_interfaces){ + validate_array($enabled_network_interfaces) + $enabled_network_interfaces_real = join($enabled_network_interfaces, ',') + } else { + $enabled_network_interfaces_real = $::os_service_default + } + + ironic_config { + 'DEFAULT/enabled_network_interfaces': value => $enabled_network_interfaces_real; + } + +} diff --git a/releasenotes/notes/drivers_interfaces-d8fdbbb80ef2033b.yaml b/releasenotes/notes/drivers_interfaces-d8fdbbb80ef2033b.yaml new file mode 100644 index 00000000..67291402 --- /dev/null +++ b/releasenotes/notes/drivers_interfaces-d8fdbbb80ef2033b.yaml @@ -0,0 +1,3 @@ +--- +features: + - added class for network interfaces management diff --git a/spec/classes/ironic_drivers_interfaces_spec.rb b/spec/classes/ironic_drivers_interfaces_spec.rb new file mode 100644 index 00000000..dd633893 --- /dev/null +++ b/spec/classes/ironic_drivers_interfaces_spec.rb @@ -0,0 +1,50 @@ +# 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::interfaces class +# + +require 'spec_helper' + +describe 'ironic::drivers::interfaces' do + + shared_examples_for 'ironic deploy interfaces' do + + context 'with default parameters' do + it { is_expected.to contain_ironic_config('DEFAULT/enabled_network_interfaces').with_value('') } + end + + context 'when overriding parameters' do + let :params do + { :enabled_network_interfaces => ['flat','neutron'] } + end + + it { is_expected.to contain_ironic_config('DEFAULT/enabled_network_interfaces').with_value('flat,neutron') } + 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({ + :processorcount => 8, + :concat_basedir => '/var/lib/puppet/concat' + })) + end + it_configures 'ironic deploy interfaces' + end + end + +end