#!/usr/bin/env python
+"""A Gerrit related operations wrapper"""
+
import getpass
import os
import sys
'ref updated' Gerrit event.
"""
# 0000*0 is a special git hash code in gerrit for deleted git object
- return oldrev != newrev and newrev == '0000000000000000000000000000000000000000'
+ return oldrev != newrev and newrev == '0' * 40
+
+class GerritError(Exception):
+ """Handle with local Gerrit Error"""
+ pass
class Gerrit:
""" Gerrit ssh client command line warper """
- def __init__(self, host, username = getpass.getuser(), port = 29418):
+ def __init__(self, host, username=getpass.getuser(), port=29418):
self.host = host
self.username = username
self.port = port
if not 'Welcome to Gerrit Code Review' in ''.join(self._cmd_run('')):
- raise Exception, "Init Error to Gerrit Service host: %s port: %s" %(self.host, self.port)
+ raise GerritError("Init Error to Gerrit Service host: %s port: %s"
+ % (self.host, self.port))
+
+ def _cmd_run(self, cmd, args=()):
+ """A cmd running wrapper"""
- def _cmd_run(self, cmd, args = []):
+ args = list(args)
- print "ssh -p %s %s@%s gerrit %s %s" %(self.port, self.username, self.host,
- cmd, ' '.join(args))
+ print "ssh -p %s %s@%s gerrit %s %s" % (self.port, self.username, \
+ self.host, cmd, ' '.join(args))
if cmd:
sys.stdin, out = os.popen2("ssh -p %s %s@%s gerrit %s %s"
%(self.port, self.username, self.host,
return err.readlines()
def query(self, query):
+ """Execute Gerrit query operation"""
ret_list = []
return ret_list
def ls_projects(self, args=()):
+ """List Gerrit projects"""
ret_list = []
return ret_list
def create_project(self, project, *keys):
+ """Create Gerrit project"""
args = [project] + list(keys)
self._cmd_run('create-project', args)
def set_project_parent(self, project, parent, *keys):
+ """Set Gerrit project parent"""
args = []
self._cmd_run('set-project-parent', args)
- def review(self, commit = None, project = None, change_id_set = None, message = '',
- verified = 0, codereview = 0):
+ def review(self, commit=None, project=None, change_id_set=None, \
+ message='', verified=0, codereview=0):
+ """A wrapper method used to execute gerrit review operation"""
args = []
if project:
- args.append('--project %s ' %project)
+ args.append('--project %s ' % project)
if message:
- args.append('--message \'"%s"\'' %message.replace('"', '\\"').replace("'", ""))
+ args.append('--message \'"%s"\'' % \
+ message.replace('"', '\\"').replace("'", ""))
if verified:
- args.append('--verified %s ' %verified)
+ args.append('--verified %s ' % verified)
if codereview:
- args.append('--codereview %s ' %codereview)
+ args.append('--codereview %s ' % codereview)
if commit or change_id_set:
if commit:
- args.append('%s' %commit)
+ args.append('%s' % commit)
elif change_id_set:
- args.append('%s' %change_id_set)
+ args.append('%s' % change_id_set)
else:
- raise Exception, 'Error: either commit or changeid,patchset is needed'
+ raise GerritError, \
+ 'Error: either commit or changeid, patchset is needed'
self._cmd_run('review', args)