summaryrefslogtreecommitdiffstats
path: root/src/lib/Bcfg2/Server/Admin/Perf.py
blob: 1a772e6fc4dc86621921dbe3cb84362aba417d3c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
""" Get performance data from server """

import sys
import Bcfg2.Options
import Bcfg2.Client.Proxy
import Bcfg2.Server.Admin


class Perf(Bcfg2.Server.Admin.Mode):
    """ Get performance data from server """

    def __call__(self, args):
        output = [('Name', 'Min', 'Max', 'Mean', 'Count')]
        setup = Bcfg2.Options.get_option_parser()
        setup.add_options(dict(ca=Bcfg2.Options.CLIENT_CA,
                               certificate=Bcfg2.Options.CLIENT_CERT,
                               key=Bcfg2.Options.SERVER_KEY,
                               password=Bcfg2.Options.SERVER_PASSWORD,
                               server=Bcfg2.Options.SERVER_LOCATION,
                               user=Bcfg2.Options.CLIENT_USER,
                               timeout=Bcfg2.Options.CLIENT_TIMEOUT))
        opts = sys.argv[1:]
        opts.remove(self.__class__.__name__.lower())
        setup.reparse(argv=opts)
        proxy = Bcfg2.Client.Proxy.ComponentProxy(setup['server'],
                                                  setup['user'],
                                                  setup['password'],
                                                  key=setup['key'],
                                                  cert=setup['certificate'],
                                                  ca=setup['ca'],
                                                  timeout=setup['timeout'])
        data = proxy.get_statistics()
        for key in sorted(data.keys()):
            output.append(
                (key, ) +
                tuple(["%.06f" % item
                       for item in data[key][:-1]] + [data[key][-1]]))
        self.print_table(output)