From 413e8c3bc935c514c9b49f8825275c7ae2e10c77 Mon Sep 17 00:00:00 2001 From: Ryan Petrello Date: Thu, 29 Jun 2017 16:55:11 -0400 Subject: [PATCH] isolated nodes should report their awx version in their heartbeat see: #6810 --- awx/main/isolated/isolated_manager.py | 3 ++- awx/main/isolated/run.py | 8 ++++++++ awx/plugins/isolated/tower_capacity.py | 10 +++++++++- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/awx/main/isolated/isolated_manager.py b/awx/main/isolated/isolated_manager.py index 0f2a6b6837..9a5e940a58 100644 --- a/awx/main/isolated/isolated_manager.py +++ b/awx/main/isolated/isolated_manager.py @@ -374,8 +374,9 @@ class IsolatedManager(object): logger.exception('Failed to read status from isolated instance {}.'.format(instance.hostname)) continue if 'capacity' in task_result: + instance.version = task_result['version'] instance.capacity = int(task_result['capacity']) - instance.save(update_fields=['capacity', 'modified']) + instance.save(update_fields=['capacity', 'version', 'modified']) else: logger.warning('Could not update capacity of {}, msg={}'.format( instance.hostname, task_result.get('msg', 'unknown failure'))) diff --git a/awx/main/isolated/run.py b/awx/main/isolated/run.py index 39387f9ee6..0b466228aa 100755 --- a/awx/main/isolated/run.py +++ b/awx/main/isolated/run.py @@ -259,10 +259,18 @@ def __run__(private_data_dir): if __name__ == '__main__': + __version__ = 'devel' + try: + import awx + __version__ = awx.__version__ + except ImportError: + pass # in devel, `awx` isn't an installed package parser = argparse.ArgumentParser(description='manage a daemonized, isolated ansible playbook') + parser.add_argument('--version', action='version', version=__version__ + '-isolated') parser.add_argument('command', choices=['start', 'stop', 'is-alive']) parser.add_argument('private_data_dir') args = parser.parse_args() + private_data_dir = args.private_data_dir pidfile = os.path.join(private_data_dir, 'pid') diff --git a/awx/plugins/isolated/tower_capacity.py b/awx/plugins/isolated/tower_capacity.py index 03bbb0cecd..9ef879b423 100644 --- a/awx/plugins/isolated/tower_capacity.py +++ b/awx/plugins/isolated/tower_capacity.py @@ -24,6 +24,14 @@ def main(): module = AnsibleModule( argument_spec = dict() ) + try: + version = subprocess.check_output( + ['tower-expect', '--version'], + stderr=subprocess.STDOUT + ).strip() + except subprocess.CalledProcessError as e: + module.fail_json(msg=str(e)) + return # Duplicated with awx.main.utils.common.get_system_task_capacity try: out = subprocess.check_output(['free', '-m']) @@ -36,7 +44,7 @@ def main(): cap = 50 + ((int(total_mem_value) / 1024) - 2) * 75 # Module never results in a change - module.exit_json(changed=False, capacity=cap) + module.exit_json(changed=False, capacity=cap, version=version) if __name__ == '__main__':