diff --git a/manifests/site.pp b/manifests/site.pp index 1a46d5c7c0..9dc886c950 100644 --- a/manifests/site.pp +++ b/manifests/site.pp @@ -59,6 +59,7 @@ node 'review.openstack.org' { contactstore_pubkey => hiera('gerrit_contactstore_pubkey'), swift_username => hiera('swift_store_user', 'username'), swift_password => hiera('swift_store_key'), + storyboard_password => hiera('gerrit_storyboard_token'), } } @@ -91,6 +92,8 @@ node 'review-dev.openstack.org' { lp_sync_consumer_key => hiera('gerrit_dev_lp_consumer_key'), lp_sync_token => hiera('gerrit_dev_lp_access_token'), lp_sync_secret => hiera('gerrit_dev_lp_access_secret'), + storyboard_password => hiera('gerrit_dev_storyboard_token'), + storyboard_ssl_cert => hiera('gerrit_dev_storyboard_ssl_crt'), } } diff --git a/modules/openstack_project/manifests/gerrit.pp b/modules/openstack_project/manifests/gerrit.pp index 1216a3ff90..b517dd7061 100644 --- a/modules/openstack_project/manifests/gerrit.pp +++ b/modules/openstack_project/manifests/gerrit.pp @@ -81,6 +81,9 @@ class openstack_project::gerrit ( $receive_max_object_size_limit = '100 m', $commentlinks = [], $commitmessage_params = {}, + $its_plugins = [], + $its_rules = [], + $java_home = '', ) { class { 'jeepyb::openstackwatch': @@ -119,6 +122,7 @@ class openstack_project::gerrit ( robots_txt_source => 'puppet:///modules/openstack_project/gerrit/robots.txt', enable_javamelody_top_menu => false, # passthrough + java_home => $java_home, ssl_cert_file => $ssl_cert_file, ssl_key_file => $ssl_key_file, ssl_chain_file => $ssl_chain_file, @@ -147,6 +151,8 @@ class openstack_project::gerrit ( httpd_maxqueued => $httpd_maxqueued, httpd_maxwait => $httpd_maxwait, commentlinks => $commentlinks, + its_plugins => $its_plugins, + its_rules => $its_rules, trackingids => [ { name => 'storyboard', diff --git a/modules/openstack_project/manifests/review.pp b/modules/openstack_project/manifests/review.pp index 28a939ee00..fb9f56dfff 100644 --- a/modules/openstack_project/manifests/review.pp +++ b/modules/openstack_project/manifests/review.pp @@ -83,15 +83,22 @@ class openstack_project::review ( # For openstackwatch. $swift_username = '', $swift_password = '', + $storyboard_password = '', $project_config_repo = '', $projects_config = 'openstack_project/review.projects.ini.erb', ) { + $java_home = $::lsbdistcodename ? { + 'precise' => '/usr/lib/jvm/java-7-openjdk-amd64/jre', + 'trusty' => '/usr/lib/jvm/java-7-openjdk-amd64/jre', + } + class { 'project_config': url => $project_config_repo, } class { 'openstack_project::gerrit': + java_home => $java_home, git_http_url => 'https://git.openstack.org/', canonical_git_url => 'git://git.openstack.org/', ssl_cert_file => $ssl_cert_file, @@ -157,6 +164,11 @@ class openstack_project::review ( match => '\\b[Ss]tory:? #?(\\d+)', link => 'https://storyboard.openstack.org/#!/story/$1', }, + { + name => 'its-storyboard', + match => '\\b[Tt]ask:? #?(\\d+)', + link => 'task: $1', + }, { name => 'blueprint', match => '(\\b[Bb]lue[Pp]rint\\b|\\b[Bb][Pp]\\b)[ \\t#:]*([A-Za-z0-9\\-]+)', @@ -183,6 +195,30 @@ class openstack_project::review ( html => '$1$2$3', }, ], + its_plugins => [ + { + name => 'its-storyboard', + password => $storyboard_password, + url => 'https://storyboard.openstack.org', + }, + ], + its_rules => [ + { + name => 'change_abandoned', + event_type => 'change-abandoned', + action => 'set-status TODO', + }, + { + name => 'change_in_progress', + event_type => 'patchset-created, change-restored', + action => 'set-status REVIEW', + }, + { + name => 'change_merged', + event_type => 'change-merged', + action => 'set-status MERGED', + }, + ], download => { 'command' => ['checkout', 'cherry_pick', 'pull', 'format_patch'], 'scheme' => ['ssh', 'anon_http', 'anon_git'], diff --git a/modules/openstack_project/manifests/review_dev.pp b/modules/openstack_project/manifests/review_dev.pp index cafa5bcb10..e3d8ea7e77 100644 --- a/modules/openstack_project/manifests/review_dev.pp +++ b/modules/openstack_project/manifests/review_dev.pp @@ -24,10 +24,17 @@ class openstack_project::review_dev ( $lp_sync_secret = '', $swift_username = '', $swift_password = '', + $storyboard_password = '', + $storyboard_ssl_cert = '', $project_config_repo = '', $projects_config = 'openstack_project/review-dev.projects.ini.erb', ) { + $java_home = $::lsbdistcodename ? { + 'precise' => '/usr/lib/jvm/java-7-openjdk-amd64/jre', + 'trusty' => '/usr/lib/jvm/java-7-openjdk-amd64/jre', + } + realize ( User::Virtual::Localuser['zaro'], ) @@ -93,6 +100,11 @@ class openstack_project::review_dev ( match => '\\b[Ss]tory:? #?(\\d+)', link => 'https://storyboard-dev.openstack.org/#!/story/$1', }, + { + name => 'its-storyboard', + match => '\\b[Tt]ask:? #?(\\d+)', + link => 'task: $1', + }, { name => 'blueprint', match => '(\\b[Bb]lue[Pp]rint\\b|\\b[Bb][Pp]\\b)[ \\t#:]*([A-Za-z0-9\\-]+)', @@ -119,6 +131,24 @@ class openstack_project::review_dev ( html => '$1$2$3', }, ], + its_plugins => [ + { + name => 'its-storyboard', + password => $storyboard_password, + url => 'https://storyboard-dev.openstack.org', + }, + ], + its_rules => [ + { + name => 'LOG', + action => 'log-event error', + }, + { + name => 'change_status_updates', + event_type => 'patchset-created,change-abandoned,change-restored,change-merged', + action => 'add-standard-comment', + }, + ], replication => [ { name => 'github', @@ -149,6 +179,29 @@ class openstack_project::review_dev ( gerrit::plugin { 'javamelody': version => '3fefa35' } gerrit::plugin { 'delete-project': version => '4b7410c' } + # create a file containing the ssl certificate + file { '/home/gerrit2/storyboard-dev.crt': + ensure => present, + owner => 'gerrit2', + group => 'gerrit2', + mode => '0600', + content => $storyboard_ssl_cert, + replace => true, + require => User['gerrit2'], + } + + # Import certificate to java to allow gerrit its plugins to POST to storyboard + exec { 'import-java-certs': + user => 'root', + command => "keytool -import -alias storyboard-dev.openstack.org -keystore $java_home/lib/security/cacerts -file /home/gerrit2/storyboard-dev.crt -storepass secret -noprompt", + unless => "keytool -list -alias storyboard-dev.openstack.org -storepass secret -keystore $java_home/lib/security/cacerts >/dev/null 2>&1", + path => '/bin:/usr/bin', + require => [ + Package['openjdk-7-jre-headless'], + File['/home/gerrit2/storyboard-dev.crt'], + ], + } + package { 'python-launchpadlib': ensure => present, }