From 0a672951ac07341a254dfd52d97348be6a13db33 Mon Sep 17 00:00:00 2001
From: Ivan Devat <idevat@redhat.com>
Date: Fri, 11 Jan 2019 15:13:09 +0100
Subject: [PATCH] fix link options' names in cluster setup
---
pcs/lib/commands/test/cluster/test_setup.py | 27 +++++++++++++++------
pcs/lib/corosync/config_facade.py | 15 +++++++++---
2 files changed, 32 insertions(+), 10 deletions(-)
diff --git a/pcs/lib/commands/test/cluster/test_setup.py b/pcs/lib/commands/test/cluster/test_setup.py
index bc7b51f0..441c4d67 100644
--- a/pcs/lib/commands/test/cluster/test_setup.py
+++ b/pcs/lib/commands/test/cluster/test_setup.py
@@ -95,10 +95,10 @@ def add_key_prefix(prefix, options):
options = options or {}
return {f"{prefix}{key}": value for key, value in options.items()}
-def options_fixture(options):
+def options_fixture(options, template=OPTION_TEMPLATE):
options = options or {}
return "".join([
- OPTION_TEMPLATE.format(option=o, value=v)
+ template.format(option=o, value=v)
for o, v in sorted(options.items())
])
@@ -107,7 +107,7 @@ def corosync_conf_fixture(
links_numbers=None, quorum_options=None, totem_options=None,
transport_options=None, compression_options=None, crypto_options=None,
):
- # pylint: disable=too-many-arguments
+ # pylint: disable=too-many-arguments, too-many-locals
if transport_type == "knet" and not crypto_options:
crypto_options = {
"cipher": "aes256",
@@ -115,18 +115,31 @@ def corosync_conf_fixture(
}
interface_list = ""
if link_list:
+ knet_options = {
+ "link_priority",
+ "ping_interval",
+ "ping_precision",
+ "ping_timeout",
+ "pong_count",
+ "transport",
+ }
+
link_list = [dict(link) for link in link_list]
links_numbers = links_numbers if links_numbers else list(
range(constants.LINKS_KNET_MAX)
)
for i, link in enumerate(link_list):
link["linknumber"] = links_numbers[i]
+ link_translated = {}
+ for name, value in link.items():
+ if name in knet_options:
+ name = f"knet_{name}"
+ link_translated[name] = value
+ link_list[i] = link_translated
+
interface_list = "".join([
INTERFACE_TEMPLATE.format(
- option_list="".join([
- INTERFACE_OPTION_TEMPLATE.format(option=o, value=v)
- for o, v in sorted(link.items())
- ])
+ option_list=options_fixture(link, INTERFACE_OPTION_TEMPLATE)
) for link in sorted(
link_list, key=lambda item: item["linknumber"]
)
diff --git a/pcs/lib/corosync/config_facade.py b/pcs/lib/corosync/config_facade.py
index 13cc61b2..db98f435 100644
--- a/pcs/lib/corosync/config_facade.py
+++ b/pcs/lib/corosync/config_facade.py
@@ -260,6 +260,14 @@ class ConfigFacade:
dict options -- link options
"""
+ options_translate = {
+ "link_priority": "knet_link_priority",
+ "ping_interval": "knet_ping_interval",
+ "ping_precision": "knet_ping_precision",
+ "ping_timeout": "knet_ping_timeout",
+ "pong_count": "knet_pong_count",
+ "transport": "knet_transport",
+ }
totem_section = self.__ensure_section(self.config, "totem")[-1]
new_link_section = config_parser.Section("interface")
options_to_set = {}
@@ -268,9 +276,10 @@ class ConfigFacade:
# If broadcast == 1, transform it to broadcast == yes. Else do
# not put the option to the config at all.
if value in ("1", 1):
- options_to_set[name] = "yes"
- continue
- options_to_set[name] = value
+ value = "yes"
+ else:
+ continue
+ options_to_set[options_translate.get(name, name)] = value
self.__set_section_options([new_link_section], options_to_set)
totem_section.add_section(new_link_section)
self.__remove_empty_sections(self.config)
--
2.17.0