Restore cgroup-bin Upstart jobs on Ubuntu Quantal.

* modules/jenkins/files/cgroups/upstart_cgconfig: Very trivial
Upstart job to load /etc/cgconfig.conf once cgroup-lite has started.

* modules/jenkins/files/cgroups/upstart_cgred: Very trivial Upstart
job to start cgred once cgconfig has been loaded.

* modules/jenkins/manifests/cgroups.pp: Conditionally add Upstart
jobs cgconfig and cgred if Ubuntu >= 12.10. They used to exist, but
were dropped in the process of refactoring cgroup support after
Precise.

* modules/jenkins/manifests/params.pp: Add parameter lists for the
cgconfig and cgred dependencies since they differ between RHEL and
Ubuntu.

* modules/jenkins/templates/cgconfig.erb: Conditionally omit the
default cgroup mounts section on Ubuntu Quantal or later.

Change-Id: I16e2996387d534928a3cfa90de9159fbe02bbdd2
Reviewed-on: https://review.openstack.org/20638
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Reviewed-by: James E. Blair <corvus@inaugust.com>
Approved: Jeremy Stanley <fungi@yuggoth.org>
Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
Tested-by: Jenkins
This commit is contained in:
Jeremy Stanley 2013-01-28 19:44:38 +00:00 committed by Jenkins
parent 58e0638bb2
commit 4a19b54683
5 changed files with 72 additions and 3 deletions

View File

@ -0,0 +1,6 @@
description "load legacy cgconfig files"
author "Jeremy Stanley <fungi@yuggoth.org>"
start on started cgroup-lite
pre-start script
/usr/sbin/cgconfigparser -l /etc/cgconfig.conf
end script

View File

@ -0,0 +1,6 @@
description "launch cgrulesengd"
author "Jeremy Stanley <fungi@yuggoth.org>"
start on started cgconfig
pre-start script
/usr/sbin/cgrulesengd
end script

View File

@ -27,17 +27,64 @@ class jenkins::cgroups {
source => 'puppet:///modules/jenkins/cgroups/cgrules.conf', source => 'puppet:///modules/jenkins/cgroups/cgrules.conf',
} }
# Starting with Ubuntu Quantal (12.10) cgroup-bin dropped its upstart jobs.
if $::operatingsystem == 'Ubuntu' {
if $::operatingsystemrelease >= '12.10' {
file { '/etc/init/cgconfig.conf':
ensure => present,
replace => true,
owner => 'root',
group => 'root',
mode => '0644',
source => 'puppet:///modules/jenkins/cgroups/upstart_cgconfig',
}
file { '/etc/init.d/cgconfig':
ensure => link,
target => '/lib/init/upstart-job',
}
file { '/etc/init/cgred.conf':
ensure => present,
replace => true,
owner => 'root',
group => 'root',
mode => '0644',
source => 'puppet:///modules/jenkins/cgroups/upstart_cgred',
}
file { '/etc/init.d/cgred':
ensure => link,
target => '/lib/init/upstart-job',
}
} else {
file { '/etc/init/cgconfig.conf':
ensure => present,
}
file { '/etc/init/cgred.conf':
ensure => present,
}
}
}
service { 'cgconfig': service { 'cgconfig':
ensure => running, ensure => running,
enable => true, enable => true,
require => Package['cgroups'], require => $::jenkins::params::cgconfig_require,
subscribe => File['/etc/cgconfig.conf'], subscribe => File['/etc/cgconfig.conf'],
} }
service { 'cgred': service { 'cgred':
ensure => running, ensure => running,
enable => true, enable => true,
require => Package['cgroups'], require => $::jenkins::params::cgred_require,
subscribe => File['/etc/cgrules.conf'], subscribe => File['/etc/cgrules.conf'],
} }
} }

View File

@ -44,6 +44,8 @@ class jenkins::params {
$xslt_package = 'libxslt' $xslt_package = 'libxslt'
$xvfb_package = 'xorg-x11-server-Xvfb' $xvfb_package = 'xorg-x11-server-Xvfb'
$cgroups_package = 'libcgroup' $cgroups_package = 'libcgroup'
$cgconfig_require = Package['cgroups']
$cgred_require = Package['cgroups']
} }
'Debian', 'Ubuntu': { 'Debian', 'Ubuntu': {
# common packages # common packages
@ -82,6 +84,14 @@ class jenkins::params {
$xslt_package = 'xsltproc' $xslt_package = 'xsltproc'
$xvfb_package = 'xvfb' $xvfb_package = 'xvfb'
$cgroups_package = 'cgroup-bin' $cgroups_package = 'cgroup-bin'
$cgconfig_require = [
Package['cgroups'],
File['/etc/init/cgconfig.conf'],
]
$cgred_require = [
Package['cgroups'],
File['/etc/init/cgred.conf'],
]
} }
default: { default: {
fail("Unsupported osfamily: ${::osfamily} The 'jenkins' module only supports osfamily Ubuntu or Redhat(slaves only).") fail("Unsupported osfamily: ${::osfamily} The 'jenkins' module only supports osfamily Ubuntu or Redhat(slaves only).")

View File

@ -11,7 +11,7 @@ mount {
blkio = /cgroup/blkio; blkio = /cgroup/blkio;
} }
<% else %> <% elsif ( operatingsystemrelease < '12.10' ) or ( operatingsystem != 'Ubuntu' ) then %>
mount { mount {
cpu = /sys/fs/cgroup/cpu; cpu = /sys/fs/cgroup/cpu;
cpuacct = /sys/fs/cgroup/cpuacct; cpuacct = /sys/fs/cgroup/cpuacct;