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) = @_;
return $self->{plug}->write_lrm_status($status_obj);
}
+# check if we do node shutdown
+# we used this to decide if services should be stopped or freezed
+sub is_node_shutdown {
+ my ($self) = @_;
+
+ return $self->{plug}->is_node_shutdown();
+}
+
# implement a way to send commands to the CRM master
sub queue_crm_commands {
my ($self, $cmd) = @_;
return $self->{plug}->read_crm_commands();
}
-# we use this to enable/disbale ha
-sub service_config_exists {
+sub read_service_config {
my ($self) = @_;
- return $self->{plug}->service_config_exists();
+ return $self->{plug}->read_service_config();
}
-sub read_service_config {
+sub parse_sid {
+ my ($self, $sid) = @_;
+
+ return $self->{plug}->parse_sid($sid);
+}
+
+sub read_fence_config {
my ($self) = @_;
- return $self->{plug}->read_service_config();
+ 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}->exec_fence_agent($agent, $node, @param);
}
-sub change_service_location {
- my ($self, $sid, $node) = @_;
+# 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}->change_service_location($sid, $node);
+ return $self->{plug}->steal_service($sid, $current_node, $new_node);
}
sub read_group_config {
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
+# 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}->release_ha_manager_lock();
+}
+
+# acquire a cluster wide node agent lock
sub get_ha_agent_lock {
my ($self, $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
sub quorate {
my ($self) = @_;
return $self->{plug}->loop_end_hook(@args);
}
+sub cluster_state_update {
+ my ($self) = @_;
+
+ return $self->{plug}->cluster_state_update();
+}
+
sub watchdog_open {
my ($self) = @_;
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}->exec_resource_agent($sid, $service_config, $cmd, @params)
+ return $self->{plug}->get_max_workers();
}
-# hack to support regression tests
-sub can_fork {
+# return cluster wide enforced HA settings
+sub get_ha_settings {
my ($self) = @_;
- return $self->{plug}->can_fork();
+ return $self->{plug}->get_ha_settings();
}
1;