# do work
my $res = -1;
eval {
- $res = $self->exec_resource_agent($sid, $sc->{$sid}, $w->{state}, $w->{target});
+ $res = $self->exec_resource_agent($sid, $sc->{$sid}, $w->{state}, $w->{params});
};
if (my $err = $@) {
$haenv->log('err', $err);
} else {
my $res = -1;
eval {
- $res = $self->exec_resource_agent($sid, $sc->{$sid}, $w->{state}, $w->{target});
+ $res = $self->exec_resource_agent($sid, $sc->{$sid}, $w->{state}, $w->{params});
$res = $res << 8 if $res > 0;
};
if (my $err = $@) {
my $req_state = $sd->{state};
next if !defined($req_state);
next if $req_state eq 'freeze';
- $self->queue_resource_command($sid, $sd->{uid}, $req_state, $sd->{target});
+ $self->queue_resource_command($sid, $sd->{uid}, $req_state, {'target' => $sd->{target}});
}
return $self->run_workers();
}
sub queue_resource_command {
- my ($self, $sid, $uid, $state, $target) = @_;
+ my ($self, $sid, $uid, $state, $params) = @_;
# do not queue the excatly same command twice as this may lead to
# an inconsistent HA state when the first command fails but the CRM
state => $state,
};
- $self->{workers}->{$sid}->{target} = $target if $target;
+ $self->{workers}->{$sid}->{params} = $params if $params;
}
sub check_active_workers {
}
sub exec_resource_agent {
- my ($self, $sid, $service_config, $cmd, @params) = @_;
+ my ($self, $sid, $service_config, $cmd, $params) = @_;
# setup execution environment
} elsif ($cmd eq 'migrate' || $cmd eq 'relocate') {
- my $target = $params[0];
+ my $target = $params->{target};
if (!defined($target)) {
die "$cmd '$sid' failed - missing target\n" if !defined($target);
return EINVALID_PARAMETER;