Upload the contribution of vstf as bottleneck network framework.
[bottlenecks.git] / vstf / vstf / controller / settings / cpu_settings.py
1 #!/usr/bin/python
2 # -*- coding: utf8 -*-
3 # author: wly
4 # date: 2015/11/19
5 # see license for license details
6
7 import logging
8 import pprint
9
10 import vstf.controller.settings.settings as sets
11 import vstf.common.decorator as deco
12 from vstf.common.input import raw_choice
13
14 LOG = logging.getLogger(__name__)
15
16
17 class CpuSettings(sets.Settings):
18     def __init__(self, path="/etc/vstf/perf/",
19                  filename="sw_perf.cpu-settings",
20                  mode=sets.SETS_SINGLE):
21         super(CpuSettings, self).__init__(path, filename, mode)
22
23     def _register_func(self):
24         super(CpuSettings, self)._register_func()
25         body = set(
26             self._fset['affctl'].keys()
27         )
28         LOG.debug(body)
29         for item in body:
30             item = item.encode()
31             func_name = "set_%s" % item
32             setattr(self, func_name, self._setting_file(func_name, self._mset['affctl'], self._fset['affctl'], item))
33             func_name = "mset_%s" % item
34             setattr(self, func_name, self._setting_memory(func_name, self._mset['affctl'], item))
35
36         LOG.debug(self.__dict__)
37
38     def sinput(self, info=None):
39         if raw_choice("if set cpu affability by affctl"):
40             affctl = self.raw_affctl(info)
41             self.set_affctl(affctl)
42
43         print "%s set finish: " % self._filename
44         print "+++++++++++++++++++++++++++++++++++++++++"
45         pprint.pprint(self.settings, indent=4)
46         print "+++++++++++++++++++++++++++++++++++++++++"
47
48     @deco.vstf_input('policy', types=int)
49     def raw_affctl(self, info):
50         print info
51         print "---------------------------------------"
52         print "Please vstf set cpu affctl params like:"
53         print "    'policy': 2,"
54         print "---------------------------------------"
55
56
57 def unit_test():
58     from vstf.common.log import setup_logging
59     setup_logging(level=logging.DEBUG, log_file="/var/log/vstf/vstf-cpu-settings.log", clevel=logging.INFO)
60
61 if __name__ == '__main__':
62     unit_test()
63