mirror of
git://git.proxmox.com/git/pve-ha-manager.git
synced 2025-01-04 09:17:59 +03:00
add Usage base plugin and Usage::Basic plugin
in preparation to also support static resource scheduling via another such Usage plugin. The interface is designed in anticipation of the Usage::Static plugin, the Usage::Basic plugin doesn't require all parameters. In Usage::Static, the $haenv will necessary for logging and getting the static node stats. add_service_usage_to_node() and score_nodes_to_start_service() take the sid, service node and the former also the optional migration target (during a migration it's not clear whether the config file has already been moved or not) to be able to get the static service stats. Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
This commit is contained in:
parent
eea0c60923
commit
c8c6e462fc
2
debian/pve-ha-manager.install
vendored
2
debian/pve-ha-manager.install
vendored
@ -33,5 +33,7 @@
|
||||
/usr/share/perl5/PVE/HA/Resources/PVECT.pm
|
||||
/usr/share/perl5/PVE/HA/Resources/PVEVM.pm
|
||||
/usr/share/perl5/PVE/HA/Tools.pm
|
||||
/usr/share/perl5/PVE/HA/Usage.pm
|
||||
/usr/share/perl5/PVE/HA/Usage/Basic.pm
|
||||
/usr/share/perl5/PVE/Service/pve_ha_crm.pm
|
||||
/usr/share/perl5/PVE/Service/pve_ha_lrm.pm
|
||||
|
@ -1,5 +1,5 @@
|
||||
SIM_SOURCES=CRM.pm Env.pm Groups.pm Resources.pm LRM.pm Manager.pm \
|
||||
NodeStatus.pm Tools.pm FenceConfig.pm Fence.pm
|
||||
NodeStatus.pm Tools.pm FenceConfig.pm Fence.pm Usage.pm
|
||||
|
||||
SOURCES=${SIM_SOURCES} Config.pm
|
||||
|
||||
@ -8,6 +8,7 @@ install:
|
||||
install -d -m 0755 ${DESTDIR}${PERLDIR}/PVE/HA
|
||||
for i in ${SOURCES}; do install -D -m 0644 $$i ${DESTDIR}${PERLDIR}/PVE/HA/$$i; done
|
||||
make -C Resources install
|
||||
make -C Usage install
|
||||
make -C Env install
|
||||
|
||||
.PHONY: installsim
|
||||
|
49
src/PVE/HA/Usage.pm
Normal file
49
src/PVE/HA/Usage.pm
Normal file
@ -0,0 +1,49 @@
|
||||
package PVE::HA::Usage;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
sub new {
|
||||
my ($class, $haenv) = @_;
|
||||
|
||||
die "implement in subclass";
|
||||
}
|
||||
|
||||
sub add_node {
|
||||
my ($self, $nodename) = @_;
|
||||
|
||||
die "implement in subclass";
|
||||
}
|
||||
|
||||
sub remove_node {
|
||||
my ($self, $nodename) = @_;
|
||||
|
||||
die "implement in subclass";
|
||||
}
|
||||
|
||||
sub list_nodes {
|
||||
my ($self) = @_;
|
||||
|
||||
die "implement in subclass";
|
||||
}
|
||||
|
||||
sub contains_node {
|
||||
my ($self, $nodename) = @_;
|
||||
|
||||
die "implement in subclass";
|
||||
}
|
||||
|
||||
sub add_service_usage_to_node {
|
||||
my ($self, $nodename, $sid, $service_node, $migration_target) = @_;
|
||||
|
||||
die "implement in subclass";
|
||||
}
|
||||
|
||||
# Returns a hash with $nodename => $score pairs. A lower $score is better.
|
||||
sub score_nodes_to_start_service {
|
||||
my ($self, $sid, $service_node) = @_;
|
||||
|
||||
die "implement in subclass";
|
||||
}
|
||||
|
||||
1;
|
52
src/PVE/HA/Usage/Basic.pm
Normal file
52
src/PVE/HA/Usage/Basic.pm
Normal file
@ -0,0 +1,52 @@
|
||||
package PVE::HA::Usage::Basic;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use base qw(PVE::HA::Usage);
|
||||
|
||||
sub new {
|
||||
my ($class, $haenv) = @_;
|
||||
|
||||
return bless {
|
||||
nodes => {},
|
||||
}, $class;
|
||||
}
|
||||
|
||||
sub add_node {
|
||||
my ($self, $nodename) = @_;
|
||||
|
||||
$self->{nodes}->{$nodename} = 0;
|
||||
}
|
||||
|
||||
sub remove_node {
|
||||
my ($self, $nodename) = @_;
|
||||
|
||||
delete $self->{nodes}->{$nodename};
|
||||
}
|
||||
|
||||
sub list_nodes {
|
||||
my ($self) = @_;
|
||||
|
||||
return keys $self->{nodes}->%*;
|
||||
}
|
||||
|
||||
sub contains_node {
|
||||
my ($self, $nodename) = @_;
|
||||
|
||||
return defined($self->{nodes}->{$nodename});
|
||||
}
|
||||
|
||||
sub add_service_usage_to_node {
|
||||
my ($self, $nodename, $sid, $service_node, $migration_target) = @_;
|
||||
|
||||
$self->{nodes}->{$nodename}++;
|
||||
}
|
||||
|
||||
sub score_nodes_to_start_service {
|
||||
my ($self, $sid, $service_node) = @_;
|
||||
|
||||
return $self->{nodes};
|
||||
}
|
||||
|
||||
1;
|
6
src/PVE/HA/Usage/Makefile
Normal file
6
src/PVE/HA/Usage/Makefile
Normal file
@ -0,0 +1,6 @@
|
||||
SOURCES=Basic.pm
|
||||
|
||||
.PHONY: install
|
||||
install:
|
||||
install -d -m 0755 ${DESTDIR}${PERLDIR}/PVE/HA/Usage
|
||||
for i in ${SOURCES}; do install -D -m 0644 $$i ${DESTDIR}${PERLDIR}/PVE/HA/Usage/$$i; done
|
Loading…
Reference in New Issue
Block a user