Exemplo n.º 1
0
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
Exemplo n.º 2
0
    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
Exemplo n.º 3
0
    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()
Exemplo n.º 4
0
 def setUp(self):
     self.gerrit = GerritClient("review")
Exemplo n.º 5
0
    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)
Exemplo n.º 6
0
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
Exemplo n.º 7
0
 def __init__(self, action, filter):
     self.gerrit_client = GerritClient("gerrit-host")
     self.action = action
     self.filter = filter
     self.gerrit_client.gerrit_version()