From ab8c2a7ba76d3fa3f843a326be064f52e7c286da Mon Sep 17 00:00:00 2001
From: Andrew Hutchings <andrew@linuxjedi.co.uk>
Date: Thu, 17 May 2012 14:53:01 +0100
Subject: [PATCH] Add parameters for scripts that talk to Gerrit

Not all gerrit installations are configured the same.  This adds parameters
to the gerrit sync script and expire script so that it can work from the
command line and cron on all servers.

Fixes bug #994201

Change-Id: Iac37e18aaf7a10fb5594be233e33b000eabed336
---
 manifests/site.pp                                 |  6 ++++++
 manifests/stackforge.pp                           |  3 +++
 .../gerrit/files/scripts/expire_old_reviews.py    | 11 ++++++++---
 .../gerrit/files/scripts/update_gerrit_users.py   | 15 ++++++++++-----
 modules/gerrit/manifests/init.pp                  |  9 ++++++---
 5 files changed, 33 insertions(+), 11 deletions(-)

diff --git a/manifests/site.pp b/manifests/site.pp
index 37c11489f3..019fcc4f38 100644
--- a/manifests/site.pp
+++ b/manifests/site.pp
@@ -149,6 +149,9 @@ node "gerrit.openstack.org", "review.openstack.org" {
                          } ],
     logo => 'openstack.png',
     war => 'http://ci.openstack.org/tarballs/gerrit-2.3-7-g1f029ab.war',
+    script_user => 'launchpadsync',
+    script_key_file => '/home/gerrit2/.ssh/launchpadsync_rsa',
+    script_site => 'openstack'
   }
 }
 
@@ -171,6 +174,9 @@ node "gerrit-dev.openstack.org", "review-dev.openstack.org" {
                          } ],
     logo => 'openstack.png',
     war => 'http://ci.openstack.org/tarballs/gerrit-2.3-7-g1f029ab.war',
+    script_user => 'update',
+    script_key_file => '/home/gerrit2/.ssh/id_rsa',
+    script_site => 'openstack'
   }
 }
 
diff --git a/manifests/stackforge.pp b/manifests/stackforge.pp
index 86a89984be..824bfcc9e8 100644
--- a/manifests/stackforge.pp
+++ b/manifests/stackforge.pp
@@ -55,6 +55,9 @@ node "review.stackforge.org" {
                          } ],
     logo => 'stackforge.png',
     war => 'http://ci.openstack.org/tarballs/gerrit-2.3-5-gaec571e.war',
+    script_user => 'update',
+    script_key_file => '/home/gerrit2/.ssh/id_rsa',
+    script_site => 'stackforge'
   }
 }
 
diff --git a/modules/gerrit/files/scripts/expire_old_reviews.py b/modules/gerrit/files/scripts/expire_old_reviews.py
index 89686c8c07..1ba936e9d6 100644
--- a/modules/gerrit/files/scripts/expire_old_reviews.py
+++ b/modules/gerrit/files/scripts/expire_old_reviews.py
@@ -22,10 +22,15 @@ import os
 import paramiko
 import json
 import logging
+import argparse
 
-GERRIT_USER = os.environ.get('GERRIT_USER', 'launchpadsync')
-GERRIT_SSH_KEY = os.environ.get('GERRIT_SSH_KEY',
-                                 '/home/gerrit2/.ssh/launchpadsync_rsa')
+parser = argparse.ArgumentParser()
+parser.add_argument('user', help='The gerrit admin user')
+parser.add_argument('ssh_key', help='The gerrit admin SSH key file')
+options = parser.parse_args()
+
+GERRIT_USER = options.user
+GERRIT_SSH_KEY = options.ssh_key
 
 logging.basicConfig(format='%(asctime)-6s: %(name)s - %(levelname)s - %(message)s', filename='/var/log/gerrit/expire_reviews.log')
 logger= logging.getLogger('expire_reviews')
diff --git a/modules/gerrit/files/scripts/update_gerrit_users.py b/modules/gerrit/files/scripts/update_gerrit_users.py
index 0414230440..68162910f8 100755
--- a/modules/gerrit/files/scripts/update_gerrit_users.py
+++ b/modules/gerrit/files/scripts/update_gerrit_users.py
@@ -25,7 +25,7 @@ from datetime import datetime
 
 import StringIO
 import ConfigParser
-
+import argparse
 import MySQLdb
 
 from launchpadlib.launchpad import Launchpad
@@ -36,13 +36,18 @@ from openid.cryptutil import randomString
 
 DEBUG = False
 
-GERRIT_USER = os.environ.get('GERRIT_USER', 'launchpadsync')
+parser = argparse.ArgumentParser()
+parser.add_argument('user', help='The gerrit admin user')
+parser.add_argument('ssh_key', help='The gerrit admin SSH key file')
+parser.add_argument('site', help='The site in use (typically openstack or stackforge)')
+options = parser.parse_args()
+
+GERRIT_USER = options.user
 GERRIT_CONFIG = os.environ.get('GERRIT_CONFIG',
                                  '/home/gerrit2/review_site/etc/gerrit.config')
 GERRIT_SECURE_CONFIG = os.environ.get('GERRIT_SECURE_CONFIG',
                                  '/home/gerrit2/review_site/etc/secure.config')
-GERRIT_SSH_KEY = os.environ.get('GERRIT_SSH_KEY',
-                                 '/home/gerrit2/.ssh/launchpadsync_rsa')
+GERRIT_SSH_KEY = options.ssh_key
 GERRIT_CACHE_DIR = os.path.expanduser(os.environ.get('GERRIT_CACHE_DIR',
                                 '~/.launchpadlib/cache'))
 GERRIT_CREDENTIALS = os.path.expanduser(os.environ.get('GERRIT_CREDENTIALS',
@@ -368,7 +373,7 @@ for (username, user_details) in users.items():
         if os_project_name is not None:
           if os_project_name.endswith("-core"):
               os_project_name = os_project_name[:-5]
-          os_project_name = "openstack/%s" % os_project_name
+          os_project_name = "{site}/{project}".format(site=options.site, project=os_project_name)
           if os_project_name in projects:
             if not cur.execute("""select account_id
                                    from account_project_watches
diff --git a/modules/gerrit/manifests/init.pp b/modules/gerrit/manifests/init.pp
index e0784c16f6..0786d0ab3c 100644
--- a/modules/gerrit/manifests/init.pp
+++ b/modules/gerrit/manifests/init.pp
@@ -63,7 +63,10 @@ class gerrit($virtual_hostname='',
                          link => 'https://blueprints.launchpad.net/openstack/?searchtext=$2' },
                   ],
       $logo,
-      $war
+      $war,
+      $script_user,
+      $script_key_file,
+      $script_site
   ) {
 
   # Set this to true to disable cron jobs and replication, which can
@@ -114,7 +117,7 @@ class gerrit($virtual_hostname='',
     cron { "gerritsyncusers":
       user => gerrit2,
       minute => "*/15",
-      command => 'sleep $((RANDOM\%60+60)) && python /usr/local/gerrit/scripts/update_gerrit_users.py',
+      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'],
     }
 
@@ -129,7 +132,7 @@ class gerrit($virtual_hostname='',
       user => gerrit2,
       hour => 6,
       minute => 3,
-      command => 'python /usr/local/gerrit/scripts/expire_old_reviews.py',
+      command => "python /usr/local/gerrit/scripts/expire_old_reviews.py ${script_user} ${script_key_file}",
       require => File['/usr/local/gerrit/scripts'],
     }