#!/usr/bin/env python3

"""
Dump out TrustGraph processor states.
"""

import requests
import argparse
import tabulate

default_prometheus_url = "http://localhost:9090"

def dump_status(prom):

    url = f"{prom}/api/v1/query?query=processor_state%7Bprocessor_state%3D%22running%22%7D"

    resp = requests.get(url)

    obj = resp.json()

    tbl = [
        [
            m["metric"]["job"],
            "running" if int(m["value"][1]) > 0 else "down"
        ]
        for m in obj["data"]["result"]
    ]

    print(tabulate.tabulate(
        tbl, tablefmt="pretty", headers=["processor", "state"],
        stralign="left"
    ))


def main():

    parser = argparse.ArgumentParser(
        prog='tg-processor-state',
        description=__doc__,
    )

    parser.add_argument(
        '-p', '--prometheus-url',
        default=default_prometheus_url,
        help=f'Prometheus URL (default: {default_prometheus_url})',
    )

    args = parser.parse_args()

    try:

        dump_status(args.prometheus_url)

    except Exception as e:

        print("Exception:", e, flush=True)

main()

