Beispiel #1
0
def test_get_valid_named_group_key():
    with patch.object(ConfigParser.ConfigParser,
                      'items',
                      return_value=[('test-log-group-favs',
                                     ID_WITH_VALID_LENGTH)]):
        logkeys = api_utils.get_named_logkey_group('test-log-group-favs')
        assert logkeys == filter(None, ID_WITH_VALID_LENGTH.splitlines())
Beispiel #2
0
def query(**kwargs):
    """
    Post query to Logentries.
    """
    date_from = kwargs.get('date_from')
    date_to = kwargs.get('date_to')
    time_from = kwargs.get('time_from')
    time_to = kwargs.get('time_to')
    relative_time_range = kwargs.get('relative_time_range')
    saved_query_id = kwargs.get('saved_query_id')
    query_string = kwargs.get('query_string')
    log_keys = kwargs.get('log_keys')
    favorites = kwargs.get('favorites')
    logset = kwargs.get('logset')
    if not validate_query(date_from=date_from, time_from=time_from, query_string=query_string,
                          relative_time_range=relative_time_range, saved_query_id=saved_query_id,
                          log_keys=log_keys, favorites=favorites, logset=logset):
        return False

    time_range = prepare_time_range(time_from, time_to, relative_time_range, date_from, date_to)
    if favorites:
        log_keys = api_utils.get_named_logkey_group(favorites)
    if logset:
        log_keys = api.get_log_keys_from_logset(logset)
    try:
        if saved_query_id:
            response = run_saved_query(saved_query_id, time_range, log_keys)
        else:
            response = post_query(log_keys, query_string, time_range)
        with click.progressbar(length=100, label='Progress\t') as progress_bar:
            handle_response(response, progress_bar)
        return True
    except requests.exceptions.RequestException as error:
        click.echo(error)
        sys.exit(1)
Beispiel #3
0
def tail_logs(logkeys, leql, poll_interval, favorites=None, logset=None, saved_query_id=None):
    """
    Tail given logs
    """
    if favorites:
        logkeys = api_utils.get_named_logkey_group(favorites)
    elif logset:
        logkeys = api.get_log_keys_from_logset(logset)
    if saved_query_id:
        if logkeys:
            url = _url(('live', 'logs', ':'.join(logkeys), str(saved_query_id)))[1]
        else:
            url = _url(('live', 'saved_query', str(saved_query_id)))[1]
    else:
        url = _url(('live', 'logs'))[1]
    try:
        if saved_query_id:
            response = requests.get(url, headers=api_utils.generate_headers('rw'))
        else:
            payload = {'logs': logkeys}
            if leql:
                payload.update({'leql': {'statement': leql}})

            response = requests.post(url, headers=api_utils.generate_headers('rw'), json=payload)
        handle_tail(response, poll_interval)
        return True
    except requests.exceptions.RequestException as error:
        click.echo(error, err=True)
        sys.exit(1)
Beispiel #4
0
def events(logkeys, lognick, loggroup, timefrom, timeto, datefrom, dateto,
           relative_range):
    """Get log events"""

    if lognick:
        logkeys = api_utils.get_named_logkey(lognick)
    elif loggroup:
        logkeys = api_utils.get_named_logkey_group(loggroup)

    if all([logkeys, timefrom, timeto]):
        query_api.get_events(logkeys, time_from=timefrom, time_to=timeto)
    elif all([logkeys, datefrom, dateto]):
        query_api.get_events(logkeys, date_from=datefrom, date_to=dateto)
    elif all([logkeys, relative_range]):
        query_api.get_events(logkeys, time_range=relative_range)
    else:
        click.echo(
            "Example usage: lecli events 12345678-aaaa-bbbb-1234-1234cb123456 "
            "-f 1465370400 -t 1465370500")
        click.echo(
            "Example usage: lecli events 12345678-aaaa-bbbb-1234-1234cb123456 "
            "--datefrom '2016-05-18 11:04:00' --dateto '2016-05-18 11:09:59' ")
        click.echo(
            "Example usage: lecli events --loggroup myloggroup "
            "--datefrom '2016-05-18 11:04:00' --dateto '2016-05-18 11:09:59' ")
        click.echo(
            "Example usage: lecli events --lognick mynicknamedlog "
            "--datefrom '2016-05-18 11:04:00' --dateto '2016-05-18 11:09:59' ")
        click.echo("Example usage: lecli events --lognick mynicknamedlog "
                   "-r 'last 3 hours'")
Beispiel #5
0
def tail_logs(logkeys, leql, poll_interval, favorites=None, logset=None, saved_query_id=None):
    """
    Tail given logs
    """
    if favorites:
        logkeys = api_utils.get_named_logkey_group(favorites)
    elif logset:
        logkeys = api.get_log_keys_from_logset(logset)
    if saved_query_id:
        if logkeys:
            url = _url(('live', 'logs', ':'.join(logkeys), str(saved_query_id)))[1]
        else:
            url = _url(('live', 'saved_query', str(saved_query_id)))[1]
    else:
        url = _url(('live', 'logs'))[1]
    try:
        if saved_query_id:
            response = requests.get(url, headers=api_utils.generate_headers('rw'))
        else:
            payload = {'logs': logkeys}
            if leql:
                payload.update({'leql': {'statement': leql}})

            response = requests.post(url, headers=api_utils.generate_headers('rw'), json=payload)
        handle_tail(response, poll_interval)
        return True
    except requests.exceptions.RequestException as error:
        click.echo(error, err=True)
        sys.exit(1)
Beispiel #6
0
def query(**kwargs):
    """
    Post query to Logentries.
    """
    date_from = kwargs.get('date_from')
    date_to = kwargs.get('date_to')
    time_from = kwargs.get('time_from')
    time_to = kwargs.get('time_to')
    relative_time_range = kwargs.get('relative_time_range')
    saved_query_id = kwargs.get('saved_query_id')
    query_string = kwargs.get('query_string')
    log_keys = kwargs.get('log_keys')
    favorites = kwargs.get('favorites')
    logset = kwargs.get('logset')
    if not validate_query(date_from=date_from, time_from=time_from, query_string=query_string,
                          relative_time_range=relative_time_range, saved_query_id=saved_query_id,
                          log_keys=log_keys, favorites=favorites, logset=logset):
        return False

    time_range = prepare_time_range(time_from, time_to, relative_time_range, date_from, date_to)
    if favorites:
        log_keys = api_utils.get_named_logkey_group(favorites)
    if logset:
        log_keys = api.get_log_keys_from_logset(logset)
    try:
        if saved_query_id:
            response = run_saved_query(saved_query_id, time_range, log_keys)
        else:
            response = post_query(log_keys, query_string, time_range)
        with click.progressbar(length=100, label='Progress\t') as progress_bar:
            handle_response(response, progress_bar)
        return True
    except requests.exceptions.RequestException as error:
        click.echo(error)
        sys.exit(1)
Beispiel #7
0
def test_case_insensitivity_of_named_groups_key():
    with patch.object(ConfigParser.ConfigParser,
                      'items',
                      return_value=[('test-log-group-nick',
                                     misc_ex.TEST_LOG_GROUP)]):
        logkeys = api_utils.get_named_logkey_group('TEST-log-group-nick')
        assert logkeys == filter(None,
                                 str(misc_ex.TEST_LOG_GROUP).splitlines())
Beispiel #8
0
def test_get_invalid_named_group_key(capsys):
    with patch.object(ConfigParser.ConfigParser, 'items',
                      return_value=[('test-log-group-favs', ["test-log-key1", "test-log-key2"])]):
        with pytest.raises(SystemExit):
            nick_to_query = 'test-log-group-favs-invalid'
            result = api_utils.get_named_logkey_group(nick_to_query)
            out, err = capsys.readouterr()

            assert result is None
            assert nick_to_query in out
            assert 'was not found' in out
Beispiel #9
0
def test_get_invalid_named_group_key(capsys):
    with patch.object(ConfigParser.ConfigParser,
                      'items',
                      return_value=[('test-log-group-favs',
                                     ["test-log-key1", "test-log-key2"])]):
        with pytest.raises(SystemExit):
            nick_to_query = 'test-log-group-favs-invalid'
            result = api_utils.get_named_logkey_group(nick_to_query)
            out, err = capsys.readouterr()

            assert result is None
            assert nick_to_query in out
            assert 'was not found' in out
Beispiel #10
0
def query(logkeys, lognick, loggroup, leql, querynick, timefrom, timeto,
          datefrom, dateto, relative_range):
    """Query logs using LEQL"""

    if lognick:
        logkeys = api_utils.get_named_logkey(lognick)
    elif loggroup:
        logkeys = api_utils.get_named_logkey_group(loggroup)

    if all([leql, querynick]):
        click.echo(
            "Cannot define a LEQL query and query nickname in the same query request"
        )
    elif querynick:
        leql = api_utils.get_named_query(querynick)

    if all([logkeys, leql, timefrom, timeto]):
        query_api.post_query(logkeys, leql, time_from=timefrom, time_to=timeto)
    elif all([logkeys, leql, datefrom, dateto]):
        query_api.post_query(logkeys, leql, date_from=datefrom, date_to=dateto)
    elif all([logkeys, relative_range]):
        query_api.post_query(logkeys, leql, time_range=relative_range)
    else:
        click.echo(
            "Example usage: lecli query 12345678-aaaa-bbbb-1234-1234cb123456 -q "
            "'where(method=GET) calculate(count)' -f 1465370400 -t 1465370500")
        click.echo(
            "Example usage: lecli query 12345678-aaaa-bbbb-1234-1234cb123456 -q "
            "'where(method=GET) calculate(count)'  "
            "--datefrom '2016-05-18 11:04:00' --dateto '2016-05-18 11:09:59' ")
        click.echo(
            "Example usage: lecli query --loggroup myloggroup --leql "
            "'where(method=GET) calculate(count)' "
            "--datefrom '2016-05-18 11:04:00' --dateto '2016-05-18 11:09:59' ")
        click.echo(
            "Example usage: lecli query --lognick mynicknamedlog --leql "
            "'where(method=GET) calculate(count)' "
            "--datefrom '2016-05-18 11:04:00' --dateto '2016-05-18 11:09:59' ")
        click.echo(
            "Example usage: lecli query --lognick mynicknamedlog --leql "
            "'where(method=GET) calculate(count)' "
            "-r 'last 3 days'")
Beispiel #11
0
def recentevents(logkeys, lognick, loggroup, last, relative_range):
    """Get recent log events"""

    if lognick:
        logkeys = api_utils.get_named_logkey(lognick)
    elif loggroup:
        logkeys = api_utils.get_named_logkey_group(loggroup)

    if all([logkeys, relative_range]):
        query_api.get_recent_events(logkeys, time_range=relative_range)
    elif all([logkeys, last]):
        query_api.get_recent_events(logkeys, last_x_seconds=last)
    else:
        click.echo(
            'Example usage: lecli recentevents \'12345678-aaaa-bbbb-1234-1234cb123456\' -l 200'
        )
        click.echo(
            'Example usage: lecli recentevents -n mynicknamedlog -l 200')
        click.echo('Example usage: lecli recentevents -g myloggroup -l 200')
        click.echo(
            "Example usage: lecli recentevents -g myloggroup -r 'last 50 mins'"
        )
Beispiel #12
0
def test_case_insensitivity_of_named_groups_key():
    with patch.object(ConfigParser.ConfigParser,
                      'items',
                      return_value=[('test-log-group-favs', '')]):
        logkeys = api_utils.get_named_logkey_group('TEST-log-group-favs')
        assert logkeys == filter(None, ''.splitlines())
Beispiel #13
0
def test_case_insensitivity_of_named_groups_key():
    with patch.object(ConfigParser.ConfigParser, 'items',
                      return_value=[('test-log-group-favs', '')]):
        logkeys = api_utils.get_named_logkey_group('TEST-log-group-favs')
        assert logkeys == filter(None, ''.splitlines())
Beispiel #14
0
def test_get_valid_named_group_key():
    with patch.object(ConfigParser.ConfigParser, 'items',
                      return_value=[('test-log-group-favs', ID_WITH_VALID_LENGTH)]):
        logkeys = api_utils.get_named_logkey_group('test-log-group-favs')
        assert logkeys == filter(None, ID_WITH_VALID_LENGTH.splitlines())