The params of resource methods are normally specific for each resource type.
CTs and VMs have the same interfaces in the needed cases so we could generate the params in the exec_resource_agent method. This is not clean because: * resource specific stuff shouldn't be in this method * this can make problems if we want to add another resource type in the future which has a completely different interface Signed-off-by: Thomas Lamprecht <t.lampre...@proxmox.com> --- src/PVE/HA/Env/PVE2.pm | 28 +++---------------- src/PVE/HA/Resources.pm | 72 ++++++++++++++++++++++++++++++++++++++++++------- 2 files changed, 65 insertions(+), 35 deletions(-) diff --git a/src/PVE/HA/Env/PVE2.pm b/src/PVE/HA/Env/PVE2.pm index 3709a17..2dbe4ad 100644 --- a/src/PVE/HA/Env/PVE2.pm +++ b/src/PVE/HA/Env/PVE2.pm @@ -418,12 +418,7 @@ sub exec_resource_agent { $self->log("info", "starting service $sid"); - my $params = { - node => $nodename, - vmid => $vmid - }; - - $plugin->start($self, $params); + $plugin->start($self, $vmid); $running = $plugin->check_running($vmid); @@ -441,16 +436,7 @@ sub exec_resource_agent { $self->log("info", "stopping service $sid"); - my $timeout = 60; # fixme: make this configurable - - my $params = { - node => $nodename, - vmid => $vmid, - timeout => $timeout, - forceStop => 1, - }; - - $plugin->shutdown($self, $params); + $plugin->shutdown($self, $vmid); $running = $plugin->check_running($vmid); @@ -475,17 +461,9 @@ sub exec_resource_agent { return SUCCESS; } - # we always do (live) migration - my $params = { - node => $nodename, - vmid => $vmid, - target => $target, - online => 1, - }; - my $oldconfig = $plugin->config_file($vmid, $nodename); - $plugin->migrate($self, $params); + $plugin->migrate($self, $vmid, $target, 1); # something went wrong if old config file is still there if (-f $oldconfig) { diff --git a/src/PVE/HA/Resources.pm b/src/PVE/HA/Resources.pm index 26de643..bce396a 100644 --- a/src/PVE/HA/Resources.pm +++ b/src/PVE/HA/Resources.pm @@ -89,19 +89,19 @@ sub parse_section_header { } sub start { - my ($class, $haenv, $params) = @_; + my ($class, $haenv, $id) = @_; die "implement in subclass"; } sub shutdown { - my ($class, $haenv, $param) = @_; + my ($class, $haenv, $id) = @_; die "implement in subclass"; } sub migrate { - my ($class, $haenv, $params) = @_; + my ($class, $haenv, $id, $target, $online) = @_; die "implement in subclass"; } @@ -176,22 +176,48 @@ sub exists { } sub start { - my ($class, $haenv, $params) = @_; + my ($class, $haenv, $id) = @_; + + my $nodename = $haenv->nodename(); + + my $params = { + node => $nodename, + vmid => $id + }; my $upid = PVE::API2::Qemu->vm_start($params); $haenv->upid_wait($upid); } sub shutdown { - my ($class, $haenv, $param) = @_; + my ($class, $haenv, $id) = @_; - my $upid = PVE::API2::Qemu->vm_shutdown($param); + my $nodename = $haenv->nodename(); + my $shutdown_timeout = 60; # fixme: make this configurable + + my $params = { + node => $nodename, + vmid => $id, + timeout => $shutdown_timeout, + forceStop => 1, + }; + + my $upid = PVE::API2::Qemu->vm_shutdown($params); $haenv->upid_wait($upid); } sub migrate { - my ($class, $haenv, $params) = @_; + my ($class, $haenv, $id, $target, $online) = @_; + + my $nodename = $haenv->nodename(); + + my $params = { + node => $nodename, + vmid => $id, + target => $target, + online => $online, + }; my $upid = PVE::API2::Qemu->migrate_vm($params); $haenv->upid_wait($upid); @@ -256,21 +282,47 @@ sub exists { } sub start { - my ($class, $haenv, $params) = @_; + my ($class, $haenv, $id) = @_; + + my $nodename = $haenv->nodename(); + + my $params = { + node => $nodename, + vmid => $id + }; my $upid = PVE::API2::LXC::Status->vm_start($params); $haenv->upid_wait($upid); } sub shutdown { - my ($class, $haenv, $params) = @_; + my ($class, $haenv, $id) = @_; + + my $nodename = $haenv->nodename(); + my $shutdown_timeout = 60; # fixme: make this configurable + + my $params = { + node => $nodename, + vmid => $id, + timeout => $shutdown_timeout, + forceStop => 1, + }; my $upid = PVE::API2::LXC::Status->vm_shutdown($params); $haenv->upid_wait($upid); } sub migrate { - my ($class, $haenv, $params) = @_; + my ($class, $haenv, $id, $target, $online) = @_; + + my $nodename = $haenv->nodename(); + + my $params = { + node => $nodename, + vmid => $id, + target => $target, + online => $online, + }; my $upid = PVE::API2::LXC->migrate_vm($params); $haenv->upid_wait($upid); -- 2.1.4 _______________________________________________ pve-devel mailing list pve-devel@pve.proxmox.com http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel