Makes the output cleaner and won't change unrelated config properties because of Data::Dumper's space indentation if rule configs are modified in future patches.
Suggested-by: Thomas Lamprecht <t.lampre...@proxmox.com> Signed-off-by: Daniel Kral <d.k...@proxmox.com> --- ...efaults-for-node-affinity-rules.cfg.expect | 116 ++++---- ...lts-for-resource-affinity-rules.cfg.expect | 72 ++--- ...nt-node-resource-affinity-rules.cfg.expect | 130 ++++----- ...sistent-resource-affinity-rules.cfg.expect | 10 +- ...egative-resource-affinity-rules.cfg.expect | 52 ++-- ...fective-resource-affinity-rules.cfg.expect | 10 +- ...egative-resource-affinity-rules.cfg.expect | 254 +++++++++--------- ...ositive-resource-affinity-rules.cfg.expect | 218 +++++++-------- ...egative-resource-affinity-rules.cfg.expect | 142 +++++----- ...ositive-resource-affinity-rules.cfg.expect | 136 +++++----- ...ty-with-resource-affinity-rules.cfg.expect | 84 +++--- ...rce-refs-in-node-affinity-rules.cfg.expect | 116 ++++---- src/test/test_rules_config.pl | 9 +- 13 files changed, 673 insertions(+), 676 deletions(-) diff --git a/src/test/rules_cfgs/defaults-for-node-affinity-rules.cfg.expect b/src/test/rules_cfgs/defaults-for-node-affinity-rules.cfg.expect index 59a2c364..8ea928f2 100644 --- a/src/test/rules_cfgs/defaults-for-node-affinity-rules.cfg.expect +++ b/src/test/rules_cfgs/defaults-for-node-affinity-rules.cfg.expect @@ -1,60 +1,60 @@ --- Log --- --- Config --- -$VAR1 = { - 'digest' => 'c96c9de143221a82e44efa8bb4814b8248a8ea11', - 'ids' => { - 'node-affinity-defaults' => { - 'nodes' => { - 'node1' => { - 'priority' => 0 - } - }, - 'resources' => { - 'vm:101' => 1 - }, - 'type' => 'node-affinity' - }, - 'node-affinity-disabled' => { - 'disable' => 1, - 'nodes' => { - 'node2' => { - 'priority' => 0 - } - }, - 'resources' => { - 'vm:102' => 1 - }, - 'type' => 'node-affinity' - }, - 'node-affinity-disabled-explicit' => { - 'disable' => 1, - 'nodes' => { - 'node2' => { - 'priority' => 0 - } - }, - 'resources' => { - 'vm:103' => 1 - }, - 'type' => 'node-affinity' - }, - 'node-affinity-strict' => { - 'nodes' => { - 'node3' => { - 'priority' => 0 - } - }, - 'resources' => { - 'vm:104' => 1 - }, - 'strict' => 1, - 'type' => 'node-affinity' - } - }, - 'order' => { - 'node-affinity-defaults' => 1, - 'node-affinity-disabled' => 2, - 'node-affinity-disabled-explicit' => 3, - 'node-affinity-strict' => 4 - } - }; +{ + "digest" : "c96c9de143221a82e44efa8bb4814b8248a8ea11", + "ids" : { + "node-affinity-defaults" : { + "nodes" : { + "node1" : { + "priority" : 0 + } + }, + "resources" : { + "vm:101" : 1 + }, + "type" : "node-affinity" + }, + "node-affinity-disabled" : { + "disable" : 1, + "nodes" : { + "node2" : { + "priority" : 0 + } + }, + "resources" : { + "vm:102" : 1 + }, + "type" : "node-affinity" + }, + "node-affinity-disabled-explicit" : { + "disable" : 1, + "nodes" : { + "node2" : { + "priority" : 0 + } + }, + "resources" : { + "vm:103" : 1 + }, + "type" : "node-affinity" + }, + "node-affinity-strict" : { + "nodes" : { + "node3" : { + "priority" : 0 + } + }, + "resources" : { + "vm:104" : 1 + }, + "strict" : 1, + "type" : "node-affinity" + } + }, + "order" : { + "node-affinity-defaults" : 1, + "node-affinity-disabled" : 2, + "node-affinity-disabled-explicit" : 3, + "node-affinity-strict" : 4 + } +} diff --git a/src/test/rules_cfgs/defaults-for-resource-affinity-rules.cfg.expect b/src/test/rules_cfgs/defaults-for-resource-affinity-rules.cfg.expect index 7384b0b8..7af19a18 100644 --- a/src/test/rules_cfgs/defaults-for-resource-affinity-rules.cfg.expect +++ b/src/test/rules_cfgs/defaults-for-resource-affinity-rules.cfg.expect @@ -1,38 +1,38 @@ --- Log --- --- Config --- -$VAR1 = { - 'digest' => '9ac7cc517f02c41e3403085ec02f6a9259f2ac94', - 'ids' => { - 'resource-affinity-defaults' => { - 'affinity' => 'negative', - 'resources' => { - 'vm:101' => 1, - 'vm:102' => 1 - }, - 'type' => 'resource-affinity' - }, - 'resource-affinity-disabled' => { - 'affinity' => 'negative', - 'disable' => 1, - 'resources' => { - 'vm:201' => 1, - 'vm:202' => 1 - }, - 'type' => 'resource-affinity' - }, - 'resource-affinity-disabled-explicit' => { - 'affinity' => 'negative', - 'disable' => 1, - 'resources' => { - 'vm:301' => 1, - 'vm:302' => 1 - }, - 'type' => 'resource-affinity' - } - }, - 'order' => { - 'resource-affinity-defaults' => 1, - 'resource-affinity-disabled' => 2, - 'resource-affinity-disabled-explicit' => 3 - } - }; +{ + "digest" : "9ac7cc517f02c41e3403085ec02f6a9259f2ac94", + "ids" : { + "resource-affinity-defaults" : { + "affinity" : "negative", + "resources" : { + "vm:101" : 1, + "vm:102" : 1 + }, + "type" : "resource-affinity" + }, + "resource-affinity-disabled" : { + "affinity" : "negative", + "disable" : 1, + "resources" : { + "vm:201" : 1, + "vm:202" : 1 + }, + "type" : "resource-affinity" + }, + "resource-affinity-disabled-explicit" : { + "affinity" : "negative", + "disable" : 1, + "resources" : { + "vm:301" : 1, + "vm:302" : 1 + }, + "type" : "resource-affinity" + } + }, + "order" : { + "resource-affinity-defaults" : 1, + "resource-affinity-disabled" : 2, + "resource-affinity-disabled-explicit" : 3 + } +} diff --git a/src/test/rules_cfgs/inconsistent-node-resource-affinity-rules.cfg.expect b/src/test/rules_cfgs/inconsistent-node-resource-affinity-rules.cfg.expect index 80222c86..ad517077 100644 --- a/src/test/rules_cfgs/inconsistent-node-resource-affinity-rules.cfg.expect +++ b/src/test/rules_cfgs/inconsistent-node-resource-affinity-rules.cfg.expect @@ -10,68 +10,68 @@ Drop rule 'vm501-vm502-must-be-kept-together', because resources are in multiple Drop rule 'vm502-vm503-must-be-kept-together', because resources are in multiple node affinity rules. Drop rule 'vm503-must-be-on-node2', because at least one resource is in a positive resource affinity rule and there are other resources in at least one other node affinity rule already. --- Config --- -$VAR1 = { - 'digest' => '00a70f4c2bdd41aed16b6e5b9860cd9fb7f0f098', - 'ids' => { - 'vm101-vm102-must-be-kept-together' => { - 'affinity' => 'positive', - 'resources' => { - 'vm:101' => 1, - 'vm:102' => 1 - }, - 'type' => 'resource-affinity' - }, - 'vm101-vm102-must-be-on-node1' => { - 'nodes' => { - 'node1' => { - 'priority' => 0 - } - }, - 'resources' => { - 'vm:101' => 1, - 'vm:102' => 1 - }, - 'strict' => 1, - 'type' => 'node-affinity' - }, - 'vm201-must-be-on-node1' => { - 'nodes' => { - 'node1' => { - 'priority' => 0 - } - }, - 'resources' => { - 'vm:201' => 1 - }, - 'strict' => 1, - 'type' => 'node-affinity' - }, - 'vm201-vm202-must-be-kept-separate' => { - 'affinity' => 'negative', - 'resources' => { - 'vm:201' => 1, - 'vm:202' => 1 - }, - 'type' => 'resource-affinity' - }, - 'vm202-must-be-on-node2' => { - 'nodes' => { - 'node2' => { - 'priority' => 0 - } - }, - 'resources' => { - 'vm:202' => 1 - }, - 'strict' => 1, - 'type' => 'node-affinity' - } - }, - 'order' => { - 'vm101-vm102-must-be-kept-together' => 2, - 'vm101-vm102-must-be-on-node1' => 1, - 'vm201-must-be-on-node1' => 3, - 'vm201-vm202-must-be-kept-separate' => 5, - 'vm202-must-be-on-node2' => 4 - } - }; +{ + "digest" : "00a70f4c2bdd41aed16b6e5b9860cd9fb7f0f098", + "ids" : { + "vm101-vm102-must-be-kept-together" : { + "affinity" : "positive", + "resources" : { + "vm:101" : 1, + "vm:102" : 1 + }, + "type" : "resource-affinity" + }, + "vm101-vm102-must-be-on-node1" : { + "nodes" : { + "node1" : { + "priority" : 0 + } + }, + "resources" : { + "vm:101" : 1, + "vm:102" : 1 + }, + "strict" : 1, + "type" : "node-affinity" + }, + "vm201-must-be-on-node1" : { + "nodes" : { + "node1" : { + "priority" : 0 + } + }, + "resources" : { + "vm:201" : 1 + }, + "strict" : 1, + "type" : "node-affinity" + }, + "vm201-vm202-must-be-kept-separate" : { + "affinity" : "negative", + "resources" : { + "vm:201" : 1, + "vm:202" : 1 + }, + "type" : "resource-affinity" + }, + "vm202-must-be-on-node2" : { + "nodes" : { + "node2" : { + "priority" : 0 + } + }, + "resources" : { + "vm:202" : 1 + }, + "strict" : 1, + "type" : "node-affinity" + } + }, + "order" : { + "vm101-vm102-must-be-kept-together" : 2, + "vm101-vm102-must-be-on-node1" : 1, + "vm201-must-be-on-node1" : 3, + "vm201-vm202-must-be-kept-separate" : 5, + "vm202-must-be-on-node2" : 4 + } +} diff --git a/src/test/rules_cfgs/inconsistent-resource-affinity-rules.cfg.expect b/src/test/rules_cfgs/inconsistent-resource-affinity-rules.cfg.expect index 8f2338d9..f47828c6 100644 --- a/src/test/rules_cfgs/inconsistent-resource-affinity-rules.cfg.expect +++ b/src/test/rules_cfgs/inconsistent-resource-affinity-rules.cfg.expect @@ -7,8 +7,8 @@ Drop rule 'split-stick-together2', because rule shares two or more resources wit Drop rule 'stick-together1', because rule shares two or more resources with a negative resource affinity rule. Drop rule 'stick-together1', because rule shares two or more resources with a negative resource affinity rule. --- Config --- -$VAR1 = { - 'digest' => '80cdc11a1d5bf2d1d500665af1210cd59aabede6', - 'ids' => {}, - 'order' => {} - }; +{ + "digest" : "80cdc11a1d5bf2d1d500665af1210cd59aabede6", + "ids" : {}, + "order" : {} +} diff --git a/src/test/rules_cfgs/ineffective-negative-resource-affinity-rules.cfg.expect b/src/test/rules_cfgs/ineffective-negative-resource-affinity-rules.cfg.expect index 8a2b8797..e2c1ad11 100644 --- a/src/test/rules_cfgs/ineffective-negative-resource-affinity-rules.cfg.expect +++ b/src/test/rules_cfgs/ineffective-negative-resource-affinity-rules.cfg.expect @@ -2,29 +2,29 @@ Drop rule 'remove-me1', because rule defines more resources than available nodes. Drop rule 'remove-me2', because rule defines more resources than available nodes. --- Config --- -$VAR1 = { - 'digest' => '68633cedeeb355ef78fe28221ef3f16537b3e788', - 'ids' => { - 'do-not-remove-me1' => { - 'affinity' => 'negative', - 'resources' => { - 'vm:101' => 1, - 'vm:102' => 1 - }, - 'type' => 'resource-affinity' - }, - 'do-not-remove-me2' => { - 'affinity' => 'negative', - 'resources' => { - 'vm:101' => 1, - 'vm:102' => 1, - 'vm:103' => 1 - }, - 'type' => 'resource-affinity' - } - }, - 'order' => { - 'do-not-remove-me1' => 1, - 'do-not-remove-me2' => 2 - } - }; +{ + "digest" : "68633cedeeb355ef78fe28221ef3f16537b3e788", + "ids" : { + "do-not-remove-me1" : { + "affinity" : "negative", + "resources" : { + "vm:101" : 1, + "vm:102" : 1 + }, + "type" : "resource-affinity" + }, + "do-not-remove-me2" : { + "affinity" : "negative", + "resources" : { + "vm:101" : 1, + "vm:102" : 1, + "vm:103" : 1 + }, + "type" : "resource-affinity" + } + }, + "order" : { + "do-not-remove-me1" : 1, + "do-not-remove-me2" : 2 + } +} diff --git a/src/test/rules_cfgs/ineffective-resource-affinity-rules.cfg.expect b/src/test/rules_cfgs/ineffective-resource-affinity-rules.cfg.expect index b2d468b2..4bbc782a 100644 --- a/src/test/rules_cfgs/ineffective-resource-affinity-rules.cfg.expect +++ b/src/test/rules_cfgs/ineffective-resource-affinity-rules.cfg.expect @@ -2,8 +2,8 @@ Drop rule 'lonely-resource1', because rule is ineffective as there are less than two resources. Drop rule 'lonely-resource2', because rule is ineffective as there are less than two resources. --- Config --- -$VAR1 = { - 'digest' => 'fe89f8c8f5acc29f807eaa0cec5974b6e957a596', - 'ids' => {}, - 'order' => {} - }; +{ + "digest" : "fe89f8c8f5acc29f807eaa0cec5974b6e957a596", + "ids" : {}, + "order" : {} +} diff --git a/src/test/rules_cfgs/infer-implicit-negative-resource-affinity-rules.cfg.expect b/src/test/rules_cfgs/infer-implicit-negative-resource-affinity-rules.cfg.expect index 09364d41..d3f1c7c3 100644 --- a/src/test/rules_cfgs/infer-implicit-negative-resource-affinity-rules.cfg.expect +++ b/src/test/rules_cfgs/infer-implicit-negative-resource-affinity-rules.cfg.expect @@ -2,130 +2,130 @@ Drop rule 'do-not-infer-inconsistent-negative2', because rule shares two or more resources with a positive resource affinity rule. Drop rule 'do-not-infer-inconsistent-positive1', because rule shares two or more resources with a negative resource affinity rule. --- Config --- -$VAR1 = { - 'digest' => 'd8724dfe2130bb642b98e021da973aa0ec0695f0', - 'ids' => { - '_implicit-negative-infer-simple-positive1-vm:202-vm:204' => { - 'affinity' => 'negative', - 'resources' => { - 'vm:202' => 1, - 'vm:204' => 1 - }, - 'type' => 'resource-affinity' - }, - '_implicit-negative-infer-simple-positive1-vm:203-vm:204' => { - 'affinity' => 'negative', - 'resources' => { - 'vm:203' => 1, - 'vm:204' => 1 - }, - 'type' => 'resource-affinity' - }, - '_implicit-negative-infer-two-positive1-vm:301-vm:304' => { - 'affinity' => 'negative', - 'resources' => { - 'vm:301' => 1, - 'vm:304' => 1 - }, - 'type' => 'resource-affinity' - }, - '_implicit-negative-infer-two-positive1-vm:301-vm:305' => { - 'affinity' => 'negative', - 'resources' => { - 'vm:301' => 1, - 'vm:305' => 1 - }, - 'type' => 'resource-affinity' - }, - '_implicit-negative-infer-two-positive1-vm:302-vm:304' => { - 'affinity' => 'negative', - 'resources' => { - 'vm:302' => 1, - 'vm:304' => 1 - }, - 'type' => 'resource-affinity' - }, - '_implicit-negative-infer-two-positive1-vm:303-vm:305' => { - 'affinity' => 'negative', - 'resources' => { - 'vm:303' => 1, - 'vm:305' => 1 - }, - 'type' => 'resource-affinity' - }, - 'do-not-infer-inconsistent-negative1' => { - 'affinity' => 'negative', - 'resources' => { - 'vm:401' => 1, - 'vm:404' => 1 - }, - 'type' => 'resource-affinity' - }, - 'do-not-infer-positive1' => { - 'affinity' => 'positive', - 'resources' => { - 'vm:101' => 1, - 'vm:102' => 1, - 'vm:103' => 1 - }, - 'type' => 'resource-affinity' - }, - 'infer-simple-negative1' => { - 'affinity' => 'negative', - 'resources' => { - 'vm:201' => 1, - 'vm:204' => 1 - }, - 'type' => 'resource-affinity' - }, - 'infer-simple-positive1' => { - 'affinity' => 'positive', - 'resources' => { - 'vm:201' => 1, - 'vm:202' => 1, - 'vm:203' => 1 - }, - 'type' => 'resource-affinity' - }, - 'infer-two-negative1' => { - 'affinity' => 'negative', - 'resources' => { - 'vm:303' => 1, - 'vm:304' => 1 - }, - 'type' => 'resource-affinity' - }, - 'infer-two-negative2' => { - 'affinity' => 'negative', - 'resources' => { - 'vm:302' => 1, - 'vm:305' => 1 - }, - 'type' => 'resource-affinity' - }, - 'infer-two-positive1' => { - 'affinity' => 'positive', - 'resources' => { - 'vm:301' => 1, - 'vm:302' => 1, - 'vm:303' => 1 - }, - 'type' => 'resource-affinity' - } - }, - 'order' => { - '_implicit-negative-infer-simple-positive1-vm:202-vm:204' => 2, - '_implicit-negative-infer-simple-positive1-vm:203-vm:204' => 2, - '_implicit-negative-infer-two-positive1-vm:301-vm:304' => 2, - '_implicit-negative-infer-two-positive1-vm:301-vm:305' => 2, - '_implicit-negative-infer-two-positive1-vm:302-vm:304' => 2, - '_implicit-negative-infer-two-positive1-vm:303-vm:305' => 2, - 'do-not-infer-inconsistent-negative1' => 8, - 'do-not-infer-positive1' => 1, - 'infer-simple-negative1' => 3, - 'infer-simple-positive1' => 2, - 'infer-two-negative1' => 5, - 'infer-two-negative2' => 6, - 'infer-two-positive1' => 4 - } - }; +{ + "digest" : "d8724dfe2130bb642b98e021da973aa0ec0695f0", + "ids" : { + "_implicit-negative-infer-simple-positive1-vm:202-vm:204" : { + "affinity" : "negative", + "resources" : { + "vm:202" : 1, + "vm:204" : 1 + }, + "type" : "resource-affinity" + }, + "_implicit-negative-infer-simple-positive1-vm:203-vm:204" : { + "affinity" : "negative", + "resources" : { + "vm:203" : 1, + "vm:204" : 1 + }, + "type" : "resource-affinity" + }, + "_implicit-negative-infer-two-positive1-vm:301-vm:304" : { + "affinity" : "negative", + "resources" : { + "vm:301" : 1, + "vm:304" : 1 + }, + "type" : "resource-affinity" + }, + "_implicit-negative-infer-two-positive1-vm:301-vm:305" : { + "affinity" : "negative", + "resources" : { + "vm:301" : 1, + "vm:305" : 1 + }, + "type" : "resource-affinity" + }, + "_implicit-negative-infer-two-positive1-vm:302-vm:304" : { + "affinity" : "negative", + "resources" : { + "vm:302" : 1, + "vm:304" : 1 + }, + "type" : "resource-affinity" + }, + "_implicit-negative-infer-two-positive1-vm:303-vm:305" : { + "affinity" : "negative", + "resources" : { + "vm:303" : 1, + "vm:305" : 1 + }, + "type" : "resource-affinity" + }, + "do-not-infer-inconsistent-negative1" : { + "affinity" : "negative", + "resources" : { + "vm:401" : 1, + "vm:404" : 1 + }, + "type" : "resource-affinity" + }, + "do-not-infer-positive1" : { + "affinity" : "positive", + "resources" : { + "vm:101" : 1, + "vm:102" : 1, + "vm:103" : 1 + }, + "type" : "resource-affinity" + }, + "infer-simple-negative1" : { + "affinity" : "negative", + "resources" : { + "vm:201" : 1, + "vm:204" : 1 + }, + "type" : "resource-affinity" + }, + "infer-simple-positive1" : { + "affinity" : "positive", + "resources" : { + "vm:201" : 1, + "vm:202" : 1, + "vm:203" : 1 + }, + "type" : "resource-affinity" + }, + "infer-two-negative1" : { + "affinity" : "negative", + "resources" : { + "vm:303" : 1, + "vm:304" : 1 + }, + "type" : "resource-affinity" + }, + "infer-two-negative2" : { + "affinity" : "negative", + "resources" : { + "vm:302" : 1, + "vm:305" : 1 + }, + "type" : "resource-affinity" + }, + "infer-two-positive1" : { + "affinity" : "positive", + "resources" : { + "vm:301" : 1, + "vm:302" : 1, + "vm:303" : 1 + }, + "type" : "resource-affinity" + } + }, + "order" : { + "_implicit-negative-infer-simple-positive1-vm:202-vm:204" : 2, + "_implicit-negative-infer-simple-positive1-vm:203-vm:204" : 2, + "_implicit-negative-infer-two-positive1-vm:301-vm:304" : 2, + "_implicit-negative-infer-two-positive1-vm:301-vm:305" : 2, + "_implicit-negative-infer-two-positive1-vm:302-vm:304" : 2, + "_implicit-negative-infer-two-positive1-vm:303-vm:305" : 2, + "do-not-infer-inconsistent-negative1" : 8, + "do-not-infer-positive1" : 1, + "infer-simple-negative1" : 3, + "infer-simple-positive1" : 2, + "infer-two-negative1" : 5, + "infer-two-negative2" : 6, + "infer-two-positive1" : 4 + } +} diff --git a/src/test/rules_cfgs/infer-node-affinity-for-positive-resource-affinity-rules.cfg.expect b/src/test/rules_cfgs/infer-node-affinity-for-positive-resource-affinity-rules.cfg.expect index 33c56c62..3f5cd6d8 100644 --- a/src/test/rules_cfgs/infer-node-affinity-for-positive-resource-affinity-rules.cfg.expect +++ b/src/test/rules_cfgs/infer-node-affinity-for-positive-resource-affinity-rules.cfg.expect @@ -1,111 +1,111 @@ --- Log --- --- Config --- -$VAR1 = { - 'digest' => '32ae135ef2f8bd84cd12c18af6910dce9d6bc9fa', - 'ids' => { - 'do-not-infer-negative1' => { - 'nodes' => { - 'node1' => { - 'priority' => 0 - }, - 'node2' => { - 'priority' => 0 - } - }, - 'resources' => { - 'vm:203' => 1 - }, - 'strict' => 1, - 'type' => 'node-affinity' - }, - 'do-not-infer-negative2' => { - 'nodes' => { - 'node3' => { - 'priority' => 0 - } - }, - 'resources' => { - 'vm:201' => 1 - }, - 'type' => 'node-affinity' - }, - 'do-not-infer-negative3' => { - 'affinity' => 'negative', - 'resources' => { - 'vm:201' => 1, - 'vm:203' => 1 - }, - 'type' => 'resource-affinity' - }, - 'do-not-infer-positive1' => { - 'affinity' => 'positive', - 'resources' => { - 'vm:101' => 1, - 'vm:102' => 1, - 'vm:103' => 1 - }, - 'type' => 'resource-affinity' - }, - 'infer-multi-resources1' => { - 'nodes' => { - 'node1' => { - 'priority' => 0 - }, - 'node3' => { - 'priority' => 0 - } - }, - 'resources' => { - 'vm:401' => 1, - 'vm:402' => 1, - 'vm:403' => 1, - 'vm:404' => 1, - 'vm:405' => 1 - }, - 'strict' => 1, - 'type' => 'node-affinity' - }, - 'infer-multi-resources2' => { - 'affinity' => 'positive', - 'resources' => { - 'vm:401' => 1, - 'vm:402' => 1, - 'vm:403' => 1, - 'vm:404' => 1 - }, - 'type' => 'resource-affinity' - }, - 'infer-single-resource1' => { - 'nodes' => { - 'node3' => { - 'priority' => 0 - } - }, - 'resources' => { - 'vm:301' => 1, - 'vm:302' => 1, - 'vm:303' => 1 - }, - 'type' => 'node-affinity' - }, - 'infer-single-resource2' => { - 'affinity' => 'positive', - 'resources' => { - 'vm:301' => 1, - 'vm:302' => 1, - 'vm:303' => 1 - }, - 'type' => 'resource-affinity' - } - }, - 'order' => { - 'do-not-infer-negative1' => 2, - 'do-not-infer-negative2' => 3, - 'do-not-infer-negative3' => 4, - 'do-not-infer-positive1' => 1, - 'infer-multi-resources1' => 7, - 'infer-multi-resources2' => 8, - 'infer-single-resource1' => 5, - 'infer-single-resource2' => 6 - } - }; +{ + "digest" : "32ae135ef2f8bd84cd12c18af6910dce9d6bc9fa", + "ids" : { + "do-not-infer-negative1" : { + "nodes" : { + "node1" : { + "priority" : 0 + }, + "node2" : { + "priority" : 0 + } + }, + "resources" : { + "vm:203" : 1 + }, + "strict" : 1, + "type" : "node-affinity" + }, + "do-not-infer-negative2" : { + "nodes" : { + "node3" : { + "priority" : 0 + } + }, + "resources" : { + "vm:201" : 1 + }, + "type" : "node-affinity" + }, + "do-not-infer-negative3" : { + "affinity" : "negative", + "resources" : { + "vm:201" : 1, + "vm:203" : 1 + }, + "type" : "resource-affinity" + }, + "do-not-infer-positive1" : { + "affinity" : "positive", + "resources" : { + "vm:101" : 1, + "vm:102" : 1, + "vm:103" : 1 + }, + "type" : "resource-affinity" + }, + "infer-multi-resources1" : { + "nodes" : { + "node1" : { + "priority" : 0 + }, + "node3" : { + "priority" : 0 + } + }, + "resources" : { + "vm:401" : 1, + "vm:402" : 1, + "vm:403" : 1, + "vm:404" : 1, + "vm:405" : 1 + }, + "strict" : 1, + "type" : "node-affinity" + }, + "infer-multi-resources2" : { + "affinity" : "positive", + "resources" : { + "vm:401" : 1, + "vm:402" : 1, + "vm:403" : 1, + "vm:404" : 1 + }, + "type" : "resource-affinity" + }, + "infer-single-resource1" : { + "nodes" : { + "node3" : { + "priority" : 0 + } + }, + "resources" : { + "vm:301" : 1, + "vm:302" : 1, + "vm:303" : 1 + }, + "type" : "node-affinity" + }, + "infer-single-resource2" : { + "affinity" : "positive", + "resources" : { + "vm:301" : 1, + "vm:302" : 1, + "vm:303" : 1 + }, + "type" : "resource-affinity" + } + }, + "order" : { + "do-not-infer-negative1" : 2, + "do-not-infer-negative2" : 3, + "do-not-infer-negative3" : 4, + "do-not-infer-positive1" : 1, + "infer-multi-resources1" : 7, + "infer-multi-resources2" : 8, + "infer-single-resource1" : 5, + "infer-single-resource2" : 6 + } +} diff --git a/src/test/rules_cfgs/merge-and-infer-implicit-negative-resource-affinity-rules.cfg.expect b/src/test/rules_cfgs/merge-and-infer-implicit-negative-resource-affinity-rules.cfg.expect index 876c2030..0002dc2a 100644 --- a/src/test/rules_cfgs/merge-and-infer-implicit-negative-resource-affinity-rules.cfg.expect +++ b/src/test/rules_cfgs/merge-and-infer-implicit-negative-resource-affinity-rules.cfg.expect @@ -1,73 +1,73 @@ --- Log --- --- Config --- -$VAR1 = { - 'digest' => '5695bd62a65966a275a62a01d2d8fbc370d91668', - 'ids' => { - '_implicit-negative-_merged-infer-connected-positive1-infer-connected-positive2-vm:101-vm:105' => { - 'affinity' => 'negative', - 'resources' => { - 'vm:101' => 1, - 'vm:105' => 1 - }, - 'type' => 'resource-affinity' - }, - '_implicit-negative-_merged-infer-connected-positive1-infer-connected-positive2-vm:102-vm:104' => { - 'affinity' => 'negative', - 'resources' => { - 'vm:102' => 1, - 'vm:104' => 1 - }, - 'type' => 'resource-affinity' - }, - '_implicit-negative-_merged-infer-connected-positive1-infer-connected-positive2-vm:103-vm:104' => { - 'affinity' => 'negative', - 'resources' => { - 'vm:103' => 1, - 'vm:104' => 1 - }, - 'type' => 'resource-affinity' - }, - '_implicit-negative-_merged-infer-connected-positive1-infer-connected-positive2-vm:103-vm:105' => { - 'affinity' => 'negative', - 'resources' => { - 'vm:103' => 1, - 'vm:105' => 1 - }, - 'type' => 'resource-affinity' - }, - '_merged-infer-connected-positive1-infer-connected-positive2' => { - 'affinity' => 'positive', - 'resources' => { - 'vm:101' => 1, - 'vm:102' => 1, - 'vm:103' => 1 - }, - 'type' => 'resource-affinity' - }, - 'infer-connected-negative1' => { - 'affinity' => 'negative', - 'resources' => { - 'vm:101' => 1, - 'vm:104' => 1 - }, - 'type' => 'resource-affinity' - }, - 'infer-connected-negative2' => { - 'affinity' => 'negative', - 'resources' => { - 'vm:102' => 1, - 'vm:105' => 1 - }, - 'type' => 'resource-affinity' - } - }, - 'order' => { - '_implicit-negative-_merged-infer-connected-positive1-infer-connected-positive2-vm:101-vm:105' => 2, - '_implicit-negative-_merged-infer-connected-positive1-infer-connected-positive2-vm:102-vm:104' => 2, - '_implicit-negative-_merged-infer-connected-positive1-infer-connected-positive2-vm:103-vm:104' => 2, - '_implicit-negative-_merged-infer-connected-positive1-infer-connected-positive2-vm:103-vm:105' => 2, - '_merged-infer-connected-positive1-infer-connected-positive2' => 1, - 'infer-connected-negative1' => 3, - 'infer-connected-negative2' => 4 - } - }; +{ + "digest" : "5695bd62a65966a275a62a01d2d8fbc370d91668", + "ids" : { + "_implicit-negative-_merged-infer-connected-positive1-infer-connected-positive2-vm:101-vm:105" : { + "affinity" : "negative", + "resources" : { + "vm:101" : 1, + "vm:105" : 1 + }, + "type" : "resource-affinity" + }, + "_implicit-negative-_merged-infer-connected-positive1-infer-connected-positive2-vm:102-vm:104" : { + "affinity" : "negative", + "resources" : { + "vm:102" : 1, + "vm:104" : 1 + }, + "type" : "resource-affinity" + }, + "_implicit-negative-_merged-infer-connected-positive1-infer-connected-positive2-vm:103-vm:104" : { + "affinity" : "negative", + "resources" : { + "vm:103" : 1, + "vm:104" : 1 + }, + "type" : "resource-affinity" + }, + "_implicit-negative-_merged-infer-connected-positive1-infer-connected-positive2-vm:103-vm:105" : { + "affinity" : "negative", + "resources" : { + "vm:103" : 1, + "vm:105" : 1 + }, + "type" : "resource-affinity" + }, + "_merged-infer-connected-positive1-infer-connected-positive2" : { + "affinity" : "positive", + "resources" : { + "vm:101" : 1, + "vm:102" : 1, + "vm:103" : 1 + }, + "type" : "resource-affinity" + }, + "infer-connected-negative1" : { + "affinity" : "negative", + "resources" : { + "vm:101" : 1, + "vm:104" : 1 + }, + "type" : "resource-affinity" + }, + "infer-connected-negative2" : { + "affinity" : "negative", + "resources" : { + "vm:102" : 1, + "vm:105" : 1 + }, + "type" : "resource-affinity" + } + }, + "order" : { + "_implicit-negative-_merged-infer-connected-positive1-infer-connected-positive2-vm:101-vm:105" : 2, + "_implicit-negative-_merged-infer-connected-positive1-infer-connected-positive2-vm:102-vm:104" : 2, + "_implicit-negative-_merged-infer-connected-positive1-infer-connected-positive2-vm:103-vm:104" : 2, + "_implicit-negative-_merged-infer-connected-positive1-infer-connected-positive2-vm:103-vm:105" : 2, + "_merged-infer-connected-positive1-infer-connected-positive2" : 1, + "infer-connected-negative1" : 3, + "infer-connected-negative2" : 4 + } +} diff --git a/src/test/rules_cfgs/merge-connected-positive-resource-affinity-rules.cfg.expect b/src/test/rules_cfgs/merge-connected-positive-resource-affinity-rules.cfg.expect index e57a792b..935a4f7c 100644 --- a/src/test/rules_cfgs/merge-connected-positive-resource-affinity-rules.cfg.expect +++ b/src/test/rules_cfgs/merge-connected-positive-resource-affinity-rules.cfg.expect @@ -1,70 +1,70 @@ --- Log --- --- Config --- -$VAR1 = { - 'digest' => '920d9caac206fc0dd893753bfb2cab3e6d6a9b9b', - 'ids' => { - '_merged-merge-positive1-merge-positive3-merge-positive4-merge-positive2-merge-positive5' => { - 'affinity' => 'positive', - 'resources' => { - 'vm:301' => 1, - 'vm:302' => 1, - 'vm:303' => 1, - 'vm:304' => 1, - 'vm:305' => 1, - 'vm:306' => 1, - 'vm:307' => 1, - 'vm:308' => 1, - 'vm:309' => 1 - }, - 'type' => 'resource-affinity' - }, - 'do-not-merge-negative1' => { - 'affinity' => 'negative', - 'resources' => { - 'vm:101' => 1, - 'vm:102' => 1 - }, - 'type' => 'resource-affinity' - }, - 'do-not-merge-negative2' => { - 'affinity' => 'negative', - 'resources' => { - 'vm:102' => 1, - 'vm:103' => 1 - }, - 'type' => 'resource-affinity' - }, - 'do-not-merge-negative3' => { - 'affinity' => 'negative', - 'resources' => { - 'vm:104' => 1, - 'vm:105' => 1 - }, - 'type' => 'resource-affinity' - }, - 'do-not-merge-positive1' => { - 'affinity' => 'positive', - 'resources' => { - 'vm:201' => 1, - 'vm:202' => 1 - }, - 'type' => 'resource-affinity' - }, - 'do-not-merge-positive2' => { - 'affinity' => 'positive', - 'resources' => { - 'vm:203' => 1, - 'vm:204' => 1 - }, - 'type' => 'resource-affinity' - } - }, - 'order' => { - '_merged-merge-positive1-merge-positive3-merge-positive4-merge-positive2-merge-positive5' => 6, - 'do-not-merge-negative1' => 1, - 'do-not-merge-negative2' => 2, - 'do-not-merge-negative3' => 3, - 'do-not-merge-positive1' => 4, - 'do-not-merge-positive2' => 5 - } - }; +{ + "digest" : "920d9caac206fc0dd893753bfb2cab3e6d6a9b9b", + "ids" : { + "_merged-merge-positive1-merge-positive3-merge-positive4-merge-positive2-merge-positive5" : { + "affinity" : "positive", + "resources" : { + "vm:301" : 1, + "vm:302" : 1, + "vm:303" : 1, + "vm:304" : 1, + "vm:305" : 1, + "vm:306" : 1, + "vm:307" : 1, + "vm:308" : 1, + "vm:309" : 1 + }, + "type" : "resource-affinity" + }, + "do-not-merge-negative1" : { + "affinity" : "negative", + "resources" : { + "vm:101" : 1, + "vm:102" : 1 + }, + "type" : "resource-affinity" + }, + "do-not-merge-negative2" : { + "affinity" : "negative", + "resources" : { + "vm:102" : 1, + "vm:103" : 1 + }, + "type" : "resource-affinity" + }, + "do-not-merge-negative3" : { + "affinity" : "negative", + "resources" : { + "vm:104" : 1, + "vm:105" : 1 + }, + "type" : "resource-affinity" + }, + "do-not-merge-positive1" : { + "affinity" : "positive", + "resources" : { + "vm:201" : 1, + "vm:202" : 1 + }, + "type" : "resource-affinity" + }, + "do-not-merge-positive2" : { + "affinity" : "positive", + "resources" : { + "vm:203" : 1, + "vm:204" : 1 + }, + "type" : "resource-affinity" + } + }, + "order" : { + "_merged-merge-positive1-merge-positive3-merge-positive4-merge-positive2-merge-positive5" : 6, + "do-not-merge-negative1" : 1, + "do-not-merge-negative2" : 2, + "do-not-merge-negative3" : 3, + "do-not-merge-positive1" : 4, + "do-not-merge-positive2" : 5 + } +} diff --git a/src/test/rules_cfgs/multi-priority-node-affinity-with-resource-affinity-rules.cfg.expect b/src/test/rules_cfgs/multi-priority-node-affinity-with-resource-affinity-rules.cfg.expect index 92d12929..e2d5ee00 100644 --- a/src/test/rules_cfgs/multi-priority-node-affinity-with-resource-affinity-rules.cfg.expect +++ b/src/test/rules_cfgs/multi-priority-node-affinity-with-resource-affinity-rules.cfg.expect @@ -4,45 +4,45 @@ Drop rule 'vm101-vm102-should-be-on-node1-or-node2', because resources are in a Drop rule 'vm201-vm202-must-be-kept-together', because resources are in node affinity rules with multiple priorities. Drop rule 'vm201-vm202-must-be-on-node1-or-node2', because resources are in a resource affinity rule and cannot be in a node affinity rule with multiple priorities. --- Config --- -$VAR1 = { - 'digest' => '722a98914555f296af0916c980a9d6c780f5f072', - 'ids' => { - 'vm301-must-be-on-node1-with-prio-1' => { - 'nodes' => { - 'node1' => { - 'priority' => 1 - } - }, - 'resources' => { - 'vm:301' => 1 - }, - 'strict' => 1, - 'type' => 'node-affinity' - }, - 'vm301-vm302-must-be-kept-together' => { - 'affinity' => 'negative', - 'resources' => { - 'vm:301' => 1, - 'vm:302' => 1 - }, - 'type' => 'resource-affinity' - }, - 'vm302-must-be-on-node2-with-prio-2' => { - 'nodes' => { - 'node2' => { - 'priority' => 2 - } - }, - 'resources' => { - 'vm:302' => 1 - }, - 'strict' => 1, - 'type' => 'node-affinity' - } - }, - 'order' => { - 'vm301-must-be-on-node1-with-prio-1' => 5, - 'vm301-vm302-must-be-kept-together' => 7, - 'vm302-must-be-on-node2-with-prio-2' => 6 - } - }; +{ + "digest" : "722a98914555f296af0916c980a9d6c780f5f072", + "ids" : { + "vm301-must-be-on-node1-with-prio-1" : { + "nodes" : { + "node1" : { + "priority" : 1 + } + }, + "resources" : { + "vm:301" : 1 + }, + "strict" : 1, + "type" : "node-affinity" + }, + "vm301-vm302-must-be-kept-together" : { + "affinity" : "negative", + "resources" : { + "vm:301" : 1, + "vm:302" : 1 + }, + "type" : "resource-affinity" + }, + "vm302-must-be-on-node2-with-prio-2" : { + "nodes" : { + "node2" : { + "priority" : 2 + } + }, + "resources" : { + "vm:302" : 1 + }, + "strict" : 1, + "type" : "node-affinity" + } + }, + "order" : { + "vm301-must-be-on-node1-with-prio-1" : 5, + "vm301-vm302-must-be-kept-together" : 7, + "vm302-must-be-on-node2-with-prio-2" : 6 + } +} diff --git a/src/test/rules_cfgs/multiple-resource-refs-in-node-affinity-rules.cfg.expect b/src/test/rules_cfgs/multiple-resource-refs-in-node-affinity-rules.cfg.expect index 3fd0c9ca..30633d8c 100644 --- a/src/test/rules_cfgs/multiple-resource-refs-in-node-affinity-rules.cfg.expect +++ b/src/test/rules_cfgs/multiple-resource-refs-in-node-affinity-rules.cfg.expect @@ -3,61 +3,61 @@ Drop rule 'same-resource1', because resource 'vm:201' is already used in another Drop rule 'same-resource2', because resource 'vm:201' is already used in another node affinity rule. Drop rule 'same-resource3', because resource 'vm:201' is already used in another node affinity rule. --- Config --- -$VAR1 = { - 'digest' => '5865d23b1a342e7f8cfa68bd0e1da556ca8d28a6', - 'ids' => { - 'no-same-resource1' => { - 'nodes' => { - 'node1' => { - 'priority' => 0 - }, - 'node2' => { - 'priority' => 2 - } - }, - 'resources' => { - 'vm:101' => 1, - 'vm:102' => 1, - 'vm:103' => 1 - }, - 'strict' => 0, - 'type' => 'node-affinity' - }, - 'no-same-resource2' => { - 'nodes' => { - 'node1' => { - 'priority' => 0 - }, - 'node2' => { - 'priority' => 2 - } - }, - 'resources' => { - 'vm:104' => 1, - 'vm:105' => 1 - }, - 'strict' => 0, - 'type' => 'node-affinity' - }, - 'no-same-resource3' => { - 'nodes' => { - 'node1' => { - 'priority' => 0 - }, - 'node2' => { - 'priority' => 2 - } - }, - 'resources' => { - 'vm:106' => 1 - }, - 'strict' => 1, - 'type' => 'node-affinity' - } - }, - 'order' => { - 'no-same-resource1' => 1, - 'no-same-resource2' => 2, - 'no-same-resource3' => 3 - } - }; +{ + "digest" : "5865d23b1a342e7f8cfa68bd0e1da556ca8d28a6", + "ids" : { + "no-same-resource1" : { + "nodes" : { + "node1" : { + "priority" : 0 + }, + "node2" : { + "priority" : 2 + } + }, + "resources" : { + "vm:101" : 1, + "vm:102" : 1, + "vm:103" : 1 + }, + "strict" : 0, + "type" : "node-affinity" + }, + "no-same-resource2" : { + "nodes" : { + "node1" : { + "priority" : 0 + }, + "node2" : { + "priority" : 2 + } + }, + "resources" : { + "vm:104" : 1, + "vm:105" : 1 + }, + "strict" : 0, + "type" : "node-affinity" + }, + "no-same-resource3" : { + "nodes" : { + "node1" : { + "priority" : 0 + }, + "node2" : { + "priority" : 2 + } + }, + "resources" : { + "vm:106" : 1 + }, + "strict" : 1, + "type" : "node-affinity" + } + }, + "order" : { + "no-same-resource1" : 1, + "no-same-resource2" : 2, + "no-same-resource3" : 3 + } +} diff --git a/src/test/test_rules_config.pl b/src/test/test_rules_config.pl index 3c2dac4b..edfcb3b7 100755 --- a/src/test/test_rules_config.pl +++ b/src/test/test_rules_config.pl @@ -6,11 +6,11 @@ use Getopt::Long; use lib qw(..); +use JSON; + use Test::More; use Test::MockModule; -use Data::Dumper; - use PVE::HA::Rules; use PVE::HA::Rules::NodeAffinity; use PVE::HA::Rules::ResourceAffinity; @@ -56,10 +56,7 @@ sub check_cfg { my $messages = PVE::HA::Rules->transform($cfg, $nodes); print $_ for @$messages; print "--- Config ---\n"; - { - local $Data::Dumper::Sortkeys = 1; - print Dumper($cfg); - } + print to_json($cfg, { canonical => 1, pretty => 1, utf8 => 1 }); select(STDOUT); } -- 2.47.2 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel