From 9ef62597c88476a4634f32fc2084f84edf2e084c Mon Sep 17 00:00:00 2001
From: Dan Bode <bodepd@gmail.com>
Date: Fri, 19 Apr 2013 14:32:56 -0700
Subject: [PATCH] refactor of ovs module

- remove the port and bridge defines b/c they
created useless abstraction layers.
- add redhat support
---
 manifests/bridge.pp | 15 ---------------
 manifests/ovs.pp    | 39 ++++++++++++++++++++++++---------------
 manifests/params.pp | 11 +++++++++++
 manifests/port.pp   |  9 ---------
 4 files changed, 35 insertions(+), 39 deletions(-)
 delete mode 100644 manifests/bridge.pp
 create mode 100644 manifests/params.pp
 delete mode 100644 manifests/port.pp

diff --git a/manifests/bridge.pp b/manifests/bridge.pp
deleted file mode 100644
index bd78de42..00000000
--- a/manifests/bridge.pp
+++ /dev/null
@@ -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
-    }
-  }
-}
diff --git a/manifests/ovs.pp b/manifests/ovs.pp
index 94923077..7f5a6f91 100644
--- a/manifests/ovs.pp
+++ b/manifests/ovs.pp
@@ -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<||>
 }
diff --git a/manifests/params.pp b/manifests/params.pp
new file mode 100644
index 00000000..96e20782
--- /dev/null
+++ b/manifests/params.pp
@@ -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}")
+  }
+}
diff --git a/manifests/port.pp b/manifests/port.pp
deleted file mode 100644
index 89857230..00000000
--- a/manifests/port.pp
+++ /dev/null
@@ -1,9 +0,0 @@
-define vswitch::port (
-  $bridge,
-  $ensure = present
-) {
-  vs_port { $name:
-    bridge   => $bridge,
-    ensure   => $ensure
-  }
-}