Merge pull request #17 from ansible/devel

Rebase
This commit is contained in:
Sean Sullivan
2020-10-19 15:56:04 -05:00
committed by GitHub
43 changed files with 495 additions and 635 deletions

View File

@@ -400,7 +400,7 @@ class TowerAPIModule(TowerModule):
if response['status_code'] == 204:
self.json_output['changed'] = True
else:
self.fail_json(msg="Failed to disassociate item {0}".format(response['json']['detail']))
self.fail_json(msg="Failed to disassociate item {0}".format(response['json'].get('detail', response['json'])))
# Associate anything that is in new_association_list but not in `association`
for an_id in list(set(new_association_list) - set(existing_associated_ids)):
@@ -408,7 +408,7 @@ class TowerAPIModule(TowerModule):
if response['status_code'] == 204:
self.json_output['changed'] = True
else:
self.fail_json(msg="Failed to associate item {0}".format(response['json']['detail']))
self.fail_json(msg="Failed to associate item {0}".format(response['json'].get('detail', response['json'])))
def create_if_needed(self, existing_item, new_item, endpoint, on_create=None, auto_exit=True, item_type='unknown', associations=None):

View File

@@ -107,17 +107,16 @@ def main():
interval = module.params.get('interval')
timeout = module.params.get('timeout')
lookup_data = {'name': inventory}
lookup_data = {}
if organization:
lookup_data['organization'] = module.resolve_name_to_id('organizations', organization)
inventory_object = module.get_one('inventories', data=lookup_data)
inventory_object = module.get_one('inventories', name_or_id=inventory, data=lookup_data)
if not inventory_object:
module.fail_json(msg='The specified inventory, {0}, was not found.'.format(lookup_data))
inventory_source_object = module.get_one('inventory_sources', **{
inventory_source_object = module.get_one('inventory_sources', name_or_id=inventory_source, **{
'data': {
'name': inventory_source,
'inventory': inventory_object['id'],
}
})

View File

@@ -436,7 +436,7 @@ def main():
'become_enabled', 'diff_mode', 'allow_simultaneous', 'custom_virtualenv', 'job_slice_count', 'webhook_service',
):
field_val = module.params.get(field_name)
if field_val:
if field_val is not None:
new_fields[field_name] = field_val
# Special treatment of extra_vars parameter

View File

@@ -35,6 +35,51 @@ def test_create_job_template(run_module, admin_user, project, inventory):
assert jt.inventory_id == inventory.id
@pytest.mark.django_db
def test_resets_job_template_values(run_module, admin_user, project, inventory):
module_args = {
'name': 'foo', 'playbook': 'helloworld.yml',
'project': project.name, 'inventory': inventory.name,
'extra_vars': {'foo': 'bar'},
'job_type': 'run',
'state': 'present',
'forks': 20,
'timeout': 50,
'allow_simultaneous': True,
'ask_limit_on_launch': True,
}
result = run_module('tower_job_template', module_args, admin_user)
jt = JobTemplate.objects.get(name='foo')
assert jt.forks == 20
assert jt.timeout == 50
assert jt.allow_simultaneous
assert jt.ask_limit_on_launch
module_args = {
'name': 'foo', 'playbook': 'helloworld.yml',
'project': project.name, 'inventory': inventory.name,
'extra_vars': {'foo': 'bar'},
'job_type': 'run',
'state': 'present',
'forks': 0,
'timeout': 0,
'allow_simultaneous': False,
'ask_limit_on_launch': False,
}
result = run_module('tower_job_template', module_args, admin_user)
assert result['changed']
jt = JobTemplate.objects.get(name='foo')
assert jt.forks == 0
assert jt.timeout == 0
assert not jt.allow_simultaneous
assert not jt.ask_limit_on_launch
@pytest.mark.django_db
def test_job_launch_with_prompting(run_module, admin_user, project, inventory, machine_credential):
JobTemplate.objects.create(