mirror of
https://github.com/ansible/awx.git
synced 2026-01-14 03:10:42 -03:30
Some light implimentation details for basic fact caching and collection
This commit is contained in:
parent
6e18c6d3c0
commit
fed4262ee2
@ -89,7 +89,7 @@ class CallbackReceiver(object):
|
||||
queue_worker[2] = w
|
||||
if workers_changed:
|
||||
signal.signal(signal.SIGINT, shutdown_handler([p[2] for p in worker_queues] + [main_process]))
|
||||
signal.signal(signal.SIGTERM, shutdown_handler([p[2] for p in worker_queues] + [main_process]))
|
||||
signal.signal(signal.SIGTERM, shutdown_handler([p[2] for p in worker_queues] + [main_process]))
|
||||
if not main_process.is_alive():
|
||||
sys.exit(1)
|
||||
time.sleep(0.1)
|
||||
@ -241,7 +241,7 @@ class Command(NoArgsCommand):
|
||||
Save Job Callback receiver (see awx.plugins.callbacks.job_event_callback)
|
||||
Runs as a management command and receives job save events. It then hands
|
||||
them off to worker processors (see Worker) which writes them to the database
|
||||
'''
|
||||
'''
|
||||
help = 'Launch the job callback receiver'
|
||||
|
||||
def handle_noargs(self, **options):
|
||||
|
||||
27
awx/main/management/commands/run_fact_cache_receiver.py
Normal file
27
awx/main/management/commands/run_fact_cache_receiver.py
Normal file
@ -0,0 +1,27 @@
|
||||
# Copyright (c) 2015 Ansible, Inc.
|
||||
# All Rights Reserved
|
||||
|
||||
import logging
|
||||
|
||||
from django.core.management.base import NoArgsCommand
|
||||
|
||||
from awx.main.models import * # noqa
|
||||
|
||||
logger = logging.getLogger('awx.main.commands.run_fact_cache_receiver')
|
||||
|
||||
class FactCacheReceiver(object):
|
||||
pass
|
||||
|
||||
class Command(NoArgsCommand):
|
||||
'''
|
||||
blah blah
|
||||
'''
|
||||
help = 'Launch the Fact Cache Receiver'
|
||||
|
||||
def handle_noargs(self, **options):
|
||||
fcr = FactCacheReceiver()
|
||||
try:
|
||||
fcr.run_receiver()
|
||||
except KeyboardInterrupt:
|
||||
pass
|
||||
|
||||
@ -550,6 +550,10 @@ class RunJob(BaseTask):
|
||||
env['JOB_ID'] = str(job.pk)
|
||||
env['INVENTORY_ID'] = str(job.inventory.pk)
|
||||
env['ANSIBLE_CALLBACK_PLUGINS'] = plugin_dir
|
||||
# TODO: env['ANSIBLE_LIBRARY'] # plugins/library
|
||||
# TODO: env['ANSIBLE_CACHE_PLUGINS'] # plugins/fact_caching
|
||||
# TODD: env['ANSIBLE_CACHE_PLUGIN'] # tower
|
||||
# TODO: env['ANSIBLE_CACHE_PLUGIN_CONNECTION'] # connection to tower service
|
||||
env['REST_API_URL'] = settings.INTERNAL_API_URL
|
||||
env['REST_API_TOKEN'] = job.task_auth_token or ''
|
||||
env['CALLBACK_CONSUMER_PORT'] = str(settings.CALLBACK_CONSUMER_PORT)
|
||||
|
||||
5
awx/playbooks/scan_facts.yml
Normal file
5
awx/playbooks/scan_facts.yml
Normal file
@ -0,0 +1,5 @@
|
||||
- hosts: all
|
||||
gather_facts: no
|
||||
tasks:
|
||||
- scan_packages:
|
||||
|
||||
27
awx/plugins/fact_caching/tower.py
Normal file
27
awx/plugins/fact_caching/tower.py
Normal file
@ -0,0 +1,27 @@
|
||||
from ansible.cache.base import BaseCacheModule
|
||||
|
||||
class TowerCacheModule(BaseCacheModule):
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
pass
|
||||
|
||||
def get(self, key):
|
||||
pass
|
||||
|
||||
def set(self, key, value):
|
||||
pass
|
||||
|
||||
def keys(self):
|
||||
pass
|
||||
|
||||
def contains(self, key):
|
||||
pass
|
||||
|
||||
def delete(self, key):
|
||||
pass
|
||||
|
||||
def flush(self):
|
||||
pass
|
||||
|
||||
def copy(self):
|
||||
pass
|
||||
37
awx/plugins/library/scan_packages.py
Executable file
37
awx/plugins/library/scan_packages.py
Executable file
@ -0,0 +1,37 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import os
|
||||
from ansible.module_utils.basic import *
|
||||
|
||||
def rpm_package_list():
|
||||
import rpm
|
||||
trans_set = rpm.TransactionSet()
|
||||
installed_packages = []
|
||||
for package in trans_set.dbMatch():
|
||||
installed_packages.append({'name': package['name'],
|
||||
'version': "%s" % (package['version'])})
|
||||
return installed_packages
|
||||
|
||||
def deb_package_list():
|
||||
import apt
|
||||
apt_cache = apt.Cache()
|
||||
installed_packages = []
|
||||
apt_installed_packages = [pk for pk in apt_cache.keys() if apt_cache[pk].is_installed]
|
||||
for package in apt_installed_packages:
|
||||
installed_packages.append({'name': package,
|
||||
'version': apt_cache[package].installed.version})
|
||||
return installed_packages
|
||||
|
||||
def main():
|
||||
module = AnsibleModule(
|
||||
argument_spec = dict())
|
||||
|
||||
packages = []
|
||||
if os.path.exists("/etc/redhat-release"):
|
||||
packages = rpm_package_list()
|
||||
elif os.path.exists("/etc/os-release"):
|
||||
packages = deb_package_list()
|
||||
results = dict(ansible_facts=dict(packages=packages))
|
||||
module.exit_json(**results)
|
||||
|
||||
main()
|
||||
Loading…
x
Reference in New Issue
Block a user