]> git.proxmox.com Git - pve-ha-manager.git/blobdiff - src/PVE/HA/Config.pm
factor out resource config check and default set code
[pve-ha-manager.git] / src / PVE / HA / Config.pm
index 00b338d62f91342d6201539233c2114327ce2e83..1802a7de0bcf8b2bd82f60998ce251c3abe79f3f 100644 (file)
@@ -84,6 +84,41 @@ sub read_resources_config {
     return cfs_read_file($ha_resources_config);
 }
 
+# checks if resource exists and sets defaults for unset values
+sub read_and_check_resources_config {
+
+    my $res = cfs_read_file($ha_resources_config);
+
+    my $vmlist = PVE::Cluster::get_vmlist();
+    my $conf = {};
+
+    foreach my $sid (keys %{$res->{ids}}) {
+       my $d = $res->{ids}->{$sid};
+       my (undef, undef, $name) = PVE::HA::Tools::parse_sid($sid);
+       $d->{state} = 'enabled' if !defined($d->{state});
+       $d->{max_restart} = 1 if !defined($d->{max_restart});
+       $d->{max_relocate} = 1 if !defined($d->{max_relocate});
+       if (PVE::HA::Resources->lookup($d->{type})) {
+           if (my $vmd = $vmlist->{ids}->{$name}) {
+               if (!$vmd) {
+                   warn "no such VM '$name'\n";
+               } else {
+                   $d->{node} = $vmd->{node};
+                   $conf->{$sid} = $d;
+               }
+           } else {
+               if (defined($d->{node})) {
+                   $conf->{$sid} = $d;
+               } else {
+                   warn "service '$sid' without node\n";
+               }
+           }
+       }
+    }
+
+    return $conf;
+}
+
 sub read_group_config {
 
     return cfs_read_file($ha_groups_config);