From 6dbf93a0f3eb84dcf0523cda03c7d17cdb0b3212 Mon Sep 17 00:00:00 2001 From: Dietmar Maurer Date: Thu, 12 Mar 2015 09:39:20 +0100 Subject: [PATCH] pass service configuration to exec_resource_agent --- src/PVE/HA/Env.pm | 4 ++-- src/PVE/HA/Env/PVE2.pm | 2 +- src/PVE/HA/LRM.pm | 9 ++++++++- src/PVE/HA/Sim/Env.pm | 2 +- src/PVE/HA/Sim/RTEnv.pm | 6 +----- 5 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/PVE/HA/Env.pm b/src/PVE/HA/Env.pm index c77e9df..4e46df9 100644 --- a/src/PVE/HA/Env.pm +++ b/src/PVE/HA/Env.pm @@ -190,9 +190,9 @@ sub watchdog_close { } sub exec_resource_agent { - my ($self, $sid, $cmd, @params) = @_; + my ($self, $sid, $service_config, $cmd, @params) = @_; - return $self->{plug}->exec_resource_agent($sid, $cmd, @params) + return $self->{plug}->exec_resource_agent($sid, $service_config, $cmd, @params) } 1; diff --git a/src/PVE/HA/Env/PVE2.pm b/src/PVE/HA/Env/PVE2.pm index 2c814fc..790562e 100644 --- a/src/PVE/HA/Env/PVE2.pm +++ b/src/PVE/HA/Env/PVE2.pm @@ -389,7 +389,7 @@ sub watchdog_close { } sub exec_resource_agent { - my ($self, $sid, $cmd, @params) = @_; + my ($self, $sid, $service_config, $cmd, @params) = @_; die "implement me"; } diff --git a/src/PVE/HA/LRM.pm b/src/PVE/HA/LRM.pm index 98a3c84..928e1de 100644 --- a/src/PVE/HA/LRM.pm +++ b/src/PVE/HA/LRM.pm @@ -259,12 +259,19 @@ sub manage_resources { # start workers my $max_workers = 4; + my $sc = $haenv->read_service_config(); + while ((time() - $starttime) < 5) { my $count = $self->check_active_workers(); foreach my $sid (keys %{$self->{workers}}) { last if $count >= $max_workers; my $w = $self->{workers}->{$sid}; + my $cd = $sc->{$sid}; + if (!$cd) { + warn "missing resource configuration for '$sid'\n"; + next; + } if (!$w->{pid}) { my $pid = fork(); if (!defined($pid)) { @@ -274,7 +281,7 @@ sub manage_resources { # do work my $res = -1; eval { - $res = $haenv->exec_resource_agent($sid, $w->{state}, $w->{target}); + $res = $haenv->exec_resource_agent($sid, $cd, $w->{state}, $w->{target}); }; if (my $err = $@) { warn $err; diff --git a/src/PVE/HA/Sim/Env.pm b/src/PVE/HA/Sim/Env.pm index fa24470..f37d8d2 100644 --- a/src/PVE/HA/Sim/Env.pm +++ b/src/PVE/HA/Sim/Env.pm @@ -284,7 +284,7 @@ sub watchdog_close { } sub exec_resource_agent { - my ($self, $sid, $cmd, @params) = @_; + my ($self, $sid, $service_config, $cmd, @params) = @_; die "implement me"; } diff --git a/src/PVE/HA/Sim/RTEnv.pm b/src/PVE/HA/Sim/RTEnv.pm index 5b4106a..2aed204 100644 --- a/src/PVE/HA/Sim/RTEnv.pm +++ b/src/PVE/HA/Sim/RTEnv.pm @@ -72,17 +72,13 @@ sub loop_end_hook { } sub exec_resource_agent { - my ($self, $sid, $cmd, @params) = @_; + my ($self, $sid, $cd, $cmd, @params) = @_; my $hardware = $self->{hardware}; my $nodename = $self->{nodename}; - my $sc = $hardware->read_service_config($nodename); - # fixme: return valid_exit code (instead of using die) - my $cd = $sc->{$sid}; - die "no such service" if !$cd; my $ss = $hardware->read_service_status($nodename); -- 2.39.5