Merge pull request #6819 from ryanpetrello/fix-6810

isolated nodes should report their awx version in their heartbeat
This commit is contained in:
Ryan Petrello 2017-06-30 09:59:07 -04:00 committed by GitHub
commit 57eb632e51
3 changed files with 19 additions and 2 deletions

View File

@ -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')))

View File

@ -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')

View File

@ -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__':