factor out the default group generation and the priority group
generation.

Signed-off-by: Thomas Lamprecht <t.lampre...@proxmox.com>
---

changes since v3:
* new in this version

 src/PVE/HA/Manager.pm | 22 +++++++++++++++++++---
 1 file changed, 19 insertions(+), 3 deletions(-)

diff --git a/src/PVE/HA/Manager.pm b/src/PVE/HA/Manager.pm
index 6f6fdab..439a750 100644
--- a/src/PVE/HA/Manager.pm
+++ b/src/PVE/HA/Manager.pm
@@ -70,8 +70,8 @@ sub flush_master_status {
     $haenv->write_manager_status($ms);
 } 
 
-sub select_service_node {
-    my ($groups, $online_node_usage, $service_conf, $current_node, $try_next, 
$tried_nodes) = @_;
+sub get_service_group {
+    my ($groups, $online_node_usage, $service_conf) = @_;
 
     my $group = {};
     # add all online nodes to default group to allow try_next when no group set
@@ -83,6 +83,13 @@ sub select_service_node {
     $group =  $groups->{ids}->{$service_conf->{group}} if 
$service_conf->{group} && 
        $groups->{ids}->{$service_conf->{group}};
 
+    return $group;
+}
+
+# groups available nodes with their priority as group index
+sub get_node_priority_groups {
+    my ($group, $online_node_usage) = @_;
+
     my $pri_groups = {};
     my $group_members = {};
     foreach my $entry (keys %{$group->{nodes}}) {
@@ -95,7 +102,6 @@ sub select_service_node {
        $group_members->{$node} = $pri;
     }
 
-    
     # add non-group members to unrestricted groups (priority -1)
     if (!$group->{restricted}) {
        my $pri = -1;
@@ -106,6 +112,16 @@ sub select_service_node {
        }
     }
 
+    return ($pri_groups, $group_members);
+}
+
+sub select_service_node {
+    my ($groups, $online_node_usage, $service_conf, $current_node, $try_next, 
$tried_nodes) = @_;
+
+    my $group = get_service_group($groups, $online_node_usage, $service_conf);
+
+    my ($pri_groups, $group_members) = get_node_priority_groups($group, 
$online_node_usage);
+
     my @pri_list = sort {$b <=> $a} keys %$pri_groups;
     return undef if !scalar(@pri_list);
 
-- 
2.1.4


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

Reply via email to