In preparation of the next patch, remove the overly restrictive checker,
which disallows that resources are used in node affinity rules and
resource affinity rules at the same time.

Signed-off-by: Daniel Kral <d.k...@proxmox.com>
---
This could be squashed into the next, but I figured it's good measure
for documentation to have its own patch.

 src/PVE/HA/Rules.pm                           |  70 -----------
 .../multiple-resource-refs-in-rules.cfg       |  52 --------
 ...multiple-resource-refs-in-rules.cfg.expect | 111 ------------------
 3 files changed, 233 deletions(-)
 delete mode 100644 src/test/rules_cfgs/multiple-resource-refs-in-rules.cfg
 delete mode 100644 
src/test/rules_cfgs/multiple-resource-refs-in-rules.cfg.expect

diff --git a/src/PVE/HA/Rules.pm b/src/PVE/HA/Rules.pm
index e2b77215..64dae1e4 100644
--- a/src/PVE/HA/Rules.pm
+++ b/src/PVE/HA/Rules.pm
@@ -475,74 +475,4 @@ sub get_next_ordinal : prototype($) {
     return $current_order + 1;
 }
 
-=head1 INTER-PLUGIN RULE CHECKERS
-
-=cut
-
-=head3 check_single_global_resource_reference($node_affinity_rules, 
$resource_affinity_rules)
-
-Returns all rules in C<$node_affinity_rules> and C<$resource_affinity_rules> as
-a list of lists, each consisting of the rule id and the resource id, where one
-of the resources is used in both a node affinity rule and resource affinity 
rule
-at the same time.
-
-If there are none, the returned list is empty.
-
-=cut
-
-sub check_single_global_resource_reference {
-    my ($node_affinity_rules, $resource_affinity_rules) = @_;
-
-    my @conflicts = ();
-    my $resource_ruleids = {};
-
-    while (my ($ruleid, $rule) = each %$node_affinity_rules) {
-        for my $sid (keys $rule->{resources}->%*) {
-            push $resource_ruleids->{$sid}->{node_affinity}->@*, $ruleid;
-        }
-    }
-    while (my ($ruleid, $rule) = each %$resource_affinity_rules) {
-        for my $sid (keys $rule->{resources}->%*) {
-            push $resource_ruleids->{$sid}->{resource_affinity}->@*, $ruleid;
-        }
-    }
-
-    for my $sid (keys %$resource_ruleids) {
-        my $node_affinity_ruleids = $resource_ruleids->{$sid}->{node_affinity} 
// [];
-        my $resource_affinity_ruleids = 
$resource_ruleids->{$sid}->{resource_affinity} // [];
-
-        next if @$node_affinity_ruleids > 0 && !@$resource_affinity_ruleids;
-        next if @$resource_affinity_ruleids > 0 && !@$node_affinity_ruleids;
-
-        for my $ruleid (@$node_affinity_ruleids, @$resource_affinity_ruleids) {
-            push @conflicts, [$ruleid, $sid];
-        }
-    }
-
-    @conflicts = sort { $a->[0] cmp $b->[0] || $a->[1] cmp $b->[1] } 
@conflicts;
-    return \@conflicts;
-}
-
-__PACKAGE__->register_check(
-    sub {
-        my ($args) = @_;
-
-        return check_single_global_resource_reference(
-            $args->{node_affinity_rules},
-            $args->{resource_affinity_rules},
-        );
-    },
-    sub {
-        my ($conflicts, $errors) = @_;
-
-        for my $conflict (@$conflicts) {
-            my ($ruleid, $sid) = @$conflict;
-
-            push $errors->{$ruleid}->{resources}->@*,
-                "resource '$sid' cannot be used in both a node affinity rule"
-                . " and a resource affinity rule at the same time";
-        }
-    },
-);
-
 1;
diff --git a/src/test/rules_cfgs/multiple-resource-refs-in-rules.cfg 
b/src/test/rules_cfgs/multiple-resource-refs-in-rules.cfg
deleted file mode 100644
index 6608a5c3..00000000
--- a/src/test/rules_cfgs/multiple-resource-refs-in-rules.cfg
+++ /dev/null
@@ -1,52 +0,0 @@
-# Case 1: Do not remove node/resource affinity rules, which do not share 
resources between these types.
-node-affinity: different-resource1
-       resources vm:101,vm:102,vm:103
-       nodes node1,node2:2
-       strict 0
-
-resource-affinity: different-resource2
-       resources vm:104,vm:105
-       affinity positive
-
-node-affinity: different-resource3
-       resources vm:106
-       nodes node1,node2:2
-       strict 1
-
-resource-affinity: different-resource4
-       resources vm:107,vm:109
-       affinity negative
-
-# Case 2: Remove rules, which share the same resource(s) between different 
rule types.
-node-affinity: same-resource1
-       resources vm:201
-       nodes node1,node2:2
-       strict 0
-
-resource-affinity: same-resource2
-       resources vm:201,vm:205
-       affinity negative
-
-resource-affinity: same-resource3
-       resources vm:201,vm:203,vm:204
-       affinity negative
-
-node-affinity: same-resource4
-       resources vm:205,vm:206,vm:207
-       nodes node1:2,node3:3
-       strict 1
-
-# Case 3: Do not remove rules, which do not share resources between them.
-node-affinity: other-different-resource1
-       resources vm:301,vm:308
-       nodes node1,node2:2
-       strict 0
-
-resource-affinity: other-different-resource2
-       resources vm:302,vm:304,vm:305
-       affinity positive
-
-node-affinity: other-different-resource3
-       resources vm:303,vm:306,vm:309
-       nodes node1,node2:2
-       strict 1
diff --git a/src/test/rules_cfgs/multiple-resource-refs-in-rules.cfg.expect 
b/src/test/rules_cfgs/multiple-resource-refs-in-rules.cfg.expect
deleted file mode 100644
index 972c042d..00000000
--- a/src/test/rules_cfgs/multiple-resource-refs-in-rules.cfg.expect
+++ /dev/null
@@ -1,111 +0,0 @@
---- Log ---
-Drop rule 'same-resource1', because resource 'vm:201' cannot be used in both a 
node affinity rule and a resource affinity rule at the same time.
-Drop rule 'same-resource2', because resource 'vm:201' cannot be used in both a 
node affinity rule and a resource affinity rule at the same time.
-Drop rule 'same-resource2', because resource 'vm:205' cannot be used in both a 
node affinity rule and a resource affinity rule at the same time.
-Drop rule 'same-resource3', because resource 'vm:201' cannot be used in both a 
node affinity rule and a resource affinity rule at the same time.
-Drop rule 'same-resource4', because resource 'vm:205' cannot be used in both a 
node affinity rule and a resource affinity rule at the same time.
---- Config ---
-$VAR1 = {
-          'digest' => 'fcbdf84d442d38b4c901d989c211fb62024c5515',
-          'ids' => {
-                     'different-resource1' => {
-                                                'nodes' => {
-                                                             'node1' => {
-                                                                          
'priority' => 0
-                                                                        },
-                                                             'node2' => {
-                                                                          
'priority' => 2
-                                                                        }
-                                                           },
-                                                'resources' => {
-                                                                 'vm:101' => 1,
-                                                                 'vm:102' => 1,
-                                                                 'vm:103' => 1
-                                                               },
-                                                'strict' => 0,
-                                                'type' => 'node-affinity'
-                                              },
-                     'different-resource2' => {
-                                                'affinity' => 'positive',
-                                                'resources' => {
-                                                                 'vm:104' => 1,
-                                                                 'vm:105' => 1
-                                                               },
-                                                'type' => 'resource-affinity'
-                                              },
-                     'different-resource3' => {
-                                                'nodes' => {
-                                                             'node1' => {
-                                                                          
'priority' => 0
-                                                                        },
-                                                             'node2' => {
-                                                                          
'priority' => 2
-                                                                        }
-                                                           },
-                                                'resources' => {
-                                                                 'vm:106' => 1
-                                                               },
-                                                'strict' => 1,
-                                                'type' => 'node-affinity'
-                                              },
-                     'different-resource4' => {
-                                                'affinity' => 'negative',
-                                                'resources' => {
-                                                                 'vm:107' => 1,
-                                                                 'vm:109' => 1
-                                                               },
-                                                'type' => 'resource-affinity'
-                                              },
-                     'other-different-resource1' => {
-                                                      'nodes' => {
-                                                                   'node1' => {
-                                                                               
 'priority' => 0
-                                                                              
},
-                                                                   'node2' => {
-                                                                               
 'priority' => 2
-                                                                              }
-                                                                 },
-                                                      'resources' => {
-                                                                       
'vm:301' => 1,
-                                                                       
'vm:308' => 1
-                                                                     },
-                                                      'strict' => 0,
-                                                      'type' => 'node-affinity'
-                                                    },
-                     'other-different-resource2' => {
-                                                      'affinity' => 'positive',
-                                                      'resources' => {
-                                                                       
'vm:302' => 1,
-                                                                       
'vm:304' => 1,
-                                                                       
'vm:305' => 1
-                                                                     },
-                                                      'type' => 
'resource-affinity'
-                                                    },
-                     'other-different-resource3' => {
-                                                      'nodes' => {
-                                                                   'node1' => {
-                                                                               
 'priority' => 0
-                                                                              
},
-                                                                   'node2' => {
-                                                                               
 'priority' => 2
-                                                                              }
-                                                                 },
-                                                      'resources' => {
-                                                                       
'vm:303' => 1,
-                                                                       
'vm:306' => 1,
-                                                                       
'vm:309' => 1
-                                                                     },
-                                                      'strict' => 1,
-                                                      'type' => 'node-affinity'
-                                                    }
-                   },
-          'order' => {
-                       'different-resource1' => 1,
-                       'different-resource2' => 2,
-                       'different-resource3' => 3,
-                       'different-resource4' => 4,
-                       'other-different-resource1' => 9,
-                       'other-different-resource2' => 10,
-                       'other-different-resource3' => 11
-                     }
-        };
-- 
2.47.2



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to