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