]> git.proxmox.com Git - pve-ha-manager.git/blobdiff - src/PVE/HA/Env.pm
env: add get_static_node_stats() method
[pve-ha-manager.git] / src / PVE / HA / Env.pm
index 4e46df96b8ccf628644f2b5a3333ac0db46f7207..00e3e3c18d8c42ad8cbbdf0f7b65aabf390eb5d7 100644 (file)
@@ -26,6 +26,12 @@ sub nodename {
     return $self->{plug}->nodename();
 }
 
+sub hardware {
+    my ($self) = @_;
+
+    return $self->{plug}->hardware();
+}
+
 # manager status is stored on cluster, protected by ha_manager_lock
 sub read_manager_status {
     my ($self) = @_;
@@ -54,13 +60,12 @@ sub write_lrm_status {
     return $self->{plug}->write_lrm_status($status_obj);
 }
 
-# we use this to enable/disbale ha
-sub manager_status_exists {
+# check if we do node shutdown
+# we used this to decide if services should be stopped or freezed
+sub is_node_shutdown {
     my ($self) = @_;
 
-    die "this is not used?!"; # fixme:
-    
-    return $self->{plug}->manager_status_exists();
+    return $self->{plug}->is_node_shutdown();
 }
 
 # implement a way to send commands to the CRM master
@@ -82,10 +87,41 @@ sub read_service_config {
     return $self->{plug}->read_service_config();
 }
 
-sub change_service_location {
-    my ($self, $sid, $node) = @_;
+sub update_service_config {
+    my ($self, $sid, $param) = @_;
+
+    return $self->{plug}->update_service_config($sid, $param);
+}
+
+sub parse_sid {
+    my ($self, $sid) = @_;
+
+    return $self->{plug}->parse_sid($sid);
+}
+
+sub read_fence_config {
+    my ($self) = @_;
+
+    return $self->{plug}->read_fence_config();
+}
+
+sub fencing_mode {
+    my ($self) = @_;
+
+    return $self->{plug}->fencing_mode();
+}
+
+sub exec_fence_agent {
+    my ($self, $agent, $node, @param) = @_;
 
-    return $self->{plug}->change_service_location($sid, $node);
+    return $self->{plug}->exec_fence_agent($agent, $node, @param);
+}
+
+# this is normally only allowed by the master to recover a _fenced_ service
+sub steal_service {
+    my ($self, $sid, $current_node, $new_node) = @_;
+
+    return $self->{plug}->steal_service($sid, $current_node, $new_node);
 }
 
 sub read_group_config {
@@ -108,25 +144,42 @@ sub log {
     return $self->{plug}->log($level, @args);
 }
 
-# aquire a cluster wide manager lock 
+sub sendmail {
+    my ($self, $subject, $text) = @_;
+
+    return $self->{plug}->sendmail($subject, $text);
+}
+
+# acquire a cluster wide manager lock
 sub get_ha_manager_lock {
     my ($self) = @_;
 
     return $self->{plug}->get_ha_manager_lock();
 }
 
-# aquire a cluster wide node agent lock 
-sub get_ha_agent_lock {
+# release the cluster wide manager lock.
+# when released another CRM may step up and get the lock, thus this should only
+# get called when shutting down/deactivating the current master
+sub release_ha_manager_lock {
     my ($self) = @_;
 
-    return $self->{plug}->get_ha_agent_lock();
+    return $self->{plug}->release_ha_manager_lock();
 }
 
-# same as get_ha_agent_lock(), but immeditaley release the lock on success
-sub test_ha_agent_lock {
+# acquire a cluster wide node agent lock
+sub get_ha_agent_lock {
     my ($self, $node) = @_;
 
-    return $self->{plug}->test_ha_agent_lock($node);
+    return $self->{plug}->get_ha_agent_lock($node);
+}
+
+# release the respective node agent lock.
+# this should only get called if the nodes LRM gracefully shuts down with
+# all services already cleanly stopped!
+sub release_ha_agent_lock {
+    my ($self) = @_;
+
+    return $self->{plug}->release_ha_agent_lock();
 }
 
 # return true when cluster is quorate
@@ -164,10 +217,16 @@ sub loop_start_hook {
 
 sub loop_end_hook {
     my ($self, @args) = @_;
-    
+
     return $self->{plug}->loop_end_hook(@args);
 }
 
+sub cluster_state_update {
+    my ($self) = @_;
+
+    return $self->{plug}->cluster_state_update();
+}
+
 sub watchdog_open {
     my ($self) = @_;
 
@@ -189,10 +248,31 @@ sub watchdog_close {
     return $self->{plug}->watchdog_close($wfh);
 }
 
-sub exec_resource_agent {
-    my ($self, $sid, $service_config, $cmd, @params) = @_;
+sub after_fork {
+    my ($self) = @_;
+
+    return $self->{plug}->after_fork();
+}
+
+# maximal number of workers to fork,
+# return 0 as a hack to support regression tests
+sub get_max_workers {
+    my ($self) = @_;
+
+    return $self->{plug}->get_max_workers();
+}
+
+# return cluster wide enforced HA settings
+sub get_ha_settings {
+    my ($self) = @_;
+
+    return $self->{plug}->get_ha_settings();
+}
+
+sub get_static_node_stats {
+    my ($self) = @_;
 
-    return $self->{plug}->exec_resource_agent($sid, $service_config, $cmd, @params)
+    return $self->{plug}->get_static_node_stats();
 }
 
 1;