]>
git.ipfire.org Git - collecty.git/blob - src/collecty/client.py
2 ###############################################################################
4 # collecty - A system statistics collection daemon for IPFire #
5 # Copyright (C) 2012 IPFire development team #
7 # This program is free software: you can redistribute it and/or modify #
8 # it under the terms of the GNU General Public License as published by #
9 # the Free Software Foundation, either version 3 of the License, or #
10 # (at your option) any later version. #
12 # This program is distributed in the hope that it will be useful, #
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of #
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
15 # GNU General Public License for more details. #
17 # You should have received a copy of the GNU General Public License #
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. #
20 ###############################################################################
27 from .constants
import *
31 log
= logging
.getLogger("collectly.client")
33 class CollectyClient(object):
35 self
.bus
= dbus
.SystemBus()
37 self
.proxy
= self
.bus
.get_object(BUS_DOMAIN
, "/GraphGenerator")
39 def list_templates(self
):
40 templates
= self
.proxy
.ListTemplates()
42 return ["%s" % t
for t
in templates
]
44 def list_templates_cli(self
, ns
):
45 templates
= self
.list_templates()
47 for t
in sorted(templates
):
50 def generate_graph(self
, template_name
, **kwargs
):
51 byte_array
= self
.proxy
.GenerateGraph(template_name
, kwargs
,
54 # Convert the byte array into a byte string again
56 return bytes(byte_array
)
58 def generate_graph_cli(self
, ns
):
61 "object_id" : ns
.object,
64 if ns
.height
or ns
.width
:
66 "height" : ns
.height
or 0,
67 "width" : ns
.width
or 0,
71 kwargs
["interval"] = ns
.interval
73 # Generate the graph image
74 graph
= self
.generate_graph(ns
.template
, **kwargs
)
77 with
open(ns
.filename
, "wb") as f
:
80 def version_cli(self
, args
):
81 daemon_version
= self
.proxy
.Version()
83 print(_("collecty %s running on Python %s") % \
84 (COLLECTY_VERSION
, platform
.python_version()))
86 if not COLLECTY_VERSION
== daemon_version
:
87 print(_("daemon %s") % daemon_version
)
89 def parse_cli(self
, args
):
90 parser
= argparse
.ArgumentParser(prog
="collecty-client")
91 subparsers
= parser
.add_subparsers(help="sub-command help")
94 parser_generate_graph
= subparsers
.add_parser("generate-graph",
95 help=_("Generate a graph image"))
96 parser_generate_graph
.set_defaults(func
=self
.generate_graph_cli
)
97 parser_generate_graph
.add_argument("--filename",
98 help=_("filename"), required
=True)
99 parser_generate_graph
.add_argument("--format",
100 help=_("image format"), default
=DEFAULT_IMAGE_FORMAT
)
101 parser_generate_graph
.add_argument("--interval", help=_("interval"))
102 parser_generate_graph
.add_argument("--object",
103 help=_("Object identifier"), default
="default")
104 parser_generate_graph
.add_argument("--template",
105 help=_("The graph template identifier"), required
=True)
108 parser_generate_graph
.add_argument("--height", type=int, default
=0,
109 help=_("Height of the generated image"))
110 parser_generate_graph
.add_argument("--width", type=int, default
=0,
111 help=_("Width of the generated image"))
114 parser_list_templates
= subparsers
.add_parser("list-templates",
115 help=_("Lists all graph templates"))
116 parser_list_templates
.set_defaults(func
=self
.list_templates_cli
)
119 parser_version
= subparsers
.add_parser("version", help=_("Show version"))
120 parser_version
.set_defaults(func
=self
.version_cli
)
122 return parser
.parse_args(args
)
124 def run_cli(self
, args
=None):
125 args
= self
.parse_cli(args
or sys
.argv
[1:])
127 return args
.func(args
)