refactor of ovs module

- remove the port and bridge defines b/c they
created useless abstraction layers.
- add redhat support
This commit is contained in:
Dan Bode 2013-04-19 14:32:56 -07:00
parent 2021658617
commit 9ef62597c8
4 changed files with 35 additions and 39 deletions

View File

@ -1,15 +0,0 @@
define vswitch::bridge (
$external_ids = "",
$ensure = "present"
) {
if $external_ids == "" {
vs_bridge { $name:
ensure => $ensure
}
} else {
vs_bridge { $name:
external_ids => $external_ids,
ensure => $ensure
}
}
}

View File

@ -2,34 +2,43 @@ class vswitch::ovs(
$package_ensure = 'present'
) {
case $::osfamily {
Debian: {
'Debian': {
# OVS doesn't build unless the kernel headers are present.
$kernelheaders_pkg = "linux-headers-$::kernelrelease"
$kernelheaders_pkg = "linux-headers-$::kernelrelease"
if ! defined(Package[$kernelheaders_pkg]) {
package { $kernelheaders_pkg: ensure => $package_ensure }
}
package {["openvswitch-switch", "openvswitch-datapath-dkms"]:
ensure => $package_ensure,
before => Service['openvswitch-switch'],
service {'openvswitch':
ensure => true,
enable => true,
name => $::vswitch::params::ovs_service_name,
hasstatus => false, # the supplied command returns true even if it's not running
# Not perfect - should spot if either service is not running - but it'll do
status => "/etc/init.d/openvswitch-switch status | fgrep 'is running'",
}
exec { 'rebuild-ovsmod':
command => "/usr/sbin/dpkg-reconfigure openvswitch-datapath-dkms > /tmp/reconf-log",
creates => "/lib/modules/$::kernelrelease/updates/dkms/openvswitch_mod.ko",
require => [Package['openvswitch-datapath-dkms', $kernelheaders_pkg]],
creates => "/lib/modules/$::kernelrelease/updates/dkms/openvswitch_mod.ko",
require => [Package['openvswitch-datapath-dkms', $kernelheaders_pkg]],
before => Package['openvswitch-switch'],
refreshonly => true
}
}
'Redhat': {
service {'openvswitch':
ensure => true,
enable => true,
name => $::vswitch::params::ovs_service_name,
}
}
}
service {"openvswitch-switch":
ensure => true,
enable => true,
hasstatus => false, # the supplied command returns true even if it's not running
# Not perfect - should spot if either service is not running - but it'll do
status => "/etc/init.d/openvswitch-switch status | fgrep 'is running'",
package { 'openvswitch':
name => $vswitch::params::ovs_package_name,
ensure => $package_ensure,
before => Service['openvswitch'],
}
Service['openvswitch-switch'] -> Vs_port<||>
Service['openvswitch-switch'] -> Vs_bridge<||>
Service['openvswitch'] -> Vs_port<||>
Service['openvswitch'] -> Vs_bridge<||>
}

11
manifests/params.pp Normal file
View File

@ -0,0 +1,11 @@
class vswitch::params {
if $::osfamily == 'Redhat' {
$ovs_package_name = 'openvswitch'
$ovs_service_name = 'openvswitch'
} elsif $::osfamily == 'Debian' {
$ovs_package_name = ['openvswitch-switch', 'openvswitch-datapath-dkms']
$ovs_service_name = 'openvswitch-switch'
} else {
fail("Unsupported osfamily ${$::osfamily}")
}
}

View File

@ -1,9 +0,0 @@
define vswitch::port (
$bridge,
$ensure = present
) {
vs_port { $name:
bridge => $bridge,
ensure => $ensure
}
}