From 2a9cd677e4eb6a60787ebc73bd8fd9e1b6f26b34 Mon Sep 17 00:00:00 2001
From: iberezovskiy <iberezovskiy@mirantis.com>
Date: Thu, 13 Feb 2014 13:07:04 +0400
Subject: [PATCH] Enable Gearman as default on Jenkins slaves

We don't need to enable Gearman through Jenkins UI.
It'll we done as default.

Change-Id: I50a1506f7efa3d71034cca2caebb6e5ddb76285a
---
 manifests/site.pp                                  |  9 +++++++++
 modules/jenkins/manifests/master.pp                | 14 ++++++++++++++
 modules/jenkins/templates/gearman-plugin.xml.erb   |  6 ++++++
 modules/openstack_project/manifests/jenkins.pp     |  6 ++++--
 modules/openstack_project/manifests/jenkins_dev.pp |  2 ++
 5 files changed, 35 insertions(+), 2 deletions(-)
 create mode 100644 modules/jenkins/templates/gearman-plugin.xml.erb

diff --git a/manifests/site.pp b/manifests/site.pp
index 315c585060..f3c2b4ba8e 100644
--- a/manifests/site.pp
+++ b/manifests/site.pp
@@ -78,6 +78,7 @@ node 'jenkins.openstack.org' {
     zmq_event_receivers     => ['logstash.openstack.org',
                                 'nodepool.openstack.org',
     ],
+    gearman_server          => 'zuul.openstack.org',
   }
 }
 
@@ -92,6 +93,7 @@ node 'jenkins01.openstack.org' {
     zmq_event_receivers     => ['logstash.openstack.org',
                                 'nodepool.openstack.org',
     ],
+    gearman_server          => 'zuul.openstack.org',
   }
 }
 
@@ -106,6 +108,7 @@ node 'jenkins02.openstack.org' {
     zmq_event_receivers     => ['logstash.openstack.org',
                                 'nodepool.openstack.org',
     ],
+    gearman_server          => 'zuul.openstack.org',
   }
 }
 
@@ -120,6 +123,7 @@ node 'jenkins03.openstack.org' {
     zmq_event_receivers     => ['logstash.openstack.org',
                                 'nodepool.openstack.org',
     ],
+    gearman_server          => 'zuul.openstack.org',
   }
 }
 
@@ -134,6 +138,7 @@ node 'jenkins04.openstack.org' {
     zmq_event_receivers     => ['logstash.openstack.org',
                                 'nodepool.openstack.org',
     ],
+    gearman_server          => 'zuul.openstack.org',
   }
 }
 
@@ -148,6 +153,7 @@ node 'jenkins05.openstack.org' {
     zmq_event_receivers     => ['logstash.openstack.org',
                                 'nodepool.openstack.org',
     ],
+    gearman_server          => 'zuul.openstack.org',
   }
 }
 
@@ -162,6 +168,7 @@ node 'jenkins06.openstack.org' {
     zmq_event_receivers     => ['logstash.openstack.org',
                                 'nodepool.openstack.org',
     ],
+    gearman_server          => 'zuul.openstack.org',
   }
 }
 
@@ -176,6 +183,7 @@ node 'jenkins07.openstack.org' {
     zmq_event_receivers     => ['logstash.openstack.org',
                                 'nodepool.openstack.org',
     ],
+    gearman_server          => 'zuul.openstack.org',
   }
 }
 
@@ -192,6 +200,7 @@ node 'jenkins-dev.openstack.org' {
     hpcloud_username         => hiera('nodepool_hpcloud_username'),
     hpcloud_password         => hiera('nodepool_hpcloud_password'),
     hpcloud_project          => hiera('nodepool_hpcloud_project'),
+    gearman_server           => 'zuul-dev.openstack.org',
   }
 }
 
diff --git a/modules/jenkins/manifests/master.pp b/modules/jenkins/manifests/master.pp
index a54108647b..7582cc4d30 100644
--- a/modules/jenkins/manifests/master.pp
+++ b/modules/jenkins/manifests/master.pp
@@ -4,6 +4,9 @@ class jenkins::master(
   $logo = '',
   $vhost_name = $::fqdn,
   $serveradmin = "webmaster@${::fqdn}",
+  $gearman_server = '127.0.0.1',
+  $gearman_enable = true,
+  $gearman_port = '4730',
   $ssl_cert_file = '',
   $ssl_key_file = '',
   $ssl_chain_file = '',
@@ -162,6 +165,17 @@ class jenkins::master(
     require => File['/var/lib/jenkins'],
   }
 
+  file {'/var/lib/jenkins/hudson.plugins.gearman.GearmanPluginConfig.xml':
+    ensure  => present,
+    content => template('jenkins/gearman-plugin.xml.erb'),
+    owner   => 'jenkins',
+    group   => 'adm',
+    require => [
+      Class['zuul'],
+      File['/var/lib/jenkins'],
+    ],
+  }
+
   file { '/var/lib/jenkins/plugins/simple-theme-plugin':
     ensure  => directory,
     owner   => 'jenkins',
diff --git a/modules/jenkins/templates/gearman-plugin.xml.erb b/modules/jenkins/templates/gearman-plugin.xml.erb
new file mode 100644
index 0000000000..e98cd33831
--- /dev/null
+++ b/modules/jenkins/templates/gearman-plugin.xml.erb
@@ -0,0 +1,6 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<hudson.plugins.gearman.GearmanPluginConfig plugin="gearman-plugin@0.0.6">
+  <enablePlugin><%= gearman_enable %></enablePlugin>
+  <host><%= gearman_server %></host>
+  <port><%= gearman_port %></port>
+</hudson.plugins.gearman.GearmanPluginConfig>
diff --git a/modules/openstack_project/manifests/jenkins.pp b/modules/openstack_project/manifests/jenkins.pp
index a2b6eea120..cf971fbac1 100644
--- a/modules/openstack_project/manifests/jenkins.pp
+++ b/modules/openstack_project/manifests/jenkins.pp
@@ -10,7 +10,8 @@ class openstack_project::jenkins (
   $ssl_chain_file_contents = '',
   $jenkins_ssh_private_key = '',
   $zmq_event_receivers = [],
-  $sysadmins = []
+  $sysadmins = [],
+  $gearman_server = '127.0.0.1',
 ) {
   include openstack_project
 
@@ -40,6 +41,7 @@ class openstack_project::jenkins (
     ssl_chain_file_contents => $ssl_chain_file_contents,
     jenkins_ssh_private_key => $jenkins_ssh_private_key,
     jenkins_ssh_public_key  => $openstack_project::jenkins_ssh_key,
+    gearman_server          => $gearman_server,
   }
 
   jenkins::plugin { 'ansicolor':
@@ -61,7 +63,7 @@ class openstack_project::jenkins (
     version => '1.70',
   }
   jenkins::plugin { 'gearman-plugin':
-    version => '0.0.3',
+    version => '0.0.6',
   }
   jenkins::plugin { 'git':
     version => '1.1.23',
diff --git a/modules/openstack_project/manifests/jenkins_dev.pp b/modules/openstack_project/manifests/jenkins_dev.pp
index d366fca12a..008b41f49d 100644
--- a/modules/openstack_project/manifests/jenkins_dev.pp
+++ b/modules/openstack_project/manifests/jenkins_dev.pp
@@ -12,6 +12,7 @@ class openstack_project::jenkins_dev (
   $hpcloud_username ='',
   $hpcloud_password ='',
   $hpcloud_project ='',
+  $gearman_server = '127.0.0.1',
 ) {
   include openstack_project
 
@@ -33,6 +34,7 @@ class openstack_project::jenkins_dev (
     ssl_chain_file          => '',
     jenkins_ssh_private_key => $jenkins_ssh_private_key,
     jenkins_ssh_public_key  => $openstack_project::jenkins_dev_ssh_key,
+    gearman_server          => $gearman_server,
   }
 
   file { '/etc/default/jenkins':