From f2058ced8e80c49659601ef38c784bf96a157fe7 Mon Sep 17 00:00:00 2001
From: Dan Prince <dprince@redhat.com>
Date: Fri, 4 Jan 2013 14:16:06 -0500
Subject: [PATCH] Updates to the cgroups manifest to work on RHEL.

Add a new cgroup package parameter.

Update the cgroups.pp manifest to use the package params.

Also, updates the cgconfig.erb template to support Red Hat which
has slightly different cgroup mounts than Ubuntu.

Change-Id: I9bf34c93fe987c085040929ab16d5a5f5406ad47
Reviewed-on: https://review.openstack.org/18999
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
Reviewed-by: James E. Blair <corvus@inaugust.com>
Approved: James E. Blair <corvus@inaugust.com>
Tested-by: Jenkins
---
 modules/jenkins/manifests/cgroups.pp   |  9 ++++++---
 modules/jenkins/manifests/params.pp    |  2 ++
 modules/jenkins/templates/cgconfig.erb | 15 +++++++++++++++
 3 files changed, 23 insertions(+), 3 deletions(-)

diff --git a/modules/jenkins/manifests/cgroups.pp b/modules/jenkins/manifests/cgroups.pp
index 732640049d..91b936d0cb 100644
--- a/modules/jenkins/manifests/cgroups.pp
+++ b/modules/jenkins/manifests/cgroups.pp
@@ -2,8 +2,11 @@
 #
 class jenkins::cgroups {
 
-  package { 'cgroup-bin':
+  include jenkins::params
+
+  package { 'cgroups':
     ensure => present,
+    name   => $::jenkins::params::cgroups_package,
   }
 
   file { '/etc/cgconfig.conf':
@@ -27,14 +30,14 @@ class jenkins::cgroups {
   service { 'cgconfig':
     ensure    => running,
     enable    => true,
-    require   => Package['cgroup-bin'],
+    require   => Package['cgroups'],
     subscribe => File['/etc/cgconfig.conf'],
   }
 
   service { 'cgred':
     ensure    => running,
     enable    => true,
-    require   => Package['cgroup-bin'],
+    require   => Package['cgroups'],
     subscribe => File['/etc/cgrules.conf'],
   }
 }
diff --git a/modules/jenkins/manifests/params.pp b/modules/jenkins/manifests/params.pp
index 3d684d819c..8e881af889 100644
--- a/modules/jenkins/manifests/params.pp
+++ b/modules/jenkins/manifests/params.pp
@@ -42,6 +42,7 @@ class jenkins::params {
       $unzip_package = 'unzip'
       $xslt_package = 'libxslt'
       $xvfb_package = 'xorg-x11-server-Xvfb'
+      $cgroups_package = 'libcgroup'
     }
     'Debian', 'Ubuntu': {
       # common packages
@@ -78,6 +79,7 @@ class jenkins::params {
       $unzip_package = 'unzip'
       $xslt_package = 'xsltproc'
       $xvfb_package = 'xvfb'
+      $cgroups_package = 'cgroup-bin'
     }
     default: {
       fail("Unsupported osfamily: ${::osfamily} The 'jenkins' module only supports osfamily Ubuntu or Redhat(slaves only).")
diff --git a/modules/jenkins/templates/cgconfig.erb b/modules/jenkins/templates/cgconfig.erb
index d947b51b06..6236ca8fb5 100644
--- a/modules/jenkins/templates/cgconfig.erb
+++ b/modules/jenkins/templates/cgconfig.erb
@@ -1,3 +1,17 @@
+<% if osfamily == "RedHat" then %>
+
+mount {
+        cpuset  = /cgroup/cpuset;
+        cpu     = /cgroup/cpu;
+        cpuacct = /cgroup/cpuacct;
+        memory  = /cgroup/memory;
+        devices = /cgroup/devices;
+        freezer = /cgroup/freezer;
+        net_cls = /cgroup/net_cls;
+        blkio   = /cgroup/blkio;
+}
+
+<% else %>
 mount {
         cpu = /sys/fs/cgroup/cpu;
         cpuacct = /sys/fs/cgroup/cpuacct;
@@ -5,6 +19,7 @@ mount {
         memory = /sys/fs/cgroup/memory;
         freezer = /sys/fs/cgroup/freezer;
 }
+<% end %>
 
 group jenkins {
 	perm {