From d76b7976e5f4b528ffd774c62371e756946b5387 Mon Sep 17 00:00:00 2001 From: zbeacon Date: Mon, 27 Jan 2020 11:37:11 +0200 Subject: [PATCH] Improvement for loading connectors from remote configuration request --- .../gateway/tb_gateway_remote_configurator.py | 15 +++++++++++- .../gateway/tb_gateway_service.py | 23 +++++++++---------- 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/thingsboard_gateway/gateway/tb_gateway_remote_configurator.py b/thingsboard_gateway/gateway/tb_gateway_remote_configurator.py index fb2d92b6..b6a55a30 100644 --- a/thingsboard_gateway/gateway/tb_gateway_remote_configurator.py +++ b/thingsboard_gateway/gateway/tb_gateway_remote_configurator.py @@ -107,9 +107,22 @@ class RemoteConfigurator: self.__new_general_configuration_file = {} return + def __prepare_connectors_configuration(self, input_connector_config): + try: + self.__gateway._connectors_configs = {} + for connector in input_connector_config['thingsboard']['connectors']: + for input_connector in input_connector_config[connector['type']]: + if input_connector['name'] == connector['name']: + if not self.__gateway._connectors_configs.get(connector['type']): + self.__gateway._connectors_configs[connector['type']] = [] + self.__gateway._connectors_configs[connector['type']].append( + {"name": connector["name"], "config": {connector['configuration']: input_connector["config"]}}) + except Exception as e: + log.exception(e) + def __apply_new_connectors_configuration(self): try: - self.__gateway._load_connectors(self.__new_configuration["thingsboard"], False) + self.__prepare_connectors_configuration(self.__new_configuration) for connector_name in self.__gateway.available_connectors: try: self.__gateway.available_connectors[connector_name].close() diff --git a/thingsboard_gateway/gateway/tb_gateway_service.py b/thingsboard_gateway/gateway/tb_gateway_service.py index 1c7dd3c8..63ff5d96 100644 --- a/thingsboard_gateway/gateway/tb_gateway_service.py +++ b/thingsboard_gateway/gateway/tb_gateway_service.py @@ -189,11 +189,11 @@ class TBGatewayService: def __check_shared_attributes(self): self.tb_client.client.request_attributes(callback=self._attributes_parse) - def _load_connectors(self, config, from_file=True): + def _load_connectors(self, main_config): self._connectors_configs = {} - if not config.get("connectors"): + if not main_config.get("connectors"): raise Exception("Configuration for connectors not found, check your config file.") - for connector in config['connectors']: + for connector in main_config['connectors']: try: if connector.get('class') is not None: try: @@ -211,15 +211,14 @@ class TBGatewayService: log.exception(e) else: log.error("Connector with config %s - not found", safe_dump(connector)) - if from_file: - with open(self._config_dir + connector['configuration'], 'r') as conf_file: - try: - connector_conf = load(conf_file) - if not self._connectors_configs.get(connector['type']): - self._connectors_configs[connector['type']] = [] - self._connectors_configs[connector['type']].append({"name": connector["name"], "config": {connector['configuration']: connector_conf}}) - except Exception as e: - log.exception(e) + with open(self._config_dir + connector['configuration'], 'r') as conf_file: + try: + connector_conf = load(conf_file) + if not self._connectors_configs.get(connector['type']): + self._connectors_configs[connector['type']] = [] + self._connectors_configs[connector['type']].append({"name": connector["name"], "config": {connector['configuration']: connector_conf}}) + except Exception as e: + log.exception(e) except Exception as e: log.exception(e)