Skip to main content
summaryrefslogblamecommitdiffstats
blob: 1fde3fa1d492d7d22aa9b821410fbd77c0bbef0f (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14













                                                                                 
         
                                              
                                                                           


                                                    

                                   







                                                  
                             
                                
                                
                              
                                
                                               
                                
                             
                             


                    
                  
                           








                                                               








                                                        
                 
                                 
                                 
                                            
                          
                                
          
                  


                         
                                               
            
                              


                         




                                    


                                
                                 
   








                                  
 
                          

                                                    
                               

                                                           
                             


                                              
                                                            
       

                                                                                           


                             
                                        
                                              
                                                            

            

                                                                                                      


                             
                                        

                                              


                                                                   


                             

                                                                              

       
          
                                                               
                             

                                                         
                           

                        
                                            
                                                          

     

                                                                                                    


                           
                                      
                                            
     


                                                                                       
                          

                                                                               

            


                                                                    

                             

                                                                               
       
     
   
 

                                                                                       

                        
 
                                                    



                                                              
                                                         

   



                                                                                       
                         

                                                                 

   
                                                          
                


                                                                                                                                                                                          
                                                           

   
                            
                                       



                                                                                      
 
                                         

                                                                                        
                                                    
     
          
                                         



                                                                                        
   
 
                                                



                                                          
                                                          

   
                                      


                                                
                                                          

   
                                               






                                                             
                                                          

   
                                                            
                                                     
                                                           




                            



                                                      
                         
                      
                



                                                               

   


                                                        
                      
                         
                  



                                                               
       


                       
                                           



                                                     
                                                                 


     
                                           



                                                     
                                                                

   
                                      
                                                     
                                                                                     


                                  
                                                                       
                                                                                                 
                                                  
                                  
                                                                                                       
   

 
/*******************************************************************************
 * 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/callchecksetup.pl",
    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/callchecksetup.pl",
    cwd       => "$base/$bugzillaDir",
    logoutput => true,
    user => "$userOwner",
    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"
  }

}

Back to the top