diff --git a/modules/gerrit/manifests/init.pp b/modules/gerrit/manifests/init.pp index 22b88f2e81..e283bd127c 100644 --- a/modules/gerrit/manifests/init.pp +++ b/modules/gerrit/manifests/init.pp @@ -26,8 +26,6 @@ # Gerrit configuration options; see Gerrit docs. # commentlinks: # A list of regexes Gerrit should hyperlink. -# logo: -# The name of the image file for the site header. # war: # The URL of the Gerrit WAR that should be downloaded and installed. # Note that only the final component is used for comparing to the most @@ -44,13 +42,15 @@ # to: # http://tarballs.openstack.org/ci/gerrit-2.3.0.war # Gerrit will be upgraded on the next puppet run. - +# testmode: +# Set this to true to disable cron jobs and replication, +# which can interfere with testing. # TODO: move apache configuration to another module # TODO: move mysql configuration to another module # TODO: make more gerrit options configurable here -# TODO: launchpadlib creds for user sync script -class gerrit($virtual_hostname='', +class gerrit($virtual_hostname=$fqdn, + $canonicalweburl="https://$fqdn/", $canonicalweburl='', $ssl_cert_file='', $ssl_key_file='', @@ -68,20 +68,15 @@ class gerrit($virtual_hostname='', $httpd_maxthreads='', $httpd_maxwait='', $commentlinks = [], - $logo, $war, $script_user, $script_key_file, - $script_site, $enable_melody = 'false', $melody_session = 'false', $mysql_password, - $email_private_key - ) { - - # Set this to true to disable cron jobs and replication, which can - # interfere with testing. - $testmode = false + $email_private_key, + $testmode=false + ) { user { "gerrit2": ensure => present, @@ -100,27 +95,12 @@ class gerrit($virtual_hostname='', $packages = ["gitweb", "openjdk-6-jre-headless", "mysql-server", - "python-mysqldb", # for launchpad sync script - "python-openid", # for launchpad sync script - "python-launchpadlib", # for launchpad sync script "apache2"] package { $packages: ensure => present, } - # Skip cron jobs if we're in test mode - if ($testmode == false) { - - cron { "gerritsyncusers": - user => gerrit2, - minute => "*/15", - command => "sleep $((RANDOM\\%60+60)) && python /usr/local/gerrit/scripts/update_gerrit_users.py ${script_user} ${script_key_file} ${script_site}", - require => File['/usr/local/gerrit/scripts'], - } - - } # testmode==false - file { "/var/log/gerrit": ensure => "directory", owner => 'gerrit2' @@ -148,40 +128,23 @@ class gerrit($virtual_hostname='', require => File["/home/gerrit2/review_site"] } - file { "/home/gerrit2/review_site/hooks": - ensure => "directory", - owner => "gerrit2", - require => File["/home/gerrit2/review_site"] - } - file { "/home/gerrit2/review_site/static": ensure => "directory", owner => "gerrit2", require => File["/home/gerrit2/review_site"] } - file { '/home/gerrit2/review_site/static/title.png': - ensure => 'present', - source => "puppet:///modules/gerrit/${logo}", - } - - file { '/home/gerrit2/review_site/static/openstack-page-bkg.jpg': - ensure => 'present', - source => 'puppet:///modules/gerrit/openstack-page-bkg.jpg' - } - - file { '/home/gerrit2/review_site/etc/GerritSite.css': - ensure => 'present', - source => 'puppet:///modules/gerrit/GerritSite.css' - } - - file { '/home/gerrit2/review_site/etc/GerritSiteHeader.html': - ensure => 'present', - source => 'puppet:///modules/gerrit/GerritSiteHeader.html' + file { "/home/gerrit2/review_site/hooks": + ensure => "directory", + owner => "gerrit2", + require => File["/home/gerrit2/review_site"] } # Skip replication if we're in test mode if ($testmode == false) { +# TODO: This file needs to be templated with a boolean around +# enabling replication to github. Also, the local repos need +# to be managed in here when we get project creation handled file { '/home/gerrit2/review_site/etc/replication.config': owner => 'root', group => 'root', @@ -204,36 +167,6 @@ class gerrit($virtual_hostname='', require => File["/home/gerrit2/review_site/etc"] } - file { '/home/gerrit2/review_site/hooks/change-merged': - owner => 'root', - group => 'root', - mode => 555, - ensure => 'present', - source => 'puppet:///modules/gerrit/change-merged', - replace => 'true', - require => File["/home/gerrit2/review_site/hooks"] - } - - file { '/home/gerrit2/review_site/hooks/patchset-created': - owner => 'root', - group => 'root', - mode => 555, - ensure => 'present', - source => 'puppet:///modules/gerrit/patchset-created', - replace => 'true', - require => File["/home/gerrit2/review_site/hooks"] - } - - file { '/home/gerrit2/review_site/static/echosign-cla.html': - owner => 'root', - group => 'root', - mode => 444, - ensure => 'present', - source => 'puppet:///modules/gerrit/echosign-cla.html', - replace => 'true', - require => File["/home/gerrit2/review_site/static"] - } - # Secret files. # Gerrit sets these permissions in 'init'; don't fight them. If diff --git a/modules/gerrit/files/GerritSite.css b/modules/openstack_project/files/gerrit/GerritSite.css similarity index 100% rename from modules/gerrit/files/GerritSite.css rename to modules/openstack_project/files/gerrit/GerritSite.css diff --git a/modules/gerrit/files/GerritSiteHeader.html b/modules/openstack_project/files/gerrit/GerritSiteHeader.html similarity index 100% rename from modules/gerrit/files/GerritSiteHeader.html rename to modules/openstack_project/files/gerrit/GerritSiteHeader.html diff --git a/modules/gerrit/files/echosign-cla.html b/modules/openstack_project/files/gerrit/echosign-cla.html similarity index 100% rename from modules/gerrit/files/echosign-cla.html rename to modules/openstack_project/files/gerrit/echosign-cla.html diff --git a/modules/gerrit/files/scripts/notify_doc_impact.py b/modules/openstack_project/files/gerrit/scripts/notify_doc_impact.py similarity index 100% rename from modules/gerrit/files/scripts/notify_doc_impact.py rename to modules/openstack_project/files/gerrit/scripts/notify_doc_impact.py diff --git a/modules/gerrit/files/scripts/update_blueprint.py b/modules/openstack_project/files/gerrit/scripts/update_blueprint.py similarity index 100% rename from modules/gerrit/files/scripts/update_blueprint.py rename to modules/openstack_project/files/gerrit/scripts/update_blueprint.py diff --git a/modules/gerrit/files/scripts/update_bug.py b/modules/openstack_project/files/gerrit/scripts/update_bug.py similarity index 100% rename from modules/gerrit/files/scripts/update_bug.py rename to modules/openstack_project/files/gerrit/scripts/update_bug.py diff --git a/modules/gerrit/files/scripts/update_cla_group.py b/modules/openstack_project/files/gerrit/scripts/update_cla_group.py similarity index 100% rename from modules/gerrit/files/scripts/update_cla_group.py rename to modules/openstack_project/files/gerrit/scripts/update_cla_group.py diff --git a/modules/gerrit/files/scripts/update_gerrit_users.py b/modules/openstack_project/files/gerrit/scripts/update_gerrit_users.py similarity index 100% rename from modules/gerrit/files/scripts/update_gerrit_users.py rename to modules/openstack_project/files/gerrit/scripts/update_gerrit_users.py diff --git a/modules/gerrit/files/scripts/update_users.py b/modules/openstack_project/files/gerrit/scripts/update_users.py similarity index 100% rename from modules/gerrit/files/scripts/update_users.py rename to modules/openstack_project/files/gerrit/scripts/update_users.py diff --git a/modules/gerrit/files/openstack-page-bkg.jpg b/modules/openstack_project/files/openstack-page-bkg.jpg similarity index 100% rename from modules/gerrit/files/openstack-page-bkg.jpg rename to modules/openstack_project/files/openstack-page-bkg.jpg diff --git a/modules/gerrit/files/openstack.png b/modules/openstack_project/files/openstack.png similarity index 100% rename from modules/gerrit/files/openstack.png rename to modules/openstack_project/files/openstack.png diff --git a/modules/openstack_project/manifests/gerrit.pp b/modules/openstack_project/manifests/gerrit.pp index 31903ed41c..db407f7678 100644 --- a/modules/openstack_project/manifests/gerrit.pp +++ b/modules/openstack_project/manifests/gerrit.pp @@ -1,3 +1,8 @@ +# A wrapper class around the main gerrit class that sets gerrit +# up for launchpad single sign on, bug/blueprint links and user +# import and sync +# TODO: launchpadlib creds for user sync script + class openstack_project::gerrit ( $ssl_cert_file='', $ssl_key_file='', @@ -13,25 +18,32 @@ class openstack_project::gerrit ( $httpd_minthreads='', $httpd_maxthreads='', $httpd_maxwait='', - $github_projects = [], $war, $script_user, $script_key_file, + $github_projects = [], $github_user, $github_token, $mysql_password, - $email_private_key + $email_private_key, + $testmode=false, ) { class { 'openstack_project::server': iptables_public_tcp_ports => [80, 443, 29418] } + $packages = [ + "python-mysqldb", # for launchpad sync script + "python-openid", # for launchpad sync script + "python-launchpadlib", # for launchpad sync script + ] + + package { $packages: + ensure => present, + } + class { 'gerrit': # opinions - virtual_hostname => $fqdn, - canonicalweburl => "https://$fqdn/", - logo => 'openstack.png', - script_site => 'openstack', enable_melody => 'true', melody_session => 'true', # passthrough @@ -39,6 +51,7 @@ class openstack_project::gerrit ( ssl_key_file => $ssl_key_file, ssl_chain_file => $ssl_chain_file, email => $email, + openidssourl => "https://login.launchpad.net/+openid", database_poollimit => $database_poollimit, container_heaplimit => $container_heaplimit, core_packedgitopenfiles => $core_packedgitopenfiles, @@ -64,16 +77,93 @@ class openstack_project::gerrit ( war => $war, script_user => $script_user, script_key_file => $script_key_file, + script_site => 'openstack', mysql_password => $mysql_password, - email_private_key => $email_private_key + email_private_key => $email_private_key, + testmode => $testmode, } - class { 'gerrit::cron': - script_user => $script_user, - script_key_file => $script_key_file, + if ($testmode == false) { + class { 'gerrit::cron': + script_user => $script_user, + script_key_file => $script_key_file, + } + class { 'github': + github_projects => $github_projects, + github_user => $github_username, + github_token => $github_oauth_token, + } } - class { 'github': - github_projects => $github_projects, - github_user => $github_username, - github_token => $github_oauth_token, + + file { '/home/gerrit2/review_site/static/echosign-cla.html': + owner => 'root', + group => 'root', + mode => 444, + ensure => 'present', + source => 'puppet:///modules/openstack_project/gerrit/echosign-cla.html', + replace => 'true', + require => Class['gerrit::launchpad'], + } + + file { '/home/gerrit2/review_site/static/title.png': + ensure => 'present', + source => "puppet:///modules/openstack_project/openstack.png", + require => Class['gerrit::launchpad'], + } + + file { '/home/gerrit2/review_site/static/openstack-page-bkg.jpg': + ensure => 'present', + source => 'puppet:///modules/openstack_project/openstack-page-bkg.jpg', + require => Class['gerrit::launchpad'], + } + + file { '/home/gerrit2/review_site/etc/GerritSite.css': + ensure => 'present', + source => 'puppet:///modules/openstack_project/gerrit/GerritSite.css', + require => Class['gerrit::launchpad'], + } + + file { '/home/gerrit2/review_site/etc/GerritSiteHeader.html': + ensure => 'present', + source => 'puppet:///modules/openstack_project/GerritSiteHeader.html', + require => Class['gerrit::launchpad'], + } + + cron { "gerritsyncusers": + user => gerrit2, + minute => "*/15", + command => "sleep $((RANDOM\\%60+60)) && python /usr/local/gerrit/scripts/update_gerrit_users.py ${script_user} ${script_key_file} ${script_site}", + require => File['/usr/local/gerrit/scripts'], + } + + file { '/usr/local/gerrit/scripts': + owner => 'root', + group => 'root', + mode => 755, + ensure => 'directory', + recurse => true, + require => Class['gerrit'], + source => [ + "puppet:///modules/openstack_project/gerrit/scripts", + ], + } + + file { '/home/gerrit2/review_site/hooks/change-merged': + owner => 'root', + group => 'root', + mode => 555, + ensure => 'present', + source => 'puppet:///modules/gerrit/change-merged', + replace => 'true', + require => Class['gerrit'] + } + + file { '/home/gerrit2/review_site/hooks/patchset-created': + owner => 'root', + group => 'root', + mode => 555, + ensure => 'present', + source => 'puppet:///modules/gerrit/patchset-created', + replace => 'true', + require => Class['gerrit'] } }