[pve-devel] applied: [PATCH manager] fix #1578: api/resource hastate: fallback to resource cfg state
Wolfgang Bumiller
w.bumiller at proxmox.com
Tue Nov 28 16:16:56 CET 2017
applied
On Mon, Nov 27, 2017 at 12:43:31PM +0100, Thomas Lamprecht wrote:
> With ignored or still queued services we have no hastate for a
> service in the manager status available.
>
> As we use hastate in the web UI to determine if a service is
> configured for HA this could lead to confusion there.
> For example, the VM/CT 'Manage HA' window thinks tries to add the
> service again if its in the 'ignored' state, and then the backend
> errors out because it is already configured.
>
> Signed-off-by: Thomas Lamprecht <t.lamprecht at proxmox.com>
> ---
> PVE/API2/Cluster.pm | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/PVE/API2/Cluster.pm b/PVE/API2/Cluster.pm
> index 0e94e9ff..7f38e61c 100644
> --- a/PVE/API2/Cluster.pm
> +++ b/PVE/API2/Cluster.pm
> @@ -14,6 +14,7 @@ use PVE::Storage;
> use PVE::API2Tools;
> use PVE::API2::Backup;
> use PVE::API2::HAConfig;
> +use PVE::HA::Env::PVE2;
> use PVE::HA::Config;
> use PVE::API2::ClusterConfig;
> use JSON;
> @@ -188,6 +189,7 @@ __PACKAGE__->register_method({
> my $idlist = $vmlist->{ids} || {};
>
> my $hastatus = PVE::HA::Config::read_manager_status();
> + my $haresources = PVE::HA::Config::read_resources_config();
> my $hatypemap = {
> 'qemu' => 'vm',
> 'lxc' => 'ct'
> @@ -245,8 +247,11 @@ __PACKAGE__->register_method({
> # get ha status
> if (my $hatype = $hatypemap->{$entry->{type}}) {
> my $sid = "$hatype:$vmid";
> - if (defined($hastatus->{service_status}->{$sid})) {
> - $entry->{hastate} = $hastatus->{service_status}->{$sid}->{state};
> + my $service;
> + if ($service = $hastatus->{service_status}->{$sid}) {
> + $entry->{hastate} = $service->{state};
> + } elsif ($service = $haresources->{ids}->{$sid}) {
> + $entry->{hastate} = $service->{state};
> }
> }
>
> --
> 2.11.0
More information about the pve-devel
mailing list