blob: 5331d35febe15217931d1e2b7820e43a1b7b134b [file] [log] [blame]
/*******************************************************************************
* 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 v2.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v20.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,
$api_key_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 $envinfo2 != "" {
if $api_key_enabled {
$envinfo3 = "$envinfo2, APIKEY enabled"
} else {
$envinfo3 = "$envinfo2"
}
} else {
if $api_key_enabled {
$envinfo3 = "APIKEY enabled"
} else {
$envinfo3 = ""
}
}
if $envinfo != "" {
$envinfo_intern = $envinfo
} else {
$envinfo_intern = $envinfo3
}
if $major == "3" {
if $minor == "6" {
$VersionCreateName = "name"
} else {
$VersionCreateName = "value"
}
} else {
$VersionCreateName = "value"
}
if $branch == "master" {
if $branchTagInternal == "HEAD" {
exec { "master master git pull $bugzillaDir":
command => "git pull",
onlyif => "/usr/bin/test -d $base/$bugzillaDir",
cwd => "$base/$bugzillaDir",
timeout => 360,
logoutput => true,
require => Exec["prepare bugzilla"],
notify => Exec["end extract bugzilla $bugzillaDir"],
}
exec { "master master git clone $bugzillaDir":
command => "git clone https://github.com/bugzilla/bugzilla $base/$bugzillaDir",
cwd => "$base",
timeout => 360,
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 https://github.com/bugzilla/bugzilla $base/$bugzillaDir",
cwd => "$base",
timeout => 360,
creates => "$base/$bugzillaDir",
require => Exec["prepare bugzilla"],
}
exec { "master $branchTagInternal git checkout $bugzillaDir":
command => "git checkout $branchTagInternal",
cwd => "$base/$bugzillaDir",
logoutput => true,
timeout => 360,
require => Exec["master $branchTagInternal git clone $bugzillaDir"],
notify => Exec["end extract bugzilla $bugzillaDir"],
}
}
} else {
exec { "$branch $branchTagInternal git pull $bugzillaDir":
command => "git reset --hard $branchTagInternal;git pull origin $branchTagInternal",
onlyif => "/usr/bin/test -d $base/$bugzillaDir",
cwd => "$base/$bugzillaDir",
timeout => 360,
logoutput => true,
require => Exec["prepare bugzilla"],
notify => Exec["end extract bugzilla $bugzillaDir"],
}
exec { "$branch $branchTagInternal git clone $bugzillaDir":
command => "git clone -b $branch https://github.com/bugzilla/bugzilla $base/$bugzillaDir",
cwd => "$base",
timeout => 360,
creates => "$base/$bugzillaDir",
require => Exec["$branch $branchTagInternal git pull $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",
timeout => 360,
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",
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"
}
}