#!/usr/bin/env python

"""
esmond-ps-get-endpoints - discover tests stored in a Perfsonar esmond instance.
"""

# for the script name:
# pylint: disable=invalid-name

from esmond_client.perfsonar.query import ApiConnect
from esmond_client.perfsonar.util import (
    HostnameConversion,
    output_factory,
    perfsonar_client_filters,
    perfsonar_client_opts,
)


def main():
    """Parse args and execute query."""
    options, _ = perfsonar_client_opts()

    ip_convert = HostnameConversion(options)

    filters = perfsonar_client_filters(options)
    conn = ApiConnect(options.url, filters)

    data = list()

    for meta in conn.get_metadata():
        row = dict(
            source=meta.source,
            destination=meta.destination,
            measurement_agent=meta.measurement_agent,
            tool_name=meta.tool_name,
            event_type=[etype.event_type for etype in meta.get_all_event_types()],
        )
        data.append(ip_convert.convert(row))

    column_ordering = [
        'source',
        'destination',
        'measurement_agent',
        'tool_name',
        'event_type'
    ]

    output = output_factory(options, data, column_ordering)
    print output.get_output()

if __name__ == '__main__':
    main()
