diff --git a/REFERENCE.md b/REFERENCE.md index 1af6e9b..770dcb3 100644 --- a/REFERENCE.md +++ b/REFERENCE.md @@ -284,6 +284,7 @@ The following parameters are available in the `infiniband::interface` defined ty * [`gateway`](#gateway) * [`ensure`](#ensure) * [`enable`](#enable) +* [`nm_controlled`](#nm_controlled) * [`connected_mode`](#connected_mode) * [`mtu`](#mtu) * [`bonding`](#bonding) @@ -330,6 +331,14 @@ Sets if the infiniband::interface should be enabled at boot. Default value: ``true`` +##### `nm_controlled` + +Data type: `Optional[Variant[Boolean, Enum['yes','no']]]` + +Value for nm_controlled on interface + +Default value: ``undef`` + ##### `connected_mode` Data type: `Enum['yes', 'no']` diff --git a/manifests/interface.pp b/manifests/interface.pp index 7d0dc38..f37d96b 100644 --- a/manifests/interface.pp +++ b/manifests/interface.pp @@ -19,6 +19,8 @@ # Sets if the infiniband::interface should be present or absent. # @param enable # Sets if the infiniband::interface should be enabled at boot. +# @param nm_controlled +# Value for nm_controlled on interface # @param connected_mode # The CONNECTED_MODE value for the infiniband interface. # @param mtu @@ -33,14 +35,15 @@ define infiniband::interface ( Stdlib::Compat::Ip_address $ipaddr, Stdlib::Compat::Ip_address $netmask, - Optional[Stdlib::Compat::Ip_address] $gateway = undef, - Enum['present', 'absent'] $ensure = 'present', - Boolean $enable = true, - Enum['yes', 'no'] $connected_mode = 'yes', - Optional[Integer] $mtu = undef, - Boolean $bonding = false, - Array[String] $bonding_slaves = [], - String $bonding_opts = 'mode=active-backup miimon=100', + Optional[Stdlib::Compat::Ip_address] $gateway = undef, + Enum['present', 'absent'] $ensure = 'present', + Boolean $enable = true, + Enum['yes', 'no'] $connected_mode = 'yes', + Optional[Variant[Boolean, Enum['yes','no']]] $nm_controlled = undef, + Optional[Integer] $mtu = undef, + Boolean $bonding = false, + Array[String] $bonding_slaves = [], + String $bonding_opts = 'mode=active-backup miimon=100', ) { $onboot = $enable ? { @@ -55,6 +58,12 @@ 'CONNECTED_MODE' => $connected_mode, } + if $::osfamily == 'RedHat' and versioncmp($::operatingsystemmajrelease, '8') >= 0 { + $_nm_controlled = pick($nm_controlled, false) + } else { + $_nm_controlled = pick($nm_controlled, 'no') + } + if $bonding { if empty($bonding_slaves) { fail("No slave interfaces given for bonding interface ${name}") @@ -69,7 +78,7 @@ type => 'InfiniBand', master => $name, slave => 'yes', - nm_controlled => 'no', + nm_controlled => $_nm_controlled, mtu => $mtu, options_extra_redhat => $options_extra_redhat, } @@ -86,7 +95,7 @@ gateway => $gateway, bonding_master => 'yes', bonding_opts => $bonding_opts, - nm_controlled => 'no', + nm_controlled => $_nm_controlled, mtu => $mtu, } @@ -99,7 +108,7 @@ ipaddress => $ipaddr, netmask => $netmask, gateway => $gateway, - nm_controlled => 'no', + nm_controlled => $_nm_controlled, mtu => $mtu, options_extra_redhat => $options_extra_redhat, } diff --git a/spec/defines/infiniband_interface_spec.rb b/spec/defines/infiniband_interface_spec.rb index 9c76cfa..ceb5125 100644 --- a/spec/defines/infiniband_interface_spec.rb +++ b/spec/defines/infiniband_interface_spec.rb @@ -23,6 +23,14 @@ default_params end + let :fixture_suffix do + if facts[:os]['family'] == 'RedHat' && facts[:os]['release']['major'].to_i >= 8 + '-no_nm_controlled' + else + '' + end + end + it { is_expected.to contain_class('network') } it do @@ -34,7 +42,7 @@ it do is_expected.to contain_file('/etc/sysconfig/network-scripts/ifcfg-ib0') \ - .with_content(my_fixture_read('ifcfg-ib0_with_connected_mode')) + .with_content(my_fixture_read("ifcfg-ib0_with_connected_mode#{fixture_suffix}")) end context 'ensure => absent' do @@ -50,7 +58,7 @@ default_params.merge(enable: false) end - it { is_expected.to contain_file('/etc/sysconfig/network-scripts/ifcfg-ib0').with_content(my_fixture_read('ifcfg-ib0_with_onboot_no')) } + it { is_expected.to contain_file('/etc/sysconfig/network-scripts/ifcfg-ib0').with_content(my_fixture_read("ifcfg-ib0_with_onboot_no#{fixture_suffix}")) } end context 'connected_mode => no' do @@ -58,7 +66,7 @@ default_params.merge(connected_mode: 'no') end - it { is_expected.to contain_file('/etc/sysconfig/network-scripts/ifcfg-ib0').with_content(my_fixture_read('ifcfg-ib0_without_connected_mode')) } + it { is_expected.to contain_file('/etc/sysconfig/network-scripts/ifcfg-ib0').with_content(my_fixture_read("ifcfg-ib0_without_connected_mode#{fixture_suffix}")) } end context 'mtu => 65520' do @@ -66,7 +74,7 @@ default_params.merge(mtu: 65_520) end - it { is_expected.to contain_file('/etc/sysconfig/network-scripts/ifcfg-ib0'). with_content(my_fixture_read('ifcfg-ib0_with_mtu')) } + it { is_expected.to contain_file('/etc/sysconfig/network-scripts/ifcfg-ib0'). with_content(my_fixture_read("ifcfg-ib0_with_mtu#{fixture_suffix}")) } end context 'gateway => 192.168.1.254' do @@ -74,7 +82,7 @@ default_params.merge(gateway: '192.168.1.254') end - it { is_expected.to contain_file('/etc/sysconfig/network-scripts/ifcfg-ib0').with_content(my_fixture_read('ifcfg-ib0_with_gateway')) } + it { is_expected.to contain_file('/etc/sysconfig/network-scripts/ifcfg-ib0').with_content(my_fixture_read("ifcfg-ib0_with_gateway#{fixture_suffix}")) } end context 'bonding => true' do @@ -96,9 +104,9 @@ end it { - is_expected.to contain_file('/etc/sysconfig/network-scripts/ifcfg-ib0').with_content(my_fixture_read('ifcfg-bond-slave-ib0')) - is_expected.to contain_file('/etc/sysconfig/network-scripts/ifcfg-ib1').with_content(my_fixture_read('ifcfg-bond-slave-ib1')) - is_expected.to contain_file('/etc/sysconfig/network-scripts/ifcfg-ibbond0').with_content(my_fixture_read('ifcfg-bond-master-ibbond0')) + is_expected.to contain_file('/etc/sysconfig/network-scripts/ifcfg-ib0').with_content(my_fixture_read("ifcfg-bond-slave-ib0#{fixture_suffix}")) + is_expected.to contain_file('/etc/sysconfig/network-scripts/ifcfg-ib1').with_content(my_fixture_read("ifcfg-bond-slave-ib1#{fixture_suffix}")) + is_expected.to contain_file('/etc/sysconfig/network-scripts/ifcfg-ibbond0').with_content(my_fixture_read("ifcfg-bond-master-ibbond0#{fixture_suffix}")) } end diff --git a/spec/fixtures/defines/infiniband_interface/ifcfg-bond-master-ibbond0-no_nm_controlled b/spec/fixtures/defines/infiniband_interface/ifcfg-bond-master-ibbond0-no_nm_controlled new file mode 100644 index 0000000..f242aac --- /dev/null +++ b/spec/fixtures/defines/infiniband_interface/ifcfg-bond-master-ibbond0-no_nm_controlled @@ -0,0 +1,13 @@ +# File Managed by Puppet +DEVICE="ibbond0" +BOOTPROTO="none" +ONBOOT="yes" +TYPE="Bond" +USERCTL="no" +PEERDNS="no" +PEERNTP="no" +IPADDR="192.168.1.1" +NETMASK="255.255.255.0" +BONDING_MASTER="yes" +BONDING_OPTS="mode=active-backup miimon=100" +MTU="65520" diff --git a/spec/fixtures/defines/infiniband_interface/ifcfg-bond-slave-ib0-no_nm_controlled b/spec/fixtures/defines/infiniband_interface/ifcfg-bond-slave-ib0-no_nm_controlled new file mode 100644 index 0000000..63f8315 --- /dev/null +++ b/spec/fixtures/defines/infiniband_interface/ifcfg-bond-slave-ib0-no_nm_controlled @@ -0,0 +1,12 @@ +# File Managed by Puppet +DEVICE="ib0" +BOOTPROTO="none" +ONBOOT="yes" +TYPE="InfiniBand" +USERCTL="no" +PEERDNS="no" +PEERNTP="no" +MASTER="ibbond0" +SLAVE="yes" +MTU="65520" +CONNECTED_MODE="yes" diff --git a/spec/fixtures/defines/infiniband_interface/ifcfg-bond-slave-ib1-no_nm_controlled b/spec/fixtures/defines/infiniband_interface/ifcfg-bond-slave-ib1-no_nm_controlled new file mode 100644 index 0000000..55f8df9 --- /dev/null +++ b/spec/fixtures/defines/infiniband_interface/ifcfg-bond-slave-ib1-no_nm_controlled @@ -0,0 +1,12 @@ +# File Managed by Puppet +DEVICE="ib1" +BOOTPROTO="none" +ONBOOT="yes" +TYPE="InfiniBand" +USERCTL="no" +PEERDNS="no" +PEERNTP="no" +MASTER="ibbond0" +SLAVE="yes" +MTU="65520" +CONNECTED_MODE="yes" diff --git a/spec/fixtures/defines/infiniband_interface/ifcfg-ib0_with_connected_mode-no_nm_controlled b/spec/fixtures/defines/infiniband_interface/ifcfg-ib0_with_connected_mode-no_nm_controlled new file mode 100644 index 0000000..9f8e600 --- /dev/null +++ b/spec/fixtures/defines/infiniband_interface/ifcfg-ib0_with_connected_mode-no_nm_controlled @@ -0,0 +1,11 @@ +# File Managed by Puppet +DEVICE="ib0" +BOOTPROTO="none" +ONBOOT="yes" +TYPE="InfiniBand" +USERCTL="no" +PEERDNS="no" +PEERNTP="no" +IPADDR="192.168.1.1" +NETMASK="255.255.255.0" +CONNECTED_MODE="yes" diff --git a/spec/fixtures/defines/infiniband_interface/ifcfg-ib0_with_gateway-no_nm_controlled b/spec/fixtures/defines/infiniband_interface/ifcfg-ib0_with_gateway-no_nm_controlled new file mode 100644 index 0000000..e66ff35 --- /dev/null +++ b/spec/fixtures/defines/infiniband_interface/ifcfg-ib0_with_gateway-no_nm_controlled @@ -0,0 +1,12 @@ +# File Managed by Puppet +DEVICE="ib0" +BOOTPROTO="none" +ONBOOT="yes" +TYPE="InfiniBand" +USERCTL="no" +PEERDNS="no" +PEERNTP="no" +IPADDR="192.168.1.1" +NETMASK="255.255.255.0" +GATEWAY="192.168.1.254" +CONNECTED_MODE="yes" diff --git a/spec/fixtures/defines/infiniband_interface/ifcfg-ib0_with_mtu-no_nm_controlled b/spec/fixtures/defines/infiniband_interface/ifcfg-ib0_with_mtu-no_nm_controlled new file mode 100644 index 0000000..c6b11c1 --- /dev/null +++ b/spec/fixtures/defines/infiniband_interface/ifcfg-ib0_with_mtu-no_nm_controlled @@ -0,0 +1,12 @@ +# File Managed by Puppet +DEVICE="ib0" +BOOTPROTO="none" +ONBOOT="yes" +TYPE="InfiniBand" +USERCTL="no" +PEERDNS="no" +PEERNTP="no" +IPADDR="192.168.1.1" +NETMASK="255.255.255.0" +MTU="65520" +CONNECTED_MODE="yes" diff --git a/spec/fixtures/defines/infiniband_interface/ifcfg-ib0_with_onboot_no-no_nm_controlled b/spec/fixtures/defines/infiniband_interface/ifcfg-ib0_with_onboot_no-no_nm_controlled new file mode 100644 index 0000000..82ee47c --- /dev/null +++ b/spec/fixtures/defines/infiniband_interface/ifcfg-ib0_with_onboot_no-no_nm_controlled @@ -0,0 +1,11 @@ +# File Managed by Puppet +DEVICE="ib0" +BOOTPROTO="none" +ONBOOT="no" +TYPE="InfiniBand" +USERCTL="no" +PEERDNS="no" +PEERNTP="no" +IPADDR="192.168.1.1" +NETMASK="255.255.255.0" +CONNECTED_MODE="yes" diff --git a/spec/fixtures/defines/infiniband_interface/ifcfg-ib0_without_connected_mode-no_nm_controlled b/spec/fixtures/defines/infiniband_interface/ifcfg-ib0_without_connected_mode-no_nm_controlled new file mode 100644 index 0000000..ff0c5a2 --- /dev/null +++ b/spec/fixtures/defines/infiniband_interface/ifcfg-ib0_without_connected_mode-no_nm_controlled @@ -0,0 +1,11 @@ +# File Managed by Puppet +DEVICE="ib0" +BOOTPROTO="none" +ONBOOT="yes" +TYPE="InfiniBand" +USERCTL="no" +PEERDNS="no" +PEERNTP="no" +IPADDR="192.168.1.1" +NETMASK="255.255.255.0" +CONNECTED_MODE="no"