Add ironic::drivers::interfaces class

This patch adds a new class ironic::drivers::interfaces that
will configure interfaces on ironic conductor side.
This patch allows to configure enabled_network_interfaces field.

Depends-On: I67495196c3334f51ed034f4ca6e32a3e01a58f15
Change-Id: I8ea64b23eb476cedf47527e1659174d51905eb23
Related-Bug: #1526403
This commit is contained in:
Vasyl Saienko 2016-06-16 11:40:46 +03:00 committed by Mykyta Karpin
parent a5df3074b3
commit d991f285e8
3 changed files with 91 additions and 0 deletions

View File

@ -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;
}
}

View File

@ -0,0 +1,3 @@
---
features:
- added class for network interfaces management

View File

@ -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('<SERVICE DEFAULT>') }
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