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'], }