From 85f8cbca6af296a5b8e4d43e9f56daed0d7c195b Mon Sep 17 00:00:00 2001 From: Tomas Jelinek Date: Mon, 10 Aug 2020 12:17:01 +0200 Subject: [PATCH 1/2] rule: fix mixing 'and' and 'or' expressions --- pcs/lib/cib/rule/parsed_to_cib.py | 5 +++++ pcs_test/tier0/lib/cib/rule/test_parsed_to_cib.py | 4 ++-- pcs_test/tier1/test_cib_options.py | 11 +++++++++-- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/pcs/lib/cib/rule/parsed_to_cib.py b/pcs/lib/cib/rule/parsed_to_cib.py index 0fcae4f1..130663db 100644 --- a/pcs/lib/cib/rule/parsed_to_cib.py +++ b/pcs/lib/cib/rule/parsed_to_cib.py @@ -62,6 +62,11 @@ def __export_bool( { "id": create_subelement_id(parent_el, "rule", id_provider), "boolean-op": boolean.operator.lower(), + # Score or score-attribute is required for nested rules, otherwise + # the CIB is not valid. Pacemaker doesn't use the score of nested + # rules. Score for the top rule, which is used by pacemaker, is + # supposed to be set in the export function above. + "score": "0", }, ) for child in boolean.children: diff --git a/pcs_test/tier0/lib/cib/rule/test_parsed_to_cib.py b/pcs_test/tier0/lib/cib/rule/test_parsed_to_cib.py index f61fce99..fa639f7c 100644 --- a/pcs_test/tier0/lib/cib/rule/test_parsed_to_cib.py +++ b/pcs_test/tier0/lib/cib/rule/test_parsed_to_cib.py @@ -185,7 +185,7 @@ class Complex(Base): ), """ - + @@ -197,7 +197,7 @@ class Complex(Base): class="ocf" provider="heartbeat" type="Dummy" /> - + diff --git a/pcs_test/tier1/test_cib_options.py b/pcs_test/tier1/test_cib_options.py index ba8f3515..92dbaed1 100644 --- a/pcs_test/tier1/test_cib_options.py +++ b/pcs_test/tier1/test_cib_options.py @@ -254,14 +254,21 @@ class OpDefaultsSetCreate( self.assert_effect( ( f"{self.cli_command} set create id=X meta nam1=val1 " - "rule resource ::Dummy and op monitor" + "rule resource ::Dummy and (op start or op stop)" ), f"""\ <{self.cib_tag}> - + + + + -- 2.25.4