diff --git a/Anvil/Tools/System.pm b/Anvil/Tools/System.pm
index 321ffda5..9b0f53ef 100644
--- a/Anvil/Tools/System.pm
+++ b/Anvil/Tools/System.pm
@@ -1663,7 +1663,7 @@ sub configure_ipmi
# Is this host in an Anvil!?
$anvil->Database->get_hosts();
$anvil->Database->get_anvils();
-
+
my $anvil_uuid = "";
my $host_uuid = $anvil->Get->host_uuid;
if ((exists $anvil->data->{hosts}{host_uuid}{$host_uuid}) && ($anvil->data->{hosts}{host_uuid}{$host_uuid}{anvil_uuid}))
@@ -1679,9 +1679,29 @@ sub configure_ipmi
return(0);
}
- # Look for a job for 'anvil-join-anvil' for this host. With it, we'll figure out the password and
- # which machine we are.
- my $query = "
+ # Look for a match in the anvils table for this host uuid.
+ my $machine = "";
+ if ($anvil->data->{anvils}{anvil_uuid}{$anvil_uuid}{anvil_node1_host_uuid} eq $host_uuid)
+ {
+ $machine = "node1";
+ $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $debug, list => { machine => $machine }});
+ }
+ elsif ($anvil->data->{anvils}{anvil_uuid}{$anvil_uuid}{anvil_node2_host_uuid} eq $host_uuid)
+ {
+ $machine = "node2";
+ $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $debug, list => { machine => $machine }});
+ }
+ elsif ($anvil->data->{anvils}{anvil_uuid}{$anvil_uuid}{anvil_dr1_host_uuid} eq $host_uuid)
+ {
+ $machine = "dr1";
+ $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $debug, list => { machine => $machine }});
+ }
+
+ if (not $machine)
+ {
+ # Look for a job for 'anvil-join-anvil' for this host. With it, we'll figure out the password
+ # and which machine we are.
+ my $query = "
SELECT
job_uuid,
job_data
@@ -1695,36 +1715,37 @@ ORDER BY
modified_date DESC
LIMIT 1
;";
- $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $debug, list => { query => $query }});
- my $results = $anvil->Database->query({query => $query, source => $THIS_FILE, line => __LINE__});
- my $count = @{$results};
- $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $debug, list => {
- results => $results,
- count => $count,
- }});
- my $job_uuid = defined $results->[0]->[0] ? $results->[0]->[0] : "";
- my $job_data = defined $results->[0]->[1] ? $results->[0]->[1] : "";
- $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $debug, list => {
- job_uuid => $job_uuid,
- job_data => $anvil->Log->is_secure($job_data),
- }});
- if (not $job_uuid)
- {
- # Unable to proceed.
- $anvil->Log->entry({source => $THIS_FILE, line => __LINE__, level => 1, priority => "err", key => "log_0501"});
- return(0);
+ $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $debug, list => { query => $query }});
+ my $results = $anvil->Database->query({query => $query, source => $THIS_FILE, line => __LINE__});
+ my $count = @{$results};
+ $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $debug, list => {
+ results => $results,
+ count => $count,
+ }});
+ my $job_uuid = defined $results->[0]->[0] ? $results->[0]->[0] : "";
+ my $job_data = defined $results->[0]->[1] ? $results->[0]->[1] : "";
+ $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $debug, list => {
+ job_uuid => $job_uuid,
+ job_data => $anvil->Log->is_secure($job_data),
+ }});
+ if (not $job_uuid)
+ {
+ # Unable to proceed.
+ $anvil->Log->entry({source => $THIS_FILE, line => __LINE__, level => 1, priority => "err", key => "log_0501"});
+ return(0);
+ }
+
+ ($machine, $manifest_uuid, $anvil_uuid) = ($job_data =~ /as_machine=(.*?),manifest_uuid=(.*?),anvil_uuid=(.*?)$/);
+ $machine = "" if not defined $machine;
+ $manifest_uuid = "" if not defined $manifest_uuid;
+ $anvil_uuid = "" if not defined $anvil_uuid;
+ $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $debug, list => {
+ machine => $machine,
+ manifest_uuid => $manifest_uuid,
+ anvil_uuid => $anvil_uuid,
+ }});
}
- (my $machine, $manifest_uuid, $anvil_uuid) = ($job_data =~ /as_machine=(.*?),manifest_uuid=(.*?),anvil_uuid=(.*?)$/);
- $machine = "" if not defined $machine;
- $manifest_uuid = "" if not defined $manifest_uuid;
- $anvil_uuid = "" if not defined $anvil_uuid;
- $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $debug, list => {
- machine => $machine,
- manifest_uuid => $manifest_uuid,
- anvil_uuid => $anvil_uuid,
- }});
-
# Load the manifest.
my $problem = $anvil->Striker->load_manifest({debug => $debug, manifest_uuid => $manifest_uuid});
$anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $debug, list => { problem => $problem }});
diff --git a/scancore-agents/scan-drbd/scan-drbd.xml b/scancore-agents/scan-drbd/scan-drbd.xml
index 364acca2..a2c5e532 100644
--- a/scancore-agents/scan-drbd/scan-drbd.xml
+++ b/scancore-agents/scan-drbd/scan-drbd.xml
@@ -120,52 +120,16 @@ Note: Node peers should always use protocol C and fencing set to 'resource-and-s
Protocol A is suitable for DR hosts with higher latency connections, but the DR host will be allowed to fall slightly behind the nodes. Protocol C ensures that the DR host is never behind, but could hurt storage performance.
-
-The resource: [#!variable!resource_name!#] volume: [#!variable!volume_number!#] connection state to: [#!variable!peer_name!#] has changed from: [#!variable!old_connection_state!#] to: [#!variable!new_connection_state!#].
-
-========
-#!variable!old_connection_state!# - #!variable!old_connection_state_explain!#
-#!variable!new_connection_state!# - #!variable!new_connection_state_explain!#
-========
-
-
-The resource: [#!variable!resource_name!#] volume: [#!variable!volume_number!#] local disk state relative to: [#!variable!peer_name!#] has changed from: [#!variable!old_local_disk_state!#] to: [#!variable!new_local_disk_state!#].
-
-========
-#!variable!old_local_disk_state!# - #!variable!old_local_disk_state_explain!#
-#!variable!new_local_disk_state!# - #!variable!new_local_disk_state_explain!#
-========
-
-
-The resource: [#!variable!resource_name!#] volume: [#!variable!volume_number!#] peer: [#!variable!peer_name!#] disk state has changed from: [#!variable!old_disk_state!#] to: [#!variable!new_disk_state!#].
-
-========
-#!variable!old_disk_state!# - #!variable!old_disk_state_explain!#
-#!variable!new_disk_state!# - #!variable!new_disk_state_explain!#
-========
-
-
-The resource: [#!variable!resource_name!#] volume: [#!variable!volume_number!#] local role relative to: [#!variable!peer_name!#] has changed from: [#!variable!old_local_role!#] to: [#!variable!new_local_role!#].
-
-========
-#!variable!old_local_role!# - #!variable!old_local_role_explain!#
-#!variable!new_local_role!# - #!variable!new_local_role_explain!#
-========
-
-
-The resource: [#!variable!resource_name!#] volume: [#!variable!volume_number!#] peer: [#!variable!peer_name!#] role has changed from: [#!variable!old_role!#] to: [#!variable!new_role!#].
-
-========
-#!variable!old_role!# - #!variable!old_role_explain!#
-#!variable!new_role!# - #!variable!new_role_explain!#
-========
-
+ The resource: [#!variable!resource_name!#] volume: [#!variable!volume_number!#] connection state to: [#!variable!peer_name!#] has changed from: [#!variable!old_connection_state!#] to: [#!variable!new_connection_state!#].
+ The resource: [#!variable!resource_name!#] volume: [#!variable!volume_number!#] local disk state relative to: [#!variable!peer_name!#] has changed from: [#!variable!old_local_disk_state!#] to: [#!variable!new_local_disk_state!#].
+ The resource: [#!variable!resource_name!#] volume: [#!variable!volume_number!#] peer: [#!variable!peer_name!#] disk state has changed from: [#!variable!old_disk_state!#] to: [#!variable!new_disk_state!#].
+ The resource: [#!variable!resource_name!#] volume: [#!variable!volume_number!#] local role relative to: [#!variable!peer_name!#] has changed from: [#!variable!old_local_role!#] to: [#!variable!new_local_role!#].
+ The resource: [#!variable!resource_name!#] volume: [#!variable!volume_number!#] peer: [#!variable!peer_name!#] role has changed from: [#!variable!old_role!#] to: [#!variable!new_role!#].
The resource: [#!variable!resource_name!#] volume: [#!variable!volume_number!#] peer: [#!variable!peer_name!#]'s out-of-sync size has changed from: [#!variable!old_out_of_sync_size!#] to: [#!variable!new_out_of_sync_size!#].
The resource: [#!variable!resource_name!#] volume: [#!variable!volume_number!#] peer: [#!variable!peer_name!#]'s replication speed has changed from: [#!variable!old_replication_speed!#/sec] to: [#!variable!new_replication_speed!#/sec].
The resource: [#!variable!resource_name!#] volume: [#!variable!volume_number!#] peer: [#!variable!peer_name!#]'s time to resync changed from: [#!variable!old_estimated_time_to_sync!#] to: [#!variable!new_estimated_time_to_sync!#].
The resource: [#!variable!resource_name!#] volume: [#!variable!volume_number!#] IP address/port used to replicate with the peer: [#!variable!peer_name!#] has changed from: [#!variable!old_ip_address!#:#!variable!old_tcp_port!#] to: [#!variable!new_ip_address!#:#!variable!new_tcp_port!#].
-
-The resource: [#!variable!resource_name!#] volume: [#!variable!volume_number!#] replication protocol used to sync with the peer: [#!variable!peer_name!#] has changed from: [#!variable!old_protocol!#] to: [#!variable!new_protocol!#].
+ The resource: [#!variable!resource_name!#] volume: [#!variable!volume_number!#] replication protocol used to sync with the peer: [#!variable!peer_name!#] has changed from: [#!variable!old_protocol!#] to: [#!variable!new_protocol!#].
Note: Protocol A is OK when replicating to a DR host. When used, it allows the DR host to fall behind the nodes, which helps avoids a performance hit when the network latency / speed to the DR host is higher than tolerable. Between nodes, protocol C must always be used, which ensures synchronous replication.