5 # see license for license details
9 import vstf.controller.settings.settings as sets
11 LOG = logging.getLogger(__name__)
14 class FlowsSettings(sets.Settings):
15 def __init__(self, path="/etc/vstf/perf/",
16 filename="sw_perf.flownodes-settings",
17 mode=sets.SETS_SINGLE):
18 self._check_actors = {'namespaces', 'senders', 'receivers', 'watchers'}
19 self._nocheck_actors = {"cpu_listens"}
20 super(FlowsSettings, self).__init__(path, filename, mode)
22 def _register_func(self):
23 super(FlowsSettings, self)._register_func()
24 for actor in self._check_actors:
25 actor = actor.encode()
26 func_name = "add_%s" % actor
27 setattr(self, func_name, self._adding_file(func_name, self._mset, self._fset, actor, self._check_add))
28 func_name = "madd_%s" % actor
29 setattr(self, func_name, self._adding_memory(func_name, self._mset, actor, self._check_add))
31 for actor in self._nocheck_actors:
32 actor = actor.encode()
33 func_name = "add_%s" % actor
34 setattr(self, func_name, self._adding_file(func_name, self._mset, self._fset, actor))
35 func_name = "madd_%s" % actor
36 setattr(self, func_name, self._adding_memory(func_name, self._mset, actor))
38 LOG.debug(self.__dict__.keys())
41 actors = self._check_actors | self._nocheck_actors
43 func_name = "set_%s" % actor
44 func = getattr(self, func_name)
48 actors = self._check_actors | self._nocheck_actors
50 func_name = "mset_%s" % actor
51 func = getattr(self, func_name)
54 def _check_add(self, value):
55 flows = ['agent', 'dev']
56 if not isinstance(value, dict):
57 raise Exception("type is error: %s" % (str(value)))
59 if flow not in value.keys():
60 raise Exception("keys[%s] is missing: %s" % (flow, str(value)))
62 items = ["ip", "namespace", "mac", "iface", "bdf"]
64 if item not in value['dev'].keys():
65 raise Exception("keys[%s] is error: %s" % (item, str(value)))
69 from vstf.common.log import setup_logging
70 setup_logging(level=logging.DEBUG, log_file="/var/log/vstf/vstf-flows-settings.log", clevel=logging.INFO)
72 flows_settings = FlowsSettings()
73 LOG.info(flows_settings.settings)
75 flows_settings.clear_all()
76 flows_settings.set_flows(2)
77 LOG.info(flows_settings.settings)
80 "agent": "192.168.188.14",
82 "ip": "192.168.1.100",
83 "namespace": "vstf-space-1",
84 "mac": "90:e2:ba:20:1f:d8",
90 "agent": "192.168.188.14",
92 "ip": "192.168.1.101",
93 "namespace": "vstf-space-2",
94 "mac": "90:e2:ba:20:1f:d9",
100 flows_settings.add_senders(flow_1)
101 flows_settings.add_senders(flow_2)
102 flows_settings.add_receivers(flow_2)
103 flows_settings.add_receivers(flow_1)
105 flows_settings.add_watchers(flow_1)
106 flows_settings.add_watchers(flow_2)
108 flows_settings.add_namespaces(flow_1)
109 flows_settings.add_namespaces(flow_2)
112 "agent": "192.168.188.16",
117 flows_settings.add_cpu_listens(cpu)
118 LOG.info(flows_settings.settings)
121 if __name__ == '__main__':