Left 2 comments inline.

On 7/4/25 20:16, Daniel Kral wrote:
> 
> diff --git a/src/PVE/HA/Config.pm b/src/PVE/HA/Config.pm
> index 424a6e1..59bafd7 100644
> --- a/src/PVE/HA/Config.pm
> +++ b/src/PVE/HA/Config.pm
> @@ -234,6 +234,11 @@ sub read_group_config {
>      return cfs_read_file($ha_groups_config);
>  }
>  
> +sub delete_group_config {
> +
> +    unlink $ha_groups_config or die "failed to remove group config: $!\n";

This results in the following error:
        Abort HA group migration: failed to remove group config: No such file
or directory

The value in $ha_groups_config is only part of the path to the
groups.cfg file. It works for the remaining functions here because the
cfs_write_file() and cfs_read_file() functions append prepend "/etc/pve/".

Could be fixed by:
    my $group_config_file = "/etc/pve/" . $ha_groups_config;

    unlink $group_config_file or die "failed to remove group config: $!\n";

or something similar.

> +}
> +
>  sub write_group_config {
>      my ($cfg) = @_;
>  
> diff --git a/src/PVE/HA/Env.pm b/src/PVE/HA/Env.pm
> index 5cee7b3..1325676 100644
> --- a/src/PVE/HA/Env.pm
> +++ b/src/PVE/HA/Env.pm
> @@ -100,6 +100,12 @@ sub update_service_config {
>      return $self->{plug}->update_service_config($sid, $param);
>  }
>  
> +sub write_service_config {
> +    my ($self, $conf) = @_;
> +
> +    $self->{plug}->write_service_config($conf);
> +}
> +
>  sub parse_sid {
>      my ($self, $sid) = @_;
>  
> @@ -137,12 +143,24 @@ sub read_rules_config {
>      return $self->{plug}->read_rules_config();
>  }
>  
> +sub write_rules_config {
> +    my ($self, $rules) = @_;
> +
> +    $self->{plug}->write_rules_config($rules);
> +}
> +
>  sub read_group_config {
>      my ($self) = @_;
>  
>      return $self->{plug}->read_group_config();
>  }
>  
> +sub delete_group_config {
> +    my ($self) = @_;
> +
> +    $self->{plug}->delete_group_config();
> +}
> +
>  # this should return a hash containing info
>  # what nodes are members and online.
>  sub get_node_info {
> @@ -288,4 +306,10 @@ sub get_static_node_stats {
>      return $self->{plug}->get_static_node_stats();
>  }
>  
> +sub get_node_version {
> +    my ($self, $node) = @_;
> +
> +    return $self->{plug}->get_node_version($node);
> +}
> +
>  1;
> diff --git a/src/PVE/HA/Env/PVE2.pm b/src/PVE/HA/Env/PVE2.pm
> index 58fd36e..aecffc0 100644
> --- a/src/PVE/HA/Env/PVE2.pm
> +++ b/src/PVE/HA/Env/PVE2.pm
> @@ -141,6 +141,12 @@ sub update_service_config {
>      return PVE::HA::Config::update_resources_config($sid, $param);
>  }
>  
> +sub write_service_config {
> +    my ($self, $conf) = @_;
> +
> +    return PVE::HA::Config::write_resources_config($conf);
> +}
> +
>  sub parse_sid {
>      my ($self, $sid) = @_;
>  
> @@ -201,12 +207,24 @@ sub read_rules_config {
>      return PVE::HA::Config::read_and_check_rules_config();
>  }
>  
> +sub write_rules_config {
> +    my ($self, $rules) = @_;
> +
> +    PVE::HA::Config::write_rules_config($rules);
> +}
> +
>  sub read_group_config {
>      my ($self) = @_;
>  
>      return PVE::HA::Config::read_group_config();
>  }
>  
> +sub delete_group_config {
> +    my ($self) = @_;
> +
> +    PVE::HA::Config::delete_group_config();
> +}
> +
>  # this should return a hash containing info
>  # what nodes are members and online.
>  sub get_node_info {
> @@ -489,4 +507,14 @@ sub get_static_node_stats {
>      return $stats;
>  }
>  
> +sub get_node_version {
> +    my ($self, $node) = @_;
> +
> +    my $version_info = PVE::Cluster::get_node_kv('version-info', $node);
> +
> +    return undef if !$version_info->{$node};
> +
> +    return $version_info->{$node}->{version};

This throws an error, stopping the migration since it depends on all
nodes having the correct version, because the value in
$version_info->{$node} is a string. Could be fixed by:

    my $node_version_info = eval { decode_json($version_info->{$node}) };
    return $node_version_info->{version};

> +}
> +
>  1;
> diff --git a/src/PVE/HA/Manager.pm b/src/PVE/HA/Manager.pm
> index 4357253..b2fd896 100644
> --- a/src/PVE/HA/Manager.pm
> +++ b/src/PVE/HA/Manager.pm
> @@ -464,6 +464,97 @@ sub update_crm_commands {
>  
>  }
>


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

Reply via email to