From 01a634014e28d04dfb2ed8bf2401369933ecc465 Mon Sep 17 00:00:00 2001 From: Clark Boylan Date: Fri, 22 Sep 2017 10:24:53 -0700 Subject: [PATCH] Add group membership management functions Add functions to list group members and add and remove users from groups. Change-Id: Id5d8915f2c0bf6f6057b414785b8ec1b18e810f2 --- gerritlib/gerrit.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/gerritlib/gerrit.py b/gerritlib/gerrit.py index ed57b72..5730aac 100644 --- a/gerritlib/gerrit.py +++ b/gerritlib/gerrit.py @@ -211,6 +211,36 @@ class Gerrit(object): out, err = self._ssh(cmd) return err + def listMembers(self, group, recursive=False): + cmd = 'gerrit ls-members' + if recursive: + cmd = '%s --recursive' % cmd + cmd = '%s "%s"' % (cmd, group) + out, err = self._ssh(cmd) + ret = [] + rows = out.split('\n') + if len(rows) > 1: + keys = rows[0].split('\t') + for row in rows[1:]: + ret.append(dict(zip(keys, row.split('\t')))) + return ret + + def _setMember(self, verb, group, member): + cmd = 'gerrit set-members' + if verb == 'add': + cmd = '%s --add "%s"' % (cmd, member) + elif verb == 'remove': + cmd = '%s --remove "%s"' % (cmd, member) + cmd = '%s "%s"' % (cmd, group) + out, err = self._ssh(cmd) + return err + + def addMember(self, group, member): + self._setMember('add', group, member) + + def removeMember(self, group, member): + self._setMember('remove', group, member) + def createProject(self, project, require_change_id=True, empty_repo=False, description=None): cmd = 'gerrit create-project'