summaryrefslogtreecommitdiffstats
path: root/genome-repo
diff options
context:
space:
mode:
authorBrenton Leanhardt <bleanhar@redhat.com>2008-07-09 10:25:27 -0400
committerBrenton Leanhardt <bleanhar@redhat.com>2008-07-09 10:36:32 -0400
commitecd43460738266b95fefdf84a4fb87d3d01eaf40 (patch)
treec9bc953b3fa58df59f6ffb21149b9476773df88e /genome-repo
parent0cbd015aec07e51994f6e4e6de0cccde1b5ccb9d (diff)
downloadtools-ecd43460738266b95fefdf84a4fb87d3d01eaf40.tar.gz
tools-ecd43460738266b95fefdf84a4fb87d3d01eaf40.tar.xz
tools-ecd43460738266b95fefdf84a4fb87d3d01eaf40.zip
The genomerepo::appliance puppet class now handles laying down the puppet hooks
Fixes: https://engineering.redhat.com/trac/IT_Architecture/ticket/191 Previously this was done with genome-sync. That was a hack that only worked for puppet modules that were being sync'd. If someone manually created a puppet module under /pub/git/puppet/ the hook would not get laid down. The current limitation of this solution is that it does not allow users to easily customize their post-receive hooks. They could edit /etc/genome/post-receive.template but that's would not allow for fine grained customization. We'll cross that bridge when we get there.
Diffstat (limited to 'genome-repo')
-rwxr-xr-xgenome-repo/genome-repo-1.0.0/genome_module/files/post-receive.template22
-rw-r--r--genome-repo/genome-repo-1.0.0/genome_module/manifests/init.pp24
-rw-r--r--genome-repo/genome-repo.spec2
3 files changed, 46 insertions, 2 deletions
diff --git a/genome-repo/genome-repo-1.0.0/genome_module/files/post-receive.template b/genome-repo/genome-repo-1.0.0/genome_module/files/post-receive.template
new file mode 100755
index 0000000..a7d9beb
--- /dev/null
+++ b/genome-repo/genome-repo-1.0.0/genome_module/files/post-receive.template
@@ -0,0 +1,22 @@
+#!/bin/sh
+#
+# This file is laid down by puppet as part of the genomerepo::appliance class
+# that ships with the genome-repo RPM.
+
+update_working_dir() {
+ GIT_DIR=`pwd`
+ GIT_WORK_TREE="/etc/puppet/modules/main/`/bin/basename $GIT_DIR`"
+
+ pushd $GIT_WORK_TREE
+ git --git-dir=$GIT_DIR reset --hard $1
+ echo "$GIT_WORK_TREE updated."
+ popd
+}
+
+while read oldrev newrev ref; do
+ # We only care when master gets updated
+ if [[ $ref == 'refs/heads/master' ]]
+ then
+ update_working_dir $newrev
+ fi
+done
diff --git a/genome-repo/genome-repo-1.0.0/genome_module/manifests/init.pp b/genome-repo/genome-repo-1.0.0/genome_module/manifests/init.pp
index a4bb0d5..c7fdaab 100644
--- a/genome-repo/genome-repo-1.0.0/genome_module/manifests/init.pp
+++ b/genome-repo/genome-repo-1.0.0/genome_module/manifests/init.pp
@@ -36,6 +36,12 @@ class genomerepo {
owner => $user,
group => $user,
}
+
+ file { "/pub/git/puppet":
+ ensure => directory,
+ owner => $user,
+ group => $user,
+ }
}
class xinetd inherits base {
@@ -121,7 +127,6 @@ class genomerepo {
ensure => installed,
}
-
service { "puppet":
ensure => running,
enable => true,
@@ -287,6 +292,23 @@ class genomerepo {
require => User["$user"],
}
+ file { "/etc/genome/post-receive.template":
+ ensure => present,
+ owner => "root",
+ group => "root",
+ mode => 0744,
+ source => "puppet:///genomerepo/post-receive.template",
+ require => User[$user],
+ }
+
+ exec { "Setup post-recieve hooks for puppet modules":
+ user => $user,
+ group => $user,
+ path => "/usr/bin:/bin",
+ command => "find /pub/git/puppet -name hooks -type d -exec cp /etc/genome/post-receive.template '{}'/post-receive \;",
+ require => [User[$user], File["/etc/genome"], File["/pub/git/puppet"], File["/etc/genome/post-receive.template"]],
+ }
+
# Technically the erb files require the cgi
# Consider fixing that.
genome::cgi::file { "puppetca.cgi": }
diff --git a/genome-repo/genome-repo.spec b/genome-repo/genome-repo.spec
index 3a7a481..6f92f82 100644
--- a/genome-repo/genome-repo.spec
+++ b/genome-repo/genome-repo.spec
@@ -1,6 +1,6 @@
Name: genome-repo
Version: 1.0.0
-Release: 27%{?dist}
+Release: 30%{?dist}
Summary: Genome repository
Group: Applications/System