|  |  | getClusterConfig()Gets cluster configuration information from the cibadmin -Q output or cib.xml if the node is not connected to the cluster. It includes information from the <cib> and <cluster_property_set> tags.
 Args:           None
 Returns:        Dictionary with keys
 connected-to-cluster (Boolean) - True if the node is connected to the cluster, and False if not
 *All other key:value pairs are derived from the cluster configuration file itself
 Example:
 
 CLUSTER = HAE.getClusterConfig()
 if 'stonith-enabled' in CLUSTER:
 if "true" in CLUSTER['stonith-enabled']:
 Core.updateStatus(Core.IGNORE, "Stonith is enabled for the cluster")
 else:
 Core.updateStatus(Core.WARN, "Stonith is disabled for the cluster")
 else:
 Core.updateStatus(Core.WARN, "Stonith is disabled by default for the cluster")
 getConfigCTDB()Gets the /etc/sysconfig/ctdb configuration file information.
 Args:           None
 Returns:        Dictionary with keys
 *All key:value pairs are derived from the configuration file itself. All key names are changed to uppercase. All values are left as is.
 Example:
 
 CTDB = HAE.getConfigCTDB()
 if 'CTDB_START_AS_DISABLED' in CTDB:
 if "yes" in CTDB['CTDB_START_AS_DISABLED']:
 Core.updateStatus(Core.IGNORE, "CTDB Starting disabled")
 else:
 Core.updateStatus(Core.WARN, "CTDB Starting enabled")
 else:
 Core.updateStatus(Core.ERROR, "Missing CTDB_START_AS_DISABLED, ignoring test")
 getConfigCorosync()Gets Corosync configuration information from /etc/corosync/corosync.conf. All values are forced to lowercase.
 Args:           None
 Returns:        Dictionary with keys and lists
 *All key:value pairs are derived from the cluster configuration file itself. The totem interfaces are a list of dictionaries within the totem dictionary.
 Example:
 
 COROSYNC = HAE.getConfigCorosync()
 BINDADDRS = {}
 DUP_BINDADDRS = {}
 for I in range(0, len(COROSYNC['totem']['interface'])):
 ADDR = COROSYNC['totem']['interface'][I]['bindnetaddr']
 if ADDR in BINDADDRS:
 # There is a duplicate bind net address key, add the duplicate to the list
 DUP_BINDADDRS[ADDR] = True
 else:
 # The address is not a duplicate, add it to the list of bind net addresses to check
 BINDADDRS[ADDR] = True
 if( len(DUP_BINDADDRS) > 0 ):
 Core.updateStatus(Core.CRIT, "Detected Duplicate Corosync Bind Addresses: " + " ".join(DUP_BINDADDRS.keys()))
 else:
 Core.updateStatus(Core.IGNORE, "All Corosync Bind Addresses are Unique")
 getNodeInfo()Gets cluster node information from the cibadmin -Q output or cib.xml if the node is not connected to the cluster. It includes information from the <node> and <node_state> tags. Only key/value pairs within the <node_state> tag itself are included, not tags below <node_state>.
 Args:           None
 Returns:        List of Node Dictionaries with keys
 *All key:value pairs are derived from the configuration file itself.
 Example:
 
 STANDBY_NODES = []
 NODES = HAE.getNodeInfo()
 for I in range(0, len(NODES)):
 # If the standby key exists in the node dictionary, proceed
 if "standby" in NODES[I]:
 if 'on' in NODES[I]['standby']:
 STANDBY_NODES.append(NODES[I]['uname'])
 if( len(STANDBY_NODES) > 0 ):
 Core.updateStatus(Core.WARN, "Node(s) in standby mode: " + " ".join(STANDBY_NODES))
 else:
 Core.updateStatus(Core.IGNORE, "Node(s) in standby mode: None")
 getSBDInfo()Gets split brain detection partition information. Gathers information from the sbd dump command and the /etc/sysconfig/sbd file. SBD partitions with invalid sbd dump output are ignored.
 Args:           None
 Returns:        List of SBD Dictionaries with keys
 SBD_DEVICE (String) - The /etc/sysconfig/sbd SDB_DEVICE variable. This value applies to all and is stored with each sbd device.
 SBD_OPTS (String) - The /etc/sysconfig/sbd SBD_OPTS variable
 Version (Int) - The SDB header version string
 Slots (Int) - The number of SDB slots
 Sector_Size (Int) - The SBD sector size
 Watchdog (Int) - The SBD watchdog timeout
 Allocate (Int) - The SBD allocate timeout
 Loop (Int) - The SBD loop timeout
 MsgWait (Int) - The SBD msgwait timeout
 Example:
 
 SBD = HAE.getSBDInfo()
 MSG_WAIT_MIN = 300
 MSG_WAIT_OVERALL = MSG_WAIT_MIN
 # Find the smallest msgwait value among the SBD partitions
 for I in range(0, len(SBD)):
 if( SBD[I]['MsgWait'] < MSG_WAIT_OVERALL ):
 MSG_WAIT_OVERALL = SBD[I]['MsgWait']
 # See if the smallest msgwait is less than the minimum required
 if ( MSG_WAIT_OVERALL < MSG_WAIT_MIN ):
 Core.updateStatus(Core.REC, "Consider changing your msgwait time")
 else:
 Core.updateStatus(Core.IGNORE, "The msgwait is sufficient")
 haeConnected()Determines if the node is connected to the HAE cluster.
 Args:           None
 Returns:        True if connected, False if disconnected
 Example:
 
 if HAE.haeConnected():
 Core.updateStatus(Core.IGNORE, "Node connected to HAE Cluster")
 else:
 Core.updateStatus(Core.WARN, "Node is disconnected, start HAE cluster services")
 haeEnabled()Determines if an HAE cluster is enabled on the node based on a corosysnc.conf file.
 Args:           None
 Returns:        True if enabled, False if disabled
 Example:
 
 if HAE.haeEnabled():
 Core.updateStatus(Core.IGNORE, "HAE Cluster enabled")
 else:
 Core.updateStatus(Core.WARN, "HAE Cluster disabled")
 |