mirror of
https://github.com/ansible/awx.git
synced 2026-05-19 14:57:39 -02:30
structure scan modules as dicts not arrays
This commit is contained in:
@@ -18,32 +18,45 @@ EXAMPLES = '''
|
|||||||
# Example fact output:
|
# Example fact output:
|
||||||
# host | success >> {
|
# host | success >> {
|
||||||
# "ansible_facts": {
|
# "ansible_facts": {
|
||||||
# "services": [
|
# "packages": {
|
||||||
# {
|
# "libbz2-1.0": [
|
||||||
# "source": "apt",
|
# {
|
||||||
# "version": "1.0.6-5",
|
# "version": "1.0.6-5",
|
||||||
# "arch": "amd64",
|
# "source": "apt",
|
||||||
# "name": "libbz2-1.0"
|
# "arch": "amd64",
|
||||||
# },
|
# "name": "libbz2-1.0"
|
||||||
# {
|
# }
|
||||||
# "source": "apt",
|
# ],
|
||||||
# "version": "2.7.1-4ubuntu1",
|
# "patch": [
|
||||||
# "arch": "amd64",
|
# {
|
||||||
# "name": "patch"
|
# "version": "2.7.1-4ubuntu1",
|
||||||
# },
|
# "source": "apt",
|
||||||
# {
|
# "arch": "amd64",
|
||||||
# "source": "apt",
|
# "name": "patch"
|
||||||
# "version": "4.8.2-19ubuntu1",
|
# }
|
||||||
# "arch": "amd64",
|
# ],
|
||||||
# "name": "gcc-4.8-base"
|
# "gcc-4.8-base": [
|
||||||
# }, ... ] } }
|
# {
|
||||||
|
# "version": "4.8.2-19ubuntu1",
|
||||||
|
# "source": "apt",
|
||||||
|
# "arch": "amd64",
|
||||||
|
# "name": "gcc-4.8-base"
|
||||||
|
# },
|
||||||
|
# {
|
||||||
|
# "version": "4.9.2-19ubuntu1",
|
||||||
|
# "source": "apt",
|
||||||
|
# "arch": "amd64",
|
||||||
|
# "name": "gcc-4.8-base"
|
||||||
|
# }
|
||||||
|
# ]
|
||||||
|
# }
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
|
||||||
def rpm_package_list():
|
def rpm_package_list():
|
||||||
import rpm
|
import rpm
|
||||||
trans_set = rpm.TransactionSet()
|
trans_set = rpm.TransactionSet()
|
||||||
installed_packages = []
|
installed_packages = {}
|
||||||
for package in trans_set.dbMatch():
|
for package in trans_set.dbMatch():
|
||||||
package_details = dict(name=package[rpm.RPMTAG_NAME],
|
package_details = dict(name=package[rpm.RPMTAG_NAME],
|
||||||
version=package[rpm.RPMTAG_VERSION],
|
version=package[rpm.RPMTAG_VERSION],
|
||||||
@@ -51,7 +64,10 @@ def rpm_package_list():
|
|||||||
epoch=package[rpm.RPMTAG_EPOCH],
|
epoch=package[rpm.RPMTAG_EPOCH],
|
||||||
arch=package[rpm.RPMTAG_ARCH],
|
arch=package[rpm.RPMTAG_ARCH],
|
||||||
source='rpm')
|
source='rpm')
|
||||||
installed_packages.append(package_details)
|
if package_details['name'] not in installed_packages:
|
||||||
|
installed_packages[package_details['name']] = [package_details]
|
||||||
|
else:
|
||||||
|
installed_packages[package_details['name']].append(package_details)
|
||||||
return installed_packages
|
return installed_packages
|
||||||
|
|
||||||
|
|
||||||
@@ -66,7 +82,10 @@ def deb_package_list():
|
|||||||
version=ac_pkg.version,
|
version=ac_pkg.version,
|
||||||
arch=ac_pkg.architecture,
|
arch=ac_pkg.architecture,
|
||||||
source='apt')
|
source='apt')
|
||||||
installed_packages.append(package_details)
|
if package_details['name'] not in installed_packages:
|
||||||
|
installed_packages[package_details['name']] = [package_details]
|
||||||
|
else:
|
||||||
|
installed_packages[package_details['name']].append(package_details)
|
||||||
return installed_packages
|
return installed_packages
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -20,27 +20,19 @@ EXAMPLES = '''
|
|||||||
# Example fact output:
|
# Example fact output:
|
||||||
# host | success >> {
|
# host | success >> {
|
||||||
# "ansible_facts": {
|
# "ansible_facts": {
|
||||||
# "services": [
|
# "services": {
|
||||||
# {
|
# "network": {
|
||||||
# "name": "acpid",
|
# "source": "sysv",
|
||||||
# "source": "sysv",
|
# "state": "running",
|
||||||
# "state": "running"
|
# "name": "network"
|
||||||
# },
|
# },
|
||||||
# {
|
# "arp-ethers.service": {
|
||||||
# "name": "apparmor",
|
# "source": "systemd",
|
||||||
# "source": "sysv",
|
# "state": "stopped",
|
||||||
# "state": "stopped"
|
# "name": "arp-ethers.service"
|
||||||
# },
|
# }
|
||||||
# {
|
# }
|
||||||
# "name": "atd",
|
# }
|
||||||
# "source": "sysv",
|
|
||||||
# "state": "running"
|
|
||||||
# },
|
|
||||||
# {
|
|
||||||
# "name": "cron",
|
|
||||||
# "source": "sysv",
|
|
||||||
# "state": "running"
|
|
||||||
# }, .... ] } }
|
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
|
||||||
@@ -54,7 +46,7 @@ class BaseService(object):
|
|||||||
class ServiceScanService(BaseService):
|
class ServiceScanService(BaseService):
|
||||||
|
|
||||||
def gather_services(self):
|
def gather_services(self):
|
||||||
services = []
|
services = {}
|
||||||
service_path = self.module.get_bin_path("service")
|
service_path = self.module.get_bin_path("service")
|
||||||
if service_path is None:
|
if service_path is None:
|
||||||
return None
|
return None
|
||||||
@@ -73,7 +65,7 @@ class ServiceScanService(BaseService):
|
|||||||
service_state = "running"
|
service_state = "running"
|
||||||
else:
|
else:
|
||||||
service_state = "stopped"
|
service_state = "stopped"
|
||||||
services.append({"name": service_name, "state": service_state, "source": "sysv"})
|
services[service_name] = {"name": service_name, "state": service_state, "source": "sysv"}
|
||||||
|
|
||||||
# Upstart
|
# Upstart
|
||||||
if initctl_path is not None and chkconfig_path is None:
|
if initctl_path is not None and chkconfig_path is None:
|
||||||
@@ -92,7 +84,7 @@ class ServiceScanService(BaseService):
|
|||||||
else:
|
else:
|
||||||
pid = None # NOQA
|
pid = None # NOQA
|
||||||
payload = {"name": service_name, "state": service_state, "goal": service_goal, "source": "upstart"}
|
payload = {"name": service_name, "state": service_state, "goal": service_goal, "source": "upstart"}
|
||||||
services.append(payload)
|
services[service_name] = payload
|
||||||
|
|
||||||
# RH sysvinit
|
# RH sysvinit
|
||||||
elif chkconfig_path is not None:
|
elif chkconfig_path is not None:
|
||||||
@@ -134,7 +126,7 @@ class ServiceScanService(BaseService):
|
|||||||
else:
|
else:
|
||||||
service_state = 'stopped'
|
service_state = 'stopped'
|
||||||
service_data = {"name": service_name, "state": service_state, "source": "sysv"}
|
service_data = {"name": service_name, "state": service_state, "source": "sysv"}
|
||||||
services.append(service_data)
|
services[service_name] = service_data
|
||||||
return services
|
return services
|
||||||
|
|
||||||
|
|
||||||
@@ -153,7 +145,7 @@ class SystemctlScanService(BaseService):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
def gather_services(self):
|
def gather_services(self):
|
||||||
services = []
|
services = {}
|
||||||
if not self.systemd_enabled():
|
if not self.systemd_enabled():
|
||||||
return None
|
return None
|
||||||
systemctl_path = self.module.get_bin_path("systemctl", opt_dirs=["/usr/bin", "/usr/local/bin"])
|
systemctl_path = self.module.get_bin_path("systemctl", opt_dirs=["/usr/bin", "/usr/local/bin"])
|
||||||
@@ -168,22 +160,20 @@ class SystemctlScanService(BaseService):
|
|||||||
state_val = "running"
|
state_val = "running"
|
||||||
else:
|
else:
|
||||||
state_val = "stopped"
|
state_val = "stopped"
|
||||||
services.append({"name": line_data[0],
|
services[line_data[0]] = {"name": line_data[0], "state": state_val, "source": "systemd"}
|
||||||
"state": state_val,
|
|
||||||
"source": "systemd"})
|
|
||||||
return services
|
return services
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
module = AnsibleModule(argument_spec = dict())
|
module = AnsibleModule(argument_spec = dict())
|
||||||
service_modules = (ServiceScanService, SystemctlScanService)
|
service_modules = (ServiceScanService, SystemctlScanService)
|
||||||
all_services = []
|
all_services = {}
|
||||||
incomplete_warning = False
|
incomplete_warning = False
|
||||||
for svc_module in service_modules:
|
for svc_module in service_modules:
|
||||||
svcmod = svc_module(module)
|
svcmod = svc_module(module)
|
||||||
svc = svcmod.gather_services()
|
svc = svcmod.gather_services()
|
||||||
if svc is not None:
|
if svc is not None:
|
||||||
all_services += svc
|
all_services.update(svc)
|
||||||
if svcmod.incomplete_warning:
|
if svcmod.incomplete_warning:
|
||||||
incomplete_warning = True
|
incomplete_warning = True
|
||||||
if len(all_services) == 0:
|
if len(all_services) == 0:
|
||||||
|
|||||||
Reference in New Issue
Block a user