ansible/test/units/modules/test_service_facts.py
dberg1 cdf62edc65
service_facts: return service state information on AIX (#72073)
* service_facts: return service state information on AIX

AIX uses the System Resource Controller (SRC) to manage services.
See https://www.ibm.com/support/knowledgecenter/ssw_aix_72/osmanagement/sysrescon.htm
Use lssrc command on AIX to return service state information.


Co-authored-by: dberg1 <dberg1@github.com>
2020-10-13 11:28:59 -04:00

126 lines
5.8 KiB
Python

# -*- coding: utf-8 -*-
# Copyright (c) 2020 Ansible Project
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
from __future__ import absolute_import, division, print_function
__metaclass__ = type
from units.compat import unittest
from units.compat.mock import patch
from ansible.module_utils import basic
from ansible.modules.service_facts import AIXScanService
# AIX # lssrc -a
LSSRC_OUTPUT = """
Subsystem Group PID Status
sendmail mail 5243302 active
syslogd ras 5636528 active
portmap portmap 5177768 active
snmpd tcpip 5308844 active
hostmibd tcpip 5374380 active
snmpmibd tcpip 5439918 active
aixmibd tcpip 5505456 active
nimsh nimclient 5571004 active
aso 6029758 active
biod nfs 6357464 active
nfsd nfs 5701906 active
rpc.mountd nfs 6488534 active
rpc.statd nfs 7209216 active
rpc.lockd nfs 7274988 active
qdaemon spooler 6816222 active
writesrv spooler 6685150 active
clcomd caa 7471600 active
sshd ssh 7602674 active
pfcdaemon 7012860 active
ctrmc rsct 6947312 active
IBM.HostRM rsct_rm 14418376 active
IBM.ConfigRM rsct_rm 6160674 active
IBM.DRM rsct_rm 14680550 active
IBM.MgmtDomainRM rsct_rm 14090676 active
IBM.ServiceRM rsct_rm 13828542 active
cthats cthats 13959668 active
cthags cthags 14025054 active
IBM.StorageRM rsct_rm 12255706 active
inetd tcpip 12517828 active
lpd spooler inoperative
keyserv keyserv inoperative
ypbind yp inoperative
gsclvmd inoperative
cdromd inoperative
ndpd-host tcpip inoperative
ndpd-router tcpip inoperative
netcd netcd inoperative
tftpd tcpip inoperative
routed tcpip inoperative
mrouted tcpip inoperative
rsvpd qos inoperative
policyd qos inoperative
timed tcpip inoperative
iptrace tcpip inoperative
dpid2 tcpip inoperative
rwhod tcpip inoperative
pxed tcpip inoperative
binld tcpip inoperative
xntpd tcpip inoperative
gated tcpip inoperative
dhcpcd tcpip inoperative
dhcpcd6 tcpip inoperative
dhcpsd tcpip inoperative
dhcpsdv6 tcpip inoperative
dhcprd tcpip inoperative
dfpd tcpip inoperative
named tcpip inoperative
automountd autofs inoperative
nfsrgyd nfs inoperative
gssd nfs inoperative
cpsd ike inoperative
tmd ike inoperative
isakmpd inoperative
ikev2d inoperative
iked ike inoperative
clconfd caa inoperative
ksys_vmmon inoperative
nimhttp inoperative
IBM.SRVPROXY ibmsrv inoperative
ctcas rsct inoperative
IBM.ERRM rsct_rm inoperative
IBM.AuditRM rsct_rm inoperative
isnstgtd isnstgtd inoperative
IBM.LPRM rsct_rm inoperative
cthagsglsm cthags inoperative
"""
class TestAIXScanService(unittest.TestCase):
def setUp(self):
self.mock1 = patch.object(basic.AnsibleModule, 'get_bin_path', return_value='/usr/sbin/lssrc')
self.mock1.start()
self.addCleanup(self.mock1.stop)
self.mock2 = patch.object(basic.AnsibleModule, 'run_command', return_value=(0, LSSRC_OUTPUT, ''))
self.mock2.start()
self.addCleanup(self.mock2.stop)
self.mock3 = patch('platform.system', return_value='AIX')
self.mock3.start()
self.addCleanup(self.mock3.stop)
def test_gather_services(self):
svcmod = AIXScanService(basic.AnsibleModule)
result = svcmod.gather_services()
self.assertIsInstance(result, dict)
self.assertIn('IBM.HostRM', result)
self.assertEqual(result['IBM.HostRM'], {
'name': 'IBM.HostRM',
'source': 'src',
'state': 'running',
})
self.assertIn('IBM.AuditRM', result)
self.assertEqual(result['IBM.AuditRM'], {
'name': 'IBM.AuditRM',
'source': 'src',
'state': 'stopped',
})