Commit f1892912 by Gregory Nagy

Refomated code using pep8 conventions.

manage.py: error handling added
parent 99be2c47
import sys
from src import cnfparse, client, collectables
def main():
if (len(sys.argv)<2):
def main():
if len(sys.argv) < 2:
print("usage: manage.py run [options]")
print("""
options:
--config <path> : path to the configuration file you intend
to start the client with
--debug : enables the debug mode and writes metrics sent to the
server
""")
if (len(sys.argv)==2 and sys.argv[1]=="run"):
configuration, metrics = cnfparse.importConf("config/client.conf")
if len(sys.argv) is not 2 and sys.argv[1] is not "run":
print("[ERROR] Command cannot be parsed. Exiting...")
return
configuration, metrics = cnfparse.importConf("config/client.conf")
cli = client.Client(configuration)
cli.startReporting(metricCollectors =
cli.startReporting(metricCollectors=
collectables.collectables.provide(metrics))
if __name__ == "__main__":
main()
......@@ -8,9 +8,9 @@ import collections
Metrics = collections.namedtuple("Metrics", ["name", "value"])
class Collection (object):
class Group (object):
class Metric (object):
class Collection(object):
class Group(object):
class Metric(object):
name = "unknown"
collector_function = 0
collector_function_arguments = {}
......@@ -18,66 +18,62 @@ class Collection (object):
@classmethod
def harvest(cls):
query = cls.collector_function.im_func(**cls.collector_function_arguments)
query = cls.collector_function.im_func(
**cls.collector_function_arguments)
if ((isinstance(query, list)) or (isinstance(query, dict))):
return Metrics(cls.name,
query[cls.collector_function_result_attr])
elif (isinstance(query, tuple)):
return Metrics(cls.name,
query.__getattribute__(cls.collector_function_result_attr))
query.__getattribute__(
cls.collector_function_result_attr))
else:
return Metrics(cls.name, query)
##############################################################################
class std (Collection):
class cpu (Collection.Group):
class usage (Collection.Group.Metric):
class std(Collection):
class cpu(Collection.Group):
class usage(Collection.Group.Metric):
name = "cpu.usage"
collector_function = ps.cpu_percent
collector_function_arguments = {
'interval': 0.0,
}
class memory (Collection.Group):
class memory(Collection.Group):
class usage(Collection.Group.Metric):
name = "memory.usage"
collector_function = ps.virtmem_usage
collector_function_result_attr = "percent"
class swap (Collection.Group):
class swap(Collection.Group):
class usage(Collection.Group.Metric):
name = "swap.usage"
collector_function = ps.swap_memory
collector_function_result_attr = "percent"
class user (Collection.Group):
class count (Collection.Group.Metric):
class user(Collection.Group):
class count(Collection.Group.Metric):
name = "user.count"
@classmethod
def harvest(cls):
return Metrics(cls.name, len(ps.get_users()))
class network (Collection.Group):
class packages_sent (Collection.Group.Metric):
class network(Collection.Group):
class packages_sent(Collection.Group.Metric):
name = "network.packages_sent"
collector_function = ps.network_io_counters
collector_function_result_attr = "packets_sent"
class packages_received (Collection.Group.Metric):
class packages_received(Collection.Group.Metric):
name = "network.packages_received"
collector_function = ps.network_io_counters
collector_function_result_attr = "packets_recv"
class bytes_sent (Collection.Group.Metric):
class bytes_sent(Collection.Group.Metric):
name = "network.bytes_sent"
collector_function = ps.network_io_counters
collector_function_result_attr = "bytes_sent"
......@@ -87,8 +83,7 @@ class std (Collection):
collector_function = ps.network_io_counters
collector_function_result_attr = "bytes_recv"
class system (Collection.Group):
class boot_time (Collection.Group.Metric):
class system(Collection.Group):
class boot_time(Collection.Group.Metric):
name = "system.boot_time"
collector_function = ps.get_boot_time
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment