You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ni...@apache.org on 2021/04/19 15:28:06 UTC

[ignite] branch ignite-ducktape updated: IGNITE-14592 Incapsulate configuration preparation (#9019)

This is an automated email from the ASF dual-hosted git repository.

nizhikov pushed a commit to branch ignite-ducktape
in repository https://gitbox.apache.org/repos/asf/ignite.git


The following commit(s) were added to refs/heads/ignite-ducktape by this push:
     new c18062b  IGNITE-14592 Incapsulate configuration preparation (#9019)
c18062b is described below

commit c18062b8e75712ddd3fc7fff8ee9145c155abe94
Author: Nikolay <ni...@apache.org>
AuthorDate: Mon Apr 19 18:27:46 2021 +0300

    IGNITE-14592 Incapsulate configuration preparation (#9019)
---
 .../ignitetest/services/utils/ignite_aware.py      | 32 +---------------
 .../utils/ignite_configuration/__init__.py         | 43 +++++++++++++++++++++-
 2 files changed, 43 insertions(+), 32 deletions(-)

diff --git a/modules/ducktests/tests/ignitetest/services/utils/ignite_aware.py b/modules/ducktests/tests/ignitetest/services/utils/ignite_aware.py
index 62d7183..f402e69 100644
--- a/modules/ducktests/tests/ignitetest/services/utils/ignite_aware.py
+++ b/modules/ducktests/tests/ignitetest/services/utils/ignite_aware.py
@@ -19,7 +19,6 @@ This module contains the base class to build services aware of Ignite.
 import os
 import re
 import signal
-import socket
 import sys
 import time
 from abc import ABCMeta
@@ -36,14 +35,10 @@ from ignitetest.services.utils.ignite_spec import resolve_spec
 from ignitetest.services.utils.jmx_utils import ignite_jmx_mixin
 from ignitetest.services.utils.log_utils import monitor_log
 from ignitetest.services.utils.path import IgnitePathAware
-# pylint: disable=too-many-public-methods
-from ignitetest.services.utils.ssl.connector_configuration import ConnectorConfiguration
-from ignitetest.services.utils.ssl.ssl_params import get_ssl_params, is_ssl_enabled, IGNITE_SERVER_ALIAS, \
-    IGNITE_CLIENT_ALIAS
 from ignitetest.utils.enum import constructible
 
 
-# pylint: disable=R0902
+# pylint: disable=R0902,too-many-public-methods
 class IgniteAwareService(BackgroundThreadService, IgnitePathAware, metaclass=ABCMeta):
     """
     The base class to build services aware of Ignite.
@@ -92,28 +87,12 @@ class IgniteAwareService(BackgroundThreadService, IgnitePathAware, metaclass=ABC
         """
         Starts in async way.
         """
-        self.update_ssl_config_with_globals()
         super().start(**kwargs)
 
     def start(self, **kwargs):
         self.start_async(**kwargs)
         self.await_started()
 
-    def update_ssl_config_with_globals(self):
-        """
-        Update ssl configuration from globals.
-        """
-        ssl_params = None
-        if self.config.ssl_params is None and is_ssl_enabled(self.globals):
-            ssl_params = get_ssl_params(
-                self.globals,
-                IGNITE_CLIENT_ALIAS if self.config.client_mode else IGNITE_SERVER_ALIAS
-            )
-        if ssl_params:
-            self.config = self.config._replace(ssl_params=ssl_params,
-                                               connector_configuration=ConnectorConfiguration(
-                                                   ssl_enabled=True, ssl_params=ssl_params))
-
     def await_started(self):
         """
         Awaits start finished.
@@ -192,14 +171,7 @@ class IgniteAwareService(BackgroundThreadService, IgnitePathAware, metaclass=ABC
         self._prepare_configs(node)
 
     def _prepare_configs(self, node):
-        if not self.config.consistent_id:
-            config = self.config._replace(consistent_id=node.account.externally_routable_ip)
-        else:
-            config = self.config
-
-        config = config._replace(local_host=socket.gethostbyname(node.account.hostname))
-
-        config.discovery_spi.prepare_on_start(cluster=self)
+        config = self.config.prepare_for_env(globals=self.globals, node=node, cluster=self)
 
         for name, template in self.spec.config_templates:
             config_txt = template.render(config_dir=self.config_dir, work_dir=self.work_dir, config=config)
diff --git a/modules/ducktests/tests/ignitetest/services/utils/ignite_configuration/__init__.py b/modules/ducktests/tests/ignitetest/services/utils/ignite_configuration/__init__.py
index c93f9e0..fe6179a 100644
--- a/modules/ducktests/tests/ignitetest/services/utils/ignite_configuration/__init__.py
+++ b/modules/ducktests/tests/ignitetest/services/utils/ignite_configuration/__init__.py
@@ -16,7 +16,7 @@
 """
 This module contains IgniteConfiguration classes and utilities.
 """
-
+import socket
 from typing import NamedTuple
 
 from ignitetest.services.utils.ignite_configuration.communication import CommunicationSpi, TcpCommunicationSpi
@@ -24,10 +24,12 @@ from ignitetest.services.utils.ssl.client_connector_configuration import ClientC
 from ignitetest.services.utils.ssl.connector_configuration import ConnectorConfiguration
 from ignitetest.services.utils.ignite_configuration.data_storage import DataStorageConfiguration
 from ignitetest.services.utils.ignite_configuration.discovery import DiscoverySpi, TcpDiscoverySpi
-from ignitetest.services.utils.ssl.ssl_params import SslParams
+from ignitetest.services.utils.ssl.ssl_params import SslParams, is_ssl_enabled, get_ssl_params, IGNITE_CLIENT_ALIAS, \
+    IGNITE_SERVER_ALIAS
 from ignitetest.utils.version import IgniteVersion, DEV_BRANCH
 
 
+# pylint: disable=no-member
 class IgniteConfiguration(NamedTuple):
     """
     Ignite configuration.
@@ -55,6 +57,43 @@ class IgniteConfiguration(NamedTuple):
     rebalance_batches_prefetch_count: int = None
     rebalance_throttle: int = None
 
+    def __prepare_ssl(self, test_globals):
+        """
+        Updates ssl configuration from globals.
+        """
+        ssl_params = None
+        if self.ssl_params is None and is_ssl_enabled(test_globals):
+            ssl_params = get_ssl_params(
+                test_globals,
+                IGNITE_CLIENT_ALIAS if self.client_mode else IGNITE_SERVER_ALIAS
+            )
+        if ssl_params:
+            return self._replace(ssl_params=ssl_params,
+                                 connector_configuration=ConnectorConfiguration(ssl_enabled=True,
+                                                                                ssl_params=ssl_params))
+        return self
+
+    def __prepare_discovery(self, node, cluster):
+        """
+        Updates discovery configuration based on current environment.
+        """
+        if not self.consistent_id:
+            config = self._replace(consistent_id=node.account.externally_routable_ip)
+        else:
+            config = self
+
+        config = config._replace(local_host=socket.gethostbyname(node.account.hostname))
+        config.discovery_spi.prepare_on_start(cluster=cluster)
+
+        return config
+
+    # pylint: disable=protected-access
+    def prepare_for_env(self, test_globals, node, cluster):
+        """
+        Updates configuration based on current environment.
+        """
+        return self.__prepare_ssl(test_globals).__prepare_discovery(node, cluster)
+
 
 class IgniteClientConfiguration(IgniteConfiguration):
     """