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/29 14:00:50 UTC
[ignite] branch ignite-ducktape updated: IGNITE-14520 Plugins
support in Ignite configuration (#9008)
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 ee3f454 IGNITE-14520 Plugins support in Ignite configuration (#9008)
ee3f454 is described below
commit ee3f454b7c26b67faed7fd8a668f729ba2d0daaf
Author: Mikhail Filatov <mi...@mfilatov.ru>
AuthorDate: Thu Apr 29 17:00:29 2021 +0300
IGNITE-14520 Plugins support in Ignite configuration (#9008)
Co-authored-by: Nikolay <ni...@apache.org>
---
.../utils/check_get_ssl_params_from_globals.py | 12 +++++--
modules/ducktests/tests/docker/ducker-ignite | 5 +++
.../ignitetest/services/utils/config_template.py | 20 +++++------
.../ignitetest/services/utils/ignite_aware.py | 6 ++--
.../utils/ignite_configuration/__init__.py | 15 +++++---
.../binary_configuration.py} | 9 +++--
.../tests/ignitetest/services/utils/ignite_spec.py | 13 ++++---
.../tests/ignitetest/services/utils/path.py | 4 +++
.../utils/ssl/client_connector_configuration.py | 10 ++++++
.../services/utils/ssl/connector_configuration.py | 1 +
.../ignitetest/services/utils/ssl/ssl_params.py | 5 ++-
.../utils/templates/connector_configuration.j2 | 1 +
.../services/utils/templates/ignite.xml.j2 | 40 ++++++++++++++++++++--
.../services/utils/templates/misc_macro.j2 | 22 ++++++++++++
.../services/utils/templates/ssl_params_macro.j2 | 8 +++++
15 files changed, 139 insertions(+), 32 deletions(-)
diff --git a/modules/ducktests/tests/checks/utils/check_get_ssl_params_from_globals.py b/modules/ducktests/tests/checks/utils/check_get_ssl_params_from_globals.py
index 4d0b7c7..67343dd 100644
--- a/modules/ducktests/tests/checks/utils/check_get_ssl_params_from_globals.py
+++ b/modules/ducktests/tests/checks/utils/check_get_ssl_params_from_globals.py
@@ -95,15 +95,21 @@ class TestParams:
expected_ssl_params_jks = {'key_store_path': os.path.join(CERT_DIR1, TEST_KEYSTORE_JKS),
'key_store_password': TEST_PASSWORD,
'trust_store_path': os.path.join(CERT_DIR1, TEST_TRUSTSTORE_JKS),
- 'trust_store_password': TEST_PASSWORD}
+ 'trust_store_password': TEST_PASSWORD,
+ 'cipher_suites': None,
+ 'trust_managers': None}
expected_ssl_params_path = {'key_store_path': os.path.join(CERT_DIR2, TEST_KEYSTORE_JKS),
'key_store_password': TEST_PASSWORD,
'trust_store_path': os.path.join(CERT_DIR2, TEST_TRUSTSTORE_JKS),
- 'trust_store_password': TEST_PASSWORD}
+ 'trust_store_password': TEST_PASSWORD,
+ 'cipher_suites': None,
+ 'trust_managers': None}
expected_ssl_params_default = {'key_store_path': os.path.join(CERT_DIR1, DEFAULT_CLIENT_KEYSTORE),
'key_store_password': DEFAULT_PASSWORD,
'trust_store_path': os.path.join(CERT_DIR1, DEFAULT_TRUSTSTORE),
- 'trust_store_password': DEFAULT_PASSWORD}
+ 'trust_store_password': DEFAULT_PASSWORD,
+ 'cipher_suites': None,
+ 'trust_managers': None}
class CheckCaseJks:
diff --git a/modules/ducktests/tests/docker/ducker-ignite b/modules/ducktests/tests/docker/ducker-ignite
index 22cb4d3..b56c64c 100755
--- a/modules/ducktests/tests/docker/ducker-ignite
+++ b/modules/ducktests/tests/docker/ducker-ignite
@@ -479,6 +479,11 @@ ducker_test() {
must_pushd "${ignite_dir}"
#(test mvn) && mvn package -DskipTests -Dmaven.javadoc.skip=true -Plgpl,-examples,-clean-libs,-release,-scala,-clientDocs
must_popd
+ if [[ -n "${DUCKTAPE_EXTRA_SETUP}" ]]; then
+ echo "executing extra ducktape setup with '${DUCKTAPE_EXTRA_SETUP}'"
+ docker exec --user=root ducker01 bash -c "${DUCKTAPE_EXTRA_SETUP}"
+ [[ $? -ne 0 ]] && die "failed to execute extra ducktape setup."
+ fi
cmd="cd /opt/ignite-dev && ducktape --cluster-file /opt/ignite-dev/modules/ducktests/tests/docker/build/cluster.json $args"
echo "docker exec ducker01 bash -c \"${cmd}\""
exec docker exec --user=ducker ducker01 bash -c "${cmd}"
diff --git a/modules/ducktests/tests/ignitetest/services/utils/config_template.py b/modules/ducktests/tests/ignitetest/services/utils/config_template.py
index 7ed35f9..2d430aa 100644
--- a/modules/ducktests/tests/ignitetest/services/utils/config_template.py
+++ b/modules/ducktests/tests/ignitetest/services/utils/config_template.py
@@ -20,9 +20,13 @@ import os
from jinja2 import FileSystemLoader, Environment
-DEFAULT_CONFIG_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), "templates")
-DEFAULT_IGNITE_CONF = os.path.join(DEFAULT_CONFIG_PATH, "ignite.xml.j2")
-DEFAULT_THIN_CLIENT_CONF = os.path.join(DEFAULT_CONFIG_PATH, "thin_client_config.xml.j2")
+IGNITE_TEMPLATE_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), "templates")
+ZK_TEMPLATE_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "zk", "templates")
+DEFAULT_IGNITE_CONF = "ignite.xml.j2"
+DEFAULT_THIN_CLIENT_CONF = "thin_client_config.xml.j2"
+DEFAULT_LOG4J_CONF = "log4j.xml.j2"
+
+TEMPLATE_PATHES = [IGNITE_TEMPLATE_PATH, ZK_TEMPLATE_PATH]
class ConfigTemplate:
@@ -30,13 +34,9 @@ class ConfigTemplate:
Basic configuration.
"""
def __init__(self, path):
- tmpl_dir = os.path.dirname(path)
- tmpl_file = os.path.basename(path)
-
- tmpl_loader = FileSystemLoader(searchpath=[DEFAULT_CONFIG_PATH, tmpl_dir])
- env = Environment(loader=tmpl_loader)
+ env = Environment(loader=FileSystemLoader(searchpath=TEMPLATE_PATHES))
- self.template = env.get_template(tmpl_file)
+ self.template = env.get_template(path)
self.default_params = {}
def render(self, **kwargs):
@@ -79,4 +79,4 @@ class IgniteLoggerConfigTemplate(ConfigTemplate):
Ignite logger configuration.
"""
def __init__(self):
- super().__init__(os.path.join(DEFAULT_CONFIG_PATH, "log4j.xml.j2"))
+ super().__init__(DEFAULT_LOG4J_CONF)
diff --git a/modules/ducktests/tests/ignitetest/services/utils/ignite_aware.py b/modules/ducktests/tests/ignitetest/services/utils/ignite_aware.py
index 936093f..663d2f2 100644
--- a/modules/ducktests/tests/ignitetest/services/utils/ignite_aware.py
+++ b/modules/ducktests/tests/ignitetest/services/utils/ignite_aware.py
@@ -190,9 +190,11 @@ class IgniteAwareService(BackgroundThreadService, IgnitePathAware, metaclass=ABC
node.account.copy_to(os.path.join(local_shared_dir, file), self.shared_root)
def _prepare_configs(self, node):
- config = self.config.prepare_for_env(self.globals, self.shared_root, node, self)
+ config = self.spec \
+ .extend_config(self.config) \
+ .prepare_for_env(self, node)
- for name, template in self.spec.config_templates:
+ for name, template in self.spec.config_templates():
config_txt = template.render(config_dir=self.config_dir, work_dir=self.work_dir, config=config)
node.account.create_file(os.path.join(self.config_dir, name), config_txt)
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 5442488..18b93c1 100644
--- a/modules/ducktests/tests/ignitetest/services/utils/ignite_configuration/__init__.py
+++ b/modules/ducktests/tests/ignitetest/services/utils/ignite_configuration/__init__.py
@@ -25,6 +25,7 @@ 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.ignite_configuration.binary_configuration import BinaryConfiguration
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
@@ -45,6 +46,7 @@ class IgniteConfiguration(NamedTuple):
sys_worker_blocked_timeout: int = 10000
properties: str = None
data_storage: DataStorageConfiguration = None
+ binary_configuration: BinaryConfiguration = None
caches: list = []
local_host: str = None
ssl_params: SslParams = None
@@ -52,11 +54,16 @@ class IgniteConfiguration(NamedTuple):
client_connector_configuration: ClientConnectorConfiguration = None
auth_enabled: bool = False
plugins: list = []
+ ext_beans: list = []
+ peer_class_loading_enabled: bool = True
metric_exporter: str = None
rebalance_thread_pool_size: int = None
rebalance_batch_size: int = None
rebalance_batches_prefetch_count: int = None
rebalance_throttle: int = None
+ local_event_listeners: str = None
+ include_event_types: str = None
+ event_storage_spi: str = None
def __prepare_ssl(self, test_globals, shared_root):
"""
@@ -75,7 +82,7 @@ class IgniteConfiguration(NamedTuple):
ssl_params=ssl_params))
return self
- def __prepare_discovery(self, node, cluster):
+ def __prepare_discovery(self, cluster, node):
"""
Updates discovery configuration based on current environment.
"""
@@ -90,11 +97,11 @@ class IgniteConfiguration(NamedTuple):
return config
# pylint: disable=protected-access
- def prepare_for_env(self, test_globals, shared_root, node, cluster):
+ def prepare_for_env(self, cluster, node):
"""
Updates configuration based on current environment.
"""
- return self.__prepare_ssl(test_globals, shared_root).__prepare_discovery(node, cluster)
+ return self.__prepare_ssl(cluster.globals, cluster.shared_root).__prepare_discovery(cluster, node)
@property
def service_type(self):
@@ -119,7 +126,7 @@ class IgniteThinClientConfiguration(NamedTuple):
version: IgniteVersion = DEV_BRANCH
# pylint: disable=unused-argument
- def prepare_for_env(self, test_globals, shared_root, node, cluster):
+ def prepare_for_env(self, cluster, node):
"""
Updates configuration based on current environment.
"""
diff --git a/modules/ducktests/tests/ignitetest/services/utils/ssl/client_connector_configuration.py b/modules/ducktests/tests/ignitetest/services/utils/ignite_configuration/binary_configuration.py
similarity index 78%
copy from modules/ducktests/tests/ignitetest/services/utils/ssl/client_connector_configuration.py
copy to modules/ducktests/tests/ignitetest/services/utils/ignite_configuration/binary_configuration.py
index 819e8b1..458580f 100644
--- a/modules/ducktests/tests/ignitetest/services/utils/ssl/client_connector_configuration.py
+++ b/modules/ducktests/tests/ignitetest/services/utils/ignite_configuration/binary_configuration.py
@@ -14,15 +14,14 @@
# limitations under the License
"""
-This module contains classes and utilities for Ignite ConnectorConfiguration.
+This module contains classes and utilities for Ignite Binary configuration.
"""
from typing import NamedTuple
-class ClientConnectorConfiguration(NamedTuple):
+class BinaryConfiguration(NamedTuple):
"""
- Ignite ClientConnectorConfiguration.
- Used to configure thin client properties.
+ Ignite Binary Configuration
"""
- port: int = 10800
+ compact_footer: bool = True
diff --git a/modules/ducktests/tests/ignitetest/services/utils/ignite_spec.py b/modules/ducktests/tests/ignitetest/services/utils/ignite_spec.py
index bdc2cd4..c4ac4b0 100644
--- a/modules/ducktests/tests/ignitetest/services/utils/ignite_spec.py
+++ b/modules/ducktests/tests/ignitetest/services/utils/ignite_spec.py
@@ -92,7 +92,6 @@ class IgniteSpec(metaclass=ABCMeta):
"-Dlog4j.configuration=file:" + self.service.log_config_file,
"-Dlog4j.configDebug=true"])
- @property
def config_templates(self):
"""
:return: config that service will use to start on a node
@@ -111,6 +110,13 @@ class IgniteSpec(metaclass=ABCMeta):
return config_templates
+ # pylint: disable=unused-argument,no-self-use
+ def extend_config(self, config):
+ """
+ Extend config with custom variables
+ """
+ return config
+
def __home(self, product=None):
"""
Get home directory for current spec.
@@ -180,8 +186,7 @@ class IgniteSpec(metaclass=ABCMeta):
script_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "..", "..", "certs")
- self.__runcmd(f"cp {script_dir}/*.sh {local_dir}")
- self.__runcmd(f"{local_dir}/mkcerts.sh")
+ self._runcmd(f"{script_dir}/mkcerts.sh {local_dir}")
return local_dir
@@ -196,7 +201,7 @@ class IgniteSpec(metaclass=ABCMeta):
"""Properly adds JVM options to current"""
self.jvm_opts = merge_jvm_settings(self.jvm_opts, opts)
- def __runcmd(self, cmd):
+ def _runcmd(self, cmd):
self.service.logger.debug(cmd)
proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
stdout, _ = proc.communicate()
diff --git a/modules/ducktests/tests/ignitetest/services/utils/path.py b/modules/ducktests/tests/ignitetest/services/utils/path.py
index ed14468..efac7a3 100644
--- a/modules/ducktests/tests/ignitetest/services/utils/path.py
+++ b/modules/ducktests/tests/ignitetest/services/utils/path.py
@@ -66,6 +66,10 @@ class PathAware:
"config": {
"path": self.config_dir,
"collect_default": True
+ },
+ "shared": {
+ "path": self.shared_root,
+ "collect_default": True
}
})
diff --git a/modules/ducktests/tests/ignitetest/services/utils/ssl/client_connector_configuration.py b/modules/ducktests/tests/ignitetest/services/utils/ssl/client_connector_configuration.py
index 819e8b1..5757fdf 100644
--- a/modules/ducktests/tests/ignitetest/services/utils/ssl/client_connector_configuration.py
+++ b/modules/ducktests/tests/ignitetest/services/utils/ssl/client_connector_configuration.py
@@ -19,6 +19,8 @@ This module contains classes and utilities for Ignite ConnectorConfiguration.
from typing import NamedTuple
+from ignitetest.services.utils.ssl.ssl_params import SslParams
+
class ClientConnectorConfiguration(NamedTuple):
"""
@@ -26,3 +28,11 @@ class ClientConnectorConfiguration(NamedTuple):
Used to configure thin client properties.
"""
port: int = 10800
+ ssl_enabled: bool = False
+ use_ignite_ssl_context_factory: bool = True
+ ssl_client_auth: bool = False
+ ssl_params: SslParams = None
+ ssl_enabled: bool = False
+ use_ignite_ssl_context_factory: bool = True
+ ssl_client_auth: bool = False
+ ssl_params: SslParams = None
diff --git a/modules/ducktests/tests/ignitetest/services/utils/ssl/connector_configuration.py b/modules/ducktests/tests/ignitetest/services/utils/ssl/connector_configuration.py
index 6da08c1..8770cd7 100644
--- a/modules/ducktests/tests/ignitetest/services/utils/ssl/connector_configuration.py
+++ b/modules/ducktests/tests/ignitetest/services/utils/ssl/connector_configuration.py
@@ -28,4 +28,5 @@ class ConnectorConfiguration(NamedTuple):
Used to connect from ControlUtility (control.sh).
"""
ssl_enabled: bool = False
+ ssl_client_auth: bool = False
ssl_params: SslParams = None
diff --git a/modules/ducktests/tests/ignitetest/services/utils/ssl/ssl_params.py b/modules/ducktests/tests/ignitetest/services/utils/ssl/ssl_params.py
index b3b3af1..c769f6d 100644
--- a/modules/ducktests/tests/ignitetest/services/utils/ssl/ssl_params.py
+++ b/modules/ducktests/tests/ignitetest/services/utils/ssl/ssl_params.py
@@ -47,7 +47,8 @@ class SslParams:
# pylint: disable=R0913
def __init__(self, root_dir: str, key_store_jks: str = None, key_store_password: str = DEFAULT_PASSWORD,
trust_store_jks: str = DEFAULT_TRUSTSTORE, trust_store_password: str = DEFAULT_PASSWORD,
- key_store_path: str = None, trust_store_path: str = None):
+ key_store_path: str = None, trust_store_path: str = None, cipher_suites: str = None,
+ trust_managers: str = None):
if not key_store_jks and not key_store_path:
raise Exception("Keystore must be specified to init SslParams")
@@ -55,6 +56,8 @@ class SslParams:
self.key_store_password = key_store_password
self.trust_store_path = trust_store_path if trust_store_path else os.path.join(root_dir, trust_store_jks)
self.trust_store_password = trust_store_password
+ self.cipher_suites = cipher_suites
+ self.trust_managers = trust_managers
def get_ssl_params(_globals: dict, shared_root: str, alias: str):
diff --git a/modules/ducktests/tests/ignitetest/services/utils/templates/connector_configuration.j2 b/modules/ducktests/tests/ignitetest/services/utils/templates/connector_configuration.j2
index 1fe7207..ee61687 100644
--- a/modules/ducktests/tests/ignitetest/services/utils/templates/connector_configuration.j2
+++ b/modules/ducktests/tests/ignitetest/services/utils/templates/connector_configuration.j2
@@ -24,6 +24,7 @@
<property name="sslFactory">
{{ ssl_params_util.ssl_params(config.ssl_params) }}
</property>
+ <property name="sslClientAuth" value="{{ config.ssl_client_auth }}"/>
{% endif %}
</bean>
{% endmacro %}
diff --git a/modules/ducktests/tests/ignitetest/services/utils/templates/ignite.xml.j2 b/modules/ducktests/tests/ignitetest/services/utils/templates/ignite.xml.j2
index a74a5d8..f8993d0 100644
--- a/modules/ducktests/tests/ignitetest/services/utils/templates/ignite.xml.j2
+++ b/modules/ducktests/tests/ignitetest/services/utils/templates/ignite.xml.j2
@@ -27,8 +27,9 @@
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans.xsd">
+ xmlns:util="http://www.springframework.org/schema/util" xsi:schemaLocation="
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+ http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
<bean class="org.apache.ignite.configuration.IgniteConfiguration">
<property name="workDirectory" value="{{ work_dir }}" />
<property name="gridLogger">
@@ -41,6 +42,7 @@
<property name="consistentId" value="{{ config.consistent_id }}"/>
<property name="failureDetectionTimeout" value="{{ config.failure_detection_timeout }}"/>
<property name="systemWorkerBlockedTimeout" value="{{ config.sys_worker_blocked_timeout }}"/>
+ <property name="peerClassLoadingEnabled" value="{{ config.peer_class_loading_enabled }}"/>
<property name="authenticationEnabled" value="{{ config.auth_enabled | lower }}"/>
{% if config.rebalance_thread_pool_size %}
<property name="rebalanceThreadPoolSize" value="{{ config.rebalance_thread_pool_size }}"/>
@@ -93,9 +95,41 @@
{% if config.client_connector_configuration %}
<property name="clientConnectorConfiguration">
<bean class="org.apache.ignite.configuration.ClientConnectorConfiguration">
- <property name="port" value="{{ config.client_connector_configuration.port }}"/>
+ <property name="port" value="{{ config.client_connector_configuration.port }}"/>
+ {% if config.client_connector_configuration.ssl_enabled %}
+ <property name="sslEnabled" value="true"/>
+ <property name="sslContextFactory">
+ {{ ssl_params_util.ssl_params(config.client_connector_configuration.ssl_params) }}
+ </property>
+ <property name="useIgniteSslContextFactory" value="{{ config.client_connector_configuration.use_ignite_ssl_context_factory }}"/>
+ <property name="sslClientAuth" value="{{ config.client_connector_configuration.ssl_client_auth }}"/>
+ {% endif %}
</bean>
</property>
{% endif %}
+
+ {% if config.binary_configuration %}
+ <property name="binaryConfiguration">
+ <bean class="org.apache.ignite.configuration.BinaryConfiguration">
+ <property name="compactFooter" value="{{ config.binary_configuration.compact_footer }}"/>
+ </bean>
+ </property>
+ {% endif %}
+
+ {% if config.local_event_listeners %}
+ <property name="localEventListeners" ref="{{ config.local_event_listeners }}"/>
+ {% endif %}
+
+ {% if config.include_event_types %}
+ <property name="includeEventTypes" ref="{{ config.include_event_types }}"/>
+ {% endif %}
+
+ {% if config.event_storage_spi %}
+ <property name="eventStorageSpi" ref="{{ config.event_storage_spi }}"/>
+ {% endif %}
+
+ {{ misc_utils.plugins(config) }}
</bean>
+
+ {{ misc_utils.ext_beans(config) }}
</beans>
diff --git a/modules/ducktests/tests/ignitetest/services/utils/templates/misc_macro.j2 b/modules/ducktests/tests/ignitetest/services/utils/templates/misc_macro.j2
index 892453b..f34f211 100644
--- a/modules/ducktests/tests/ignitetest/services/utils/templates/misc_macro.j2
+++ b/modules/ducktests/tests/ignitetest/services/utils/templates/misc_macro.j2
@@ -22,3 +22,25 @@
<property name="activeOnStart" value="{{ 'false' if state == 'INACTIVE' else 'true'}}"/>
{% endif %}
{% endmacro %}
+
+{% macro plugins(config) %}
+ {% if config.plugins %}
+ <property name="pluginProviders">
+ <list>
+ {% for plugin in config.plugins %}
+ {% import plugin[0] as plugin_template -%}
+ {{ plugin_template.apply(config, plugin[1]) }}
+ {% endfor %}
+ </list>
+ </property>
+ {% endif %}
+{% endmacro %}
+
+{% macro ext_beans(config) %}
+ {% if config.ext_beans %}
+ {% for ext_bean in config.ext_beans %}
+ {% import ext_bean[0] as bean_template -%}
+ {{ bean_template.apply(config, ext_bean[1]) }}
+ {% endfor %}
+ {% endif %}
+{% endmacro %}
diff --git a/modules/ducktests/tests/ignitetest/services/utils/templates/ssl_params_macro.j2 b/modules/ducktests/tests/ignitetest/services/utils/templates/ssl_params_macro.j2
index 8d519c9..2b21fd7 100644
--- a/modules/ducktests/tests/ignitetest/services/utils/templates/ssl_params_macro.j2
+++ b/modules/ducktests/tests/ignitetest/services/utils/templates/ssl_params_macro.j2
@@ -21,5 +21,13 @@
<property name="keyStorePassword" value="{{ ctx.key_store_password }}"/>
<property name="trustStoreFilePath" value="{{ ctx.trust_store_path }}"/>
<property name="trustStorePassword" value="{{ ctx.trust_store_password }}"/>
+
+ {% if ctx.cipher_suites %}
+ <property name="cipherSuites" value="{{ ctx.cipher_suites }}"/>
+ {% endif %}
+
+ {% if ctx.trust_managers %}
+ <property name="trustManagers" ref="{{ ctx.trust_managers }}"/>
+ {% endif %}
</bean>
{% endmacro %}