From 14020b73cf334c303bcb1a0375fdee6b2119bc70 Mon Sep 17 00:00:00 2001 From: fmenguy Date: Fri, 22 Mar 2019 14:21:25 +0100 Subject: Add possibility to restart TRex in case of config change or forced it with config flag Change-Id: I40473eac355b76655220d48062eff851cc4eebc3 Signed-off-by: fmenguy --- nfvbench/traffic_server.py | 36 ++++++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 8 deletions(-) (limited to 'nfvbench/traffic_server.py') diff --git a/nfvbench/traffic_server.py b/nfvbench/traffic_server.py index df0a3be..d46a27d 100644 --- a/nfvbench/traffic_server.py +++ b/nfvbench/traffic_server.py @@ -57,9 +57,27 @@ class TRexTrafficServer(TrafficServer): cwd=self.trex_dir) LOG.info('TRex server is running...') + def __load_config(self, filename): + result = {} + if os.path.exists(filename): + with open(filename, 'r') as stream: + try: + result = yaml.load(stream) + except yaml.YAMLError as exc: + print exc + return result + def __save_config(self, generator_config, filename): - ifs = ",".join([repr(pci) for pci in generator_config.pcis]) + result = self.__prepare_config(generator_config) + yaml.safe_load(result) + if os.path.exists(filename): + os.remove(filename) + with open(filename, 'w') as f: + f.write(result) + return filename + def __prepare_config(self, generator_config): + ifs = ",".join([repr(pci) for pci in generator_config.pcis]) result = """# Config generated by NFVbench - port_limit : 2 version : 2 @@ -96,11 +114,13 @@ class TRexTrafficServer(TrafficServer): else: LOG.info("Generator profile 'platform' sub-properties are set but not filled in \ config file. TRex will use default values.") + return result - yaml.safe_load(result) - if os.path.exists(filename): - os.remove(filename) - with open(filename, 'w') as f: - f.write(result) - - return filename + def check_config_updated(self, generator_config): + existing_config = self.__load_config(filename='/etc/trex_cfg.yaml') + new_config = yaml.safe_load(self.__prepare_config(generator_config)) + LOG.debug("Existing config: %s", existing_config) + LOG.debug("New config: %s", new_config) + if existing_config == new_config: + return False + return True -- cgit 1.2.3-korg