/******************************************************************************* * Copyright (c) 2012 Frank Becker and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Frank Becker - initial API and implementation * Steffen Pingel (Tasktop Techologies) *******************************************************************************/ define bugzilla::site ( $major, $minor, $micro, $branch = "${major}.${minor}", $bugz_dbname = regsubst($title, '([^.-]+)([.-]+)', '\1_', 'G'), $bugz_user = $bugzilla::dbuser, $bugz_password = $bugzilla::dbuserPassword, $www_url = "$title", $bugzillaDir = "$title", $branchTag = "", $custom_wf = false, $custom_wf_and_status = false, $xmlrpc_enabled = true, $base = $bugzilla::bugzillaBase, $envtype = "bugzilla", $envid = "$title", $userOwner = $bugzilla::userOwner, $userGroup = $bugzilla::userGroup, $envversion = "", $envdefault = false, $envdefault_rest = false, $desciptorfile = " ", $usebugaliases = false, $clearMode = $bugzilla::clearMode, $rest_enabled = false, $envinfo = "", $testdataVersion = "", ) { include "bugzilla" $propertyanz = 0 $confDir = "$base/conf.d" if ($branchTag !="") { $branchTagInternal = $branchTag } else { if ($micro !="") { $branchTagInternal = "release-${major}.${minor}.${micro}" } else { $branchTagInternal = "release-${major}.${minor}" } } if ($envversion !="") { $envversionInternal = $envversion } else { if ($micro !="") { $envversionInternal = "${major}.${minor}.${micro}" } else { $envversionInternal = "${major}.${minor}" } } if $custom_wf { $envinfo1 = "Custom Workflow" } elsif $custom_wf_and_status { $envinfo1 = "Custom Workflow and Status" } elsif $usebugaliases { $envinfo1 = "Use Bugaliases" } else { $envinfo1 = "" } if $envinfo1 != "" { if !$xmlrpc_enabled { $envinfo2 = "$envinfo1, XML-RPC disabled" } else { $envinfo2 = "$envinfo1" } } else { if !$xmlrpc_enabled { $envinfo2 = "XML-RPC disabled" } else { $envinfo2 = "" } } if $envinfo != "" { $envinfo_intern = $envinfo } else { $envinfo_intern = $envinfo2 } if $major == "3" { if $minor == "6" { $VersionCreateName = "name" } else { $VersionCreateName = "value" } } else { $VersionCreateName = "value" } if $branch == "master" { if $branchTagInternal == "HEAD" { exec { "master master git fetch $bugzillaDir": command => "git fetch", onlyif => "/usr/bin/test -d $base/$bugzillaDir", cwd => "$base/$bugzillaDir", user => "$userOwner", timeout => 300, logoutput => true, require => Exec["prepare bugzilla"], notify => Exec["end extract bugzilla $bugzillaDir"], } exec { "master master git clone $bugzillaDir": command => "git clone http://git.mozilla.org/bugzilla/bugzilla $base/$bugzillaDir", cwd => "$base", user => "$userOwner", timeout => 300, creates => "$base/$bugzillaDir", require => Exec["prepare bugzilla"], notify => Exec["end extract bugzilla $bugzillaDir"], } } else { exec { "master $branchTagInternal git clone $bugzillaDir": command => "git clone -b $branch http://git.mozilla.org/bugzilla/bugzilla $base/$bugzillaDir", cwd => "$base", user => "$userOwner", timeout => 300, creates => "$base/$bugzillaDir", require => Exec["prepare bugzilla"], } exec { "master $branchTagInternal git checkout $bugzillaDir": command => "git checkout $branchTagInternal", cwd => "$base/$bugzillaDir", user => "$userOwner", logoutput => true, timeout => 300, require => Exec["master $branchTagInternal git clone $bugzillaDir"], notify => Exec["end extract bugzilla $bugzillaDir"], } } } else { exec { "$branch $branchTagInternal git fetch $bugzillaDir": command => "git fetch", onlyif => "/usr/bin/test -d $base/$bugzillaDir", cwd => "$base/$bugzillaDir", user => "$userOwner", timeout => 300, logoutput => true, require => Exec["prepare bugzilla"], notify => Exec["end extract bugzilla $bugzillaDir"], } exec { "$branch $branchTagInternal git clone $bugzillaDir": command => "git clone -b $branch http://git.mozilla.org/bugzilla/bugzilla $base/$bugzillaDir", cwd => "$base", user => "$userOwner", timeout => 300, creates => "$base/$bugzillaDir", require => Exec["prepare bugzilla"], } if $branchTagInternal == "HEAD" { exec { "$branch $branchTagInternal dummy git checkout $bugzillaDir": command => "echo '$branch $branchTagInternal dummy git checkout $bugzillaDir'", logoutput => true, require => Exec["$branch $branchTagInternal git clone $bugzillaDir"], notify => Exec["end extract bugzilla $bugzillaDir"], } } else { exec { "$branch $branchTagInternal git checkout $bugzillaDir": command => "git checkout $branchTagInternal", cwd => "$base/$bugzillaDir", user => "$userOwner", timeout => 300, require => Exec["$branch $branchTagInternal git clone $bugzillaDir"], notify => Exec["end extract bugzilla $bugzillaDir"], } } } exec { "end extract bugzilla $bugzillaDir": command => "echo 'end extract bugzilla $bugzillaDir $branch $branchTagInternal'", logoutput => true, } file { "$base/$bugzillaDir/installPerlModules.sh": content => template('bugzilla/installPerlModules.sh.erb'), owner => "$userOwner", group => "$userGroup", mode => 0755, require => Exec["end extract bugzilla $bugzillaDir"], } exec { "post extract bugzilla $bugzillaDir": command => "$base/$bugzillaDir/installPerlModules.sh >$base/$bugzillaDir/CGI.out", cwd => "$base/$bugzillaDir", creates => "$base/$bugzillaDir/CGI.out", user => "$userOwner", timeout => 300, require => File["$base/$bugzillaDir/installPerlModules.sh"] } exec { "mysql-grant-${bugz_dbname}-${bugzilla::dbuser}": unless => "/usr/bin/mysql --user=root --batch -e \"SELECT user FROM db WHERE Host='localhost' and Db='${bugz_dbname}' and User='${bugzilla::dbuser}'\" mysql | /bin/grep '${bugzilla::dbuser}'", command => "/usr/bin/mysql --verbose --user=root -e \"GRANT ALL ON ${bugz_dbname}.* TO '${bugzilla::dbuser}'@localhost\" \ ; /usr/bin/mysqladmin --verbose --user=root flush-privileges", require => Exec["post extract bugzilla $bugzillaDir"] } if $clearMode == "clear" { exec { "mysql-dropdb-$bugzillaDir": onlyif => "/usr/bin/mysql --user=root '${bugz_dbname}'", command => "/usr/bin/mysqladmin -v --user=root --force drop '${bugz_dbname}'", require => Exec["mysql-grant-${bugz_dbname}-${bugzilla::dbuser}"] } exec { "mysql-createdb-$bugzillaDir": unless => "/usr/bin/mysql --user=root '${bugz_dbname}'", command => "/usr/bin/mysqladmin -v --user=root --force create '${bugz_dbname}'", require => Exec["mysql-dropdb-$bugzillaDir"] } } else { exec { "mysql-createdb-$bugzillaDir": unless => "/usr/bin/mysql --user=root '${bugz_dbname}'", command => "/usr/bin/mysqladmin -v --user=root --force create '${bugz_dbname}'", require => Exec["mysql-grant-${bugz_dbname}-${bugzilla::dbuser}"] } } file { "$base/$bugzillaDir/callchecksetup.pl": content => template('bugzilla/callchecksetup.pl.erb'), owner => "$userOwner", group => "$userGroup", mode => 0755, require => Exec["post extract bugzilla $bugzillaDir"], } file { "$base/$bugzillaDir/answers": content => template('bugzilla/answers.erb'), owner => "$userOwner", group => "$userGroup", require => Exec["post extract bugzilla $bugzillaDir"], } file { "$base/$bugzillaDir/extensions/Mylyn": ensure => directory, # so make this a directory recurse => true, # enable recursive directory management purge => true, # purge all unmanaged junk force => true, # also purge subdirs and links etc. owner => "$userOwner", group => "$userGroup", source => "puppet:///modules/bugzilla/extensions/Mylyn", require => Exec["post extract bugzilla $bugzillaDir"], } file { "$base/$bugzillaDir/extensions/Mylyn/Extension.pm": content => template('bugzilla/Extension.pm.erb'), require => File["$base/$bugzillaDir/extensions/Mylyn"], owner => "$userOwner", group => "$userGroup", mode => 0644, } exec { "init bugzilla_checksetup $bugzillaDir": command => "$base/$bugzillaDir/checksetup.pl $base/$bugzillaDir/answers || exit 0", cwd => "$base/$bugzillaDir", creates => "$base/$bugzillaDir/localconfig", user => "$userOwner", logoutput => true, require => [ Exec["mysql-createdb-$bugzillaDir"], File["$base/$bugzillaDir/answers"], File["$base/$bugzillaDir/callchecksetup.pl"], File["$base/$bugzillaDir/extensions/Mylyn/Extension.pm"]] } exec { "update bugzilla_checksetup $bugzillaDir": command => "$base/$bugzillaDir/checksetup.pl $base/$bugzillaDir/answers || exit 0", cwd => "$base/$bugzillaDir", logoutput => true, require => [ Exec["mysql-createdb-$bugzillaDir"], Exec["init bugzilla_checksetup $bugzillaDir"], File["$base/$bugzillaDir/answers"], File["$base/$bugzillaDir/extensions/Mylyn/Extension.pm"], ] } if !$xmlrpc_enabled { file { "$base/$bugzillaDir/xmlrpc.cgi": content => template('bugzilla/xmlrpc.cgi.erb'), owner => "$userOwner", group => "$userGroup", mode => 755, require => Exec["update bugzilla_checksetup $bugzillaDir"], } } file { "$base/$bugzillaDir/service.json": content => template('bugzilla/service.json.erb'), owner => "$userOwner", group => "$userGroup", mode => 644, require => Exec["update bugzilla_checksetup $bugzillaDir"], } file { "$confDir/$bugzillaDir.conf": content => template('bugzilla/apache2.conf.erb'), require => [Package["apache2"], Exec["update bugzilla_checksetup $bugzillaDir"]], notify => Service["apache2"], } exec { "add $bugzillaDir to /etc/apache2/conf-enabled/bugzilla.conf": command => "echo 'Include $base/conf.d/[^.#]*\n' >> /etc/apache2/conf-enabled/bugzilla.conf", require => File["$confDir/$bugzillaDir.conf"], notify => Service["apache2"], onlyif => "grep -qe '^Include $base/conf.d' /etc/apache2/conf-enabled/bugzilla.conf; test $? != 0" } }