}
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";
}
die "implement in subclass"
}
-sub check_running {
- my ($class, $id) = @_;
-
- die "implement in subclass";
-}
-
-
-# virtual machine resource class
-package PVE::HA::Resources::PVEVM;
-
-use strict;
-use warnings;
-
-use PVE::QemuServer;
-use PVE::API2::Qemu;
-
-use base qw(PVE::HA::Resources);
-
-sub type {
- return 'vm';
-}
-
-sub verify_name {
- my ($class, $name) = @_;
-
- die "invalid VMID\n" if $name !~ m/^[1-9][0-9]+$/;
-}
+sub exists {
+ my ($class, $id, $noerr) = @_;
-sub options {
- return {
- state => { optional => 1 },
- group => { optional => 1 },
- comment => { optional => 1 },
- max_restart => { optional => 1 },
- max_relocate => { optional => 1 },
- };
-}
-
-sub config_file {
- my ($class, $vmid, $nodename) = @_;
-
- return PVE::QemuServer::config_file($vmid, $nodename);
-}
-
-sub start {
- my ($class, $haenv, $params) = @_;
-
- my $upid = PVE::API2::Qemu->vm_start($params);
- $haenv->upid_wait($upid);
-}
-
-sub shutdown {
- my ($class, $haenv, $param) = @_;
-
- my $upid = PVE::API2::Qemu->vm_shutdown($param);
- $haenv->upid_wait($upid);
-}
-
-
-sub migrate {
- my ($class, $haenv, $params) = @_;
-
- my $upid = PVE::API2::Qemu->migrate_vm($params);
- $haenv->upid_wait($upid);
+ die "implement in subclass"
}
sub check_running {
- my ($class, $vmid) = @_;
+ my ($class, $haenv, $id) = @_;
- return PVE::QemuServer::check_running($vmid, 1);
-}
-
-
-# container resource class
-package PVE::HA::Resources::PVECT;
-
-use strict;
-use warnings;
-
-use PVE::LXC;
-use PVE::API2::LXC::Status;
-
-use base qw(PVE::HA::Resources);
-
-sub type {
- return 'ct';
-}
-
-sub verify_name {
- my ($class, $name) = @_;
-
- die "invalid VMID\n" if $name !~ m/^[1-9][0-9]+$/;
-}
-
-sub options {
- return {
- state => { optional => 1 },
- group => { optional => 1 },
- comment => { optional => 1 },
- max_restart => { optional => 1 },
- max_relocate => { optional => 1 },
- };
-}
-
-sub config_file {
- my ($class, $vmid, $nodename) = @_;
-
- return PVE::LXC::config_file($vmid, $nodename);
-}
-
-sub start {
- my ($class, $haenv, $params) = @_;
-
- my $upid = PVE::API2::LXC::Status->vm_start($params);
- $haenv->upid_wait($upid);
-}
-
-sub shutdown {
- my ($class, $haenv, $params) = @_;
-
- my $upid = PVE::API2::LXC::Status->vm_shutdown($params);
- $haenv->upid_wait($upid);
-}
-
-sub migrate {
- my ($class, $haenv, $params) = @_;
-
- my $upid = PVE::API2::LXC->migrate_vm($params);
- $haenv->upid_wait($upid);
+ die "implement in subclass";
}
-sub check_running {
- my ($class, $vmid) = @_;
+sub remove_locks {
+ my ($self, $haenv, $id, $locks, $service_node) = @_;
- return PVE::LXC::check_running($vmid);
+ die "implement in subclass";
}