#!/usr/bin/env python
# Copyright 2013 Revel Systems
#
# All Rights Reserved.

import sys
import argparse
from time import sleep
import psutil
from niice_client.client import Client
from niice_client.client_configuration import DEFAULT_CLIENT_CONFIG_PATH, client_configuration_from

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="Send system info like CPU and MEM usage to niice metrics collector.")
    parser.add_argument("-c", "--config", dest="config", help="config file.", default=DEFAULT_CLIENT_CONFIG_PATH)
    options = parser.parse_args(sys.argv[1:])

    config = client_configuration_from(options.config)
    with config.rabbitmq_connection() as channel:
        client = Client(channel, config.queue, config.server_id, config.timezone)
        while True:
            cpu_usage = psutil.cpu_percent(percpu=True)
            memory = psutil.virtual_memory()._asdict()["percent"]
            disk_usage = psutil.disk_usage('/')._asdict()["percent"]
            io_usage = psutil.disk_io_counters()._asdict()
            eth0_usage =  psutil.network_io_counters(pernic=True)["eth0"]._asdict()

            client.send_event("CPU%", cpu_usage)
            print "CPU%: {}".format(cpu_usage)
            client.send_event("RAM%", memory)
            print "RAM%: {}".format(memory)
            client.send_event("DISK%", disk_usage)
            print "DISK%: {}".format(disk_usage)

            sleep(0.42)
