![Takashi Kajinami](/assets/img/avatar_default.png)
The current logic to handle the following three parameters expect these accept boolean values and can misbehave if non-boolean value is passed. - enable_hw_offload - disable_emc - enable_tso This change introduces additional validation to ensure boolean values are passed. Change-Id: I5eb4a151c74011c7ad451675bdfd8f9616d0770c
120 lines
3.1 KiB
Puppet
120 lines
3.1 KiB
Puppet
# vswitch: open-vswitch
|
|
# == Class: vswitch::ovs
|
|
#
|
|
# installs openvswitch
|
|
#
|
|
# === Parameters:
|
|
#
|
|
# [*package_ensure*]
|
|
# (Optional) State of the openvswitch package
|
|
# Defaults to 'present'.
|
|
#
|
|
# [*enable_hw_offload*]
|
|
# (optional) Configure OVS to use
|
|
# Hardware Offload. This feature is
|
|
# supported from ovs 2.8.0.
|
|
# Defaults to false.
|
|
#
|
|
# [*disable_emc*]
|
|
# (optional) Configure OVS to disable EMC.
|
|
# Defaults to false.
|
|
#
|
|
# [*vlan_limit*]
|
|
# (optional) Number of vlan layers allowed.
|
|
# Default to undef
|
|
#
|
|
# [*vs_config*]
|
|
# (optional) allow configuration of arbitrary vswitch configurations.
|
|
# The value is an hash of vs_config resources. Example:
|
|
# { 'other_config:foo' => { value => 'baa' } }
|
|
# NOTE: that the configuration MUST NOT be already handled by this module
|
|
# or Puppet catalog compilation will fail with duplicate resources.
|
|
#
|
|
class vswitch::ovs(
|
|
$package_ensure = 'present',
|
|
$enable_hw_offload = false,
|
|
$disable_emc = false,
|
|
$vlan_limit = undef,
|
|
$vs_config = {},
|
|
) {
|
|
|
|
include vswitch::params
|
|
validate_legacy(Boolean, 'validate_bool', $enable_hw_offload)
|
|
validate_legacy(Boolean, 'validate_bool', $disable_emc)
|
|
validate_legacy(Hash, 'validate_hash', $vs_config)
|
|
|
|
if $enable_hw_offload {
|
|
vs_config { 'other_config:hw-offload':
|
|
value => true,
|
|
restart => true,
|
|
wait => true,
|
|
}
|
|
} else {
|
|
vs_config { 'other_config:hw-offload':
|
|
ensure => absent,
|
|
restart => true,
|
|
wait => true,
|
|
}
|
|
}
|
|
|
|
if $disable_emc {
|
|
vs_config { 'other_config:emc-insert-inv-prob':
|
|
value => 0,
|
|
wait => false,
|
|
}
|
|
} else {
|
|
vs_config { 'other_config:emc-insert-inv-prob':
|
|
ensure => absent,
|
|
wait => false,
|
|
}
|
|
}
|
|
|
|
if is_service_default($vlan_limit) {
|
|
warning('Usage of $::os_service_default for vlan_limit is deprecated. Use undef instead')
|
|
vs_config { 'other_config:vlan-limit':
|
|
ensure => absent,
|
|
wait => true,
|
|
}
|
|
} else {
|
|
vs_config { 'other_config:vlan-limit':
|
|
value => $vlan_limit,
|
|
wait => true,
|
|
}
|
|
}
|
|
|
|
create_resources('vs_config', $vs_config)
|
|
|
|
service { 'openvswitch':
|
|
ensure => true,
|
|
enable => true,
|
|
name => $::vswitch::params::ovs_service_name,
|
|
status => $::vswitch::params::ovs_status,
|
|
hasstatus => $::vswitch::params::ovs_service_hasstatus
|
|
}
|
|
|
|
if $::vswitch::params::ovsdb_service_name {
|
|
service { 'ovsdb-server':
|
|
ensure => true,
|
|
enable => true,
|
|
name => $::vswitch::params::ovsdb_service_name,
|
|
status => $::vswitch::params::ovsdb_status,
|
|
}
|
|
|
|
Service['ovsdb-server'] ~> Service['openvswitch']
|
|
}
|
|
|
|
# NOTE(tkajinam): This resource is defined to restart the openvswitch service
|
|
# when any vs_config resource with restart => true is enabled.
|
|
exec { 'restart openvswitch':
|
|
path => ['/sbin', '/usr/sbin', '/bin', '/usr/bin'],
|
|
command => "systemctl -q restart ${::vswitch::params::ovs_service_name}.service",
|
|
refreshonly => true,
|
|
}
|
|
|
|
package { $::vswitch::params::ovs_package_name:
|
|
ensure => $package_ensure,
|
|
before => Service['openvswitch'],
|
|
tag => 'openvswitch',
|
|
}
|
|
}
|