sub getSTONITHwait()

in AzureCloudExcellenceforSAP/azsapsca/patterns/AZSAP/sbdwait-00001.pl [121:170]


sub getSTONITHwait {
	SDP::Core::printDebug('> getSTONITHwait', 'BEGIN');
	my $RCODE = 0;
	my $FILE_OPEN = 'ha.txt';
	my $SECTION = 'cibadmin -Q';
	my @CONTENT = ();
	my $HA_DOWN = 0;

	if ( SDP::Core::getSection($FILE_OPEN, $SECTION, \@CONTENT) ) {
		foreach $_ (@CONTENT) {
			next if ( m/^\s*$/ ); # Skip blank lines
			if ( /CIB failed.*connection failed/ ) {
				SDP::Core::printDebug('WARNING', "CIB Connection Failed, Checking cib.xml");
				$HA_DOWN = 1;
				last;
			}
			if ( /nvpair.*name=.*stonith-timeout.*value="(.*)"/ ) {
				$STONITH_TIMEOUT = $1;
				SDP::Core::printDebug("  CIB STONITH TIMEOUT", $STONITH_TIMEOUT);
				$RCODE++;
				last;
			}
		}
	} else {
		SDP::Core::updateStatus(STATUS_ERROR, "ERROR: getSTONITHwait(): Cannot find \"$SECTION\" section in $FILE_OPEN");
	}
	if ( $HA_DOWN ) {
		$SECTION = '/cib.xml$';
		if ( SDP::Core::getSection($FILE_OPEN, $SECTION, \@CONTENT) ) {
			foreach $_ (@CONTENT) {
				next if ( m/^\s*$/ ); # Skip blank lines
				if ( /nvpair.*name=.*stonith-timeout.*value="(.*)"/ ) {
					$STONITH_TIMEOUT = $1;
					SDP::Core::printDebug("  CIB.XML STONITH TIMEOUT", $STONITH_TIMEOUT);
					$RCODE++;
					last;
				}
			}
		} else {
			SDP::Core::updateStatus(STATUS_ERROR, "ERROR: getSTONITHwait(): Cannot find \"$SECTION\" section in $FILE_OPEN");
		}
	}
	if ( $RCODE ) {
		$STONITH_TIMEOUT =~ s/\D*//g;
	} else {
		SDP::Core::printDebug("  DEFAULT STONITH TIMEOUT", $STONITH_TIMEOUT);
	}
	SDP::Core::printDebug("< getSTONITHwait", "Returns: $RCODE");
	return $RCODE;
}