"""
Custom datasources related to ``corosync``
"""
import os
from insights.components.rhel_version import IsRhel7, IsRhel8, IsRhel9
from insights.core.context import HostContext
from insights.core.exceptions import SkipComponent
from insights.core.plugins import datasource
[docs]
@datasource(HostContext, [IsRhel7, IsRhel8, IsRhel9])
def corosync_cmapctl_cmds(broker):
"""
corosync-cmapctl use different arguments on RHEL7 and RHEL8.
Returns:
list: A list of related corosync-cmapctl commands based the RHEL version.
"""
corosync_cmd = '/usr/sbin/corosync-cmapctl'
if os.path.exists(corosync_cmd):
# RHEL 7
if broker.get(IsRhel7):
return [
corosync_cmd,
' '.join([corosync_cmd, '-d runtime.schedmiss.timestamp']),
' '.join([corosync_cmd, '-d runtime.schedmiss.delay'])]
# Others
elif broker.get(IsRhel8) or broker.get(IsRhel9):
return [
corosync_cmd,
' '.join([corosync_cmd, '-m stats']),
' '.join([corosync_cmd, '-C schedmiss'])]
raise SkipComponent()