def _fetch(hostname, username, port, gerrit_query): """ Fetch changes from gerrit by executing given query Connects to gerrit at given hostname with given username via SSH and uses given gerrit query to fetch changes :arg str hostname: gerrit server hostname :arg str username: gerrit username :arg int port: port for gerrit service :arg str gerrit_query: gerrit query to be executed via SSH :Return: List of Change objects if any, empty list on error """ try: logging.info("Connecting to %s@%s:%d", username, hostname, port) gerrit_client = GerritClient(host=hostname, username=username, port=port) logging.info("Connected to Gerrit version [%s]", gerrit_client.gerrit_version()) except GerritError as err: logging.error("Gerrit error: %s", err) return [] logging.info("Fetching changes with %s", gerrit_query) changes = [] try: changes = gerrit_client.query(gerrit_query) except ValueError as value_error: # should not happen as query above should have no errors logging.error("Query %s failed: %s!", gerrit_query, value_error) logging.info("Number of changes fetched: %d", len(changes)) return changes
def search_projects(self, name): client = GerritClient("gerrit") results = client.run_command("ls-projects --format json") projects = json.load(results.stdout) clyde_projects = [] for name, contents in projects.iteritems(): if name.startswith('clyde/packages'): clyde_projects.append(name.split('/')[2]) return clyde_projects
def __init__(self, gerrit_host="gerrit.mmt.com"): self.client = None self.ELK_HOST = "127.0.0.1:9200" # elastic search self.index_name = datetime.datetime.now().strftime('gerrit-stats-%Y-%m') url = "http://127.0.0.1:8080" # gerrit servers auth = HTTPDigestAuth('admin', 'pass') self.rest_client = GerritRestAPI(url=url, auth=auth) # establish connection with jira self.jira = JIRA(basic_auth=('jira', 'pass'), options = {'server': '127.0.0.1'}) # Jira server self.regex = r'([A-Z]+-[0-9]+)' log.info("creating a new connection with %s" % (gerrit_host)) self.client = GerritClient(gerrit_host) log.info("Gerrit version is %s" % (self.client.gerrit_version())) self.start_event_stream()
def setUp(self): self.gerrit = GerritClient("review")
def __init__(self, host, username=None, port=None, keepalive=None): super(GerritClientEventStream, self).__init__(host, username, port, keepalive) self.client = GerritClient(host, username, port, keepalive)
def _main(): usage = "usage: %prog [options]" parser = optparse.OptionParser(usage=usage) parser.add_option('-g', '--gerrit-hostname', dest='hostname', default='review', help='gerrit server hostname (default: %default)') parser.add_option('-p', '--port', dest='port', type='int', default=29418, help='port number (default: %default)') parser.add_option('-u', '--username', dest='username', help='username') parser.add_option('-b', '--blocking', dest='blocking', action='store_true', help='block on event get (default: False)') parser.add_option('-t', '--timeout', dest='timeout', default=None, type='int', help='timeout (seconds) for blocking event get ' '(default: None)') parser.add_option('-v', '--verbose', dest='verbose', action='store_true', help='enable verbose (debug) logging') parser.add_option('-i', '--ignore-stream-errors', dest='ignore', action='store_true', help='do not exit when an error event is received') (options, _args) = parser.parse_args() if options.timeout and not options.blocking: parser.error('Can only use --timeout with --blocking') level = logging.DEBUG if options.verbose else logging.INFO logging.basicConfig(format='%(asctime)s %(levelname)s %(message)s', level=level) try: gerrit = GerritClient(host=options.hostname, username=options.username, port=options.port) logging.info("Connected to Gerrit version [%s]", gerrit.gerrit_version()) gerrit.start_event_stream() except GerritError as err: logging.error("Gerrit error: %s", err) return 1 errors = Event() try: while True: event = gerrit.get_event(block=options.blocking, timeout=options.timeout) if event: logging.info("Event: %s", event) if isinstance(event, ErrorEvent) and not options.ignore: logging.error(event.error) errors.set() break else: logging.info("No event") if not options.blocking: time.sleep(1) except KeyboardInterrupt: logging.info("Terminated by user") finally: logging.debug("Stopping event stream...") gerrit.stop_event_stream() if errors.isSet(): logging.error("Exited with error") return 1
def __init__(self, action, filter): self.gerrit_client = GerritClient("gerrit-host") self.action = action self.filter = filter self.gerrit_client.gerrit_version()