mirror of
https://github.com/ansible/awx.git
synced 2026-05-06 08:57:35 -02:30
Update unit test, extra_vars handling, and edit README
This commit is contained in:
@@ -50,7 +50,7 @@ The following notes are changes that may require changes to playbooks:
|
|||||||
- `tower_group` used to also service inventory sources, but this functionality has been removed from this module; use `tower_inventory_source` instead.
|
- `tower_group` used to also service inventory sources, but this functionality has been removed from this module; use `tower_inventory_source` instead.
|
||||||
- Specified `tower_config` file used to handle `k=v` pairs on a single line; this is no longer supported. Please use a file formatted as `yaml`, `json` or `ini` only.
|
- Specified `tower_config` file used to handle `k=v` pairs on a single line; this is no longer supported. Please use a file formatted as `yaml`, `json` or `ini` only.
|
||||||
- Some return values (e.g., `credential_type`) have been removed. Use of `id` is recommended.
|
- Some return values (e.g., `credential_type`) have been removed. Use of `id` is recommended.
|
||||||
- tower_job_template no longer supports the deprecated extra_vars_path parameter, please use extra_vars with the lookup plugin to replace this functionality.
|
- `tower_job_template` no longer supports the deprecated `extra_vars_path` parameter, please use `extra_vars` with the lookup plugin to replace this functionality.
|
||||||
|
|
||||||
## Running Unit Tests
|
## Running Unit Tests
|
||||||
|
|
||||||
|
|||||||
@@ -303,6 +303,7 @@ EXAMPLES = '''
|
|||||||
'''
|
'''
|
||||||
|
|
||||||
from ..module_utils.tower_api import TowerModule
|
from ..module_utils.tower_api import TowerModule
|
||||||
|
import json
|
||||||
|
|
||||||
|
|
||||||
def update_survey(module, last_request):
|
def update_survey(module, last_request):
|
||||||
@@ -399,7 +400,7 @@ def main():
|
|||||||
new_fields = {}
|
new_fields = {}
|
||||||
new_fields['name'] = new_name if new_name else name
|
new_fields['name'] = new_name if new_name else name
|
||||||
for field_name in (
|
for field_name in (
|
||||||
'description', 'job_type', 'playbook', 'scm_branch', 'forks', 'limit', 'verbosity', 'extra_vars',
|
'description', 'job_type', 'playbook', 'scm_branch', 'forks', 'limit', 'verbosity',
|
||||||
'job_tags', 'force_handlers', 'skip_tags', 'start_at_task', 'timeout', 'use_fact_cache',
|
'job_tags', 'force_handlers', 'skip_tags', 'start_at_task', 'timeout', 'use_fact_cache',
|
||||||
'host_config_key', 'ask_scm_branch_on_launch', 'ask_diff_mode_on_launch', 'ask_variables_on_launch',
|
'host_config_key', 'ask_scm_branch_on_launch', 'ask_diff_mode_on_launch', 'ask_variables_on_launch',
|
||||||
'ask_limit_on_launch', 'ask_tags_on_launch', 'ask_skip_tags_on_launch', 'ask_job_type_on_launch',
|
'ask_limit_on_launch', 'ask_tags_on_launch', 'ask_skip_tags_on_launch', 'ask_job_type_on_launch',
|
||||||
@@ -410,6 +411,11 @@ def main():
|
|||||||
if field_val:
|
if field_val:
|
||||||
new_fields[field_name] = field_val
|
new_fields[field_name] = field_val
|
||||||
|
|
||||||
|
# Special treatment of extra_vars parameter
|
||||||
|
extra_vars = module.params.get('extra_vars')
|
||||||
|
if extra_vars is not None:
|
||||||
|
new_fields['extra_vars'] = json.dumps(extra_vars)
|
||||||
|
|
||||||
# Attempt to look up the related items the user specified (these will fail the module if not found)
|
# Attempt to look up the related items the user specified (these will fail the module if not found)
|
||||||
inventory = module.params.get('inventory')
|
inventory = module.params.get('inventory')
|
||||||
project = module.params.get('project')
|
project = module.params.get('project')
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ __metaclass__ = type
|
|||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from awx.main.models import JobTemplate, Job
|
from awx.main.models import ActivityStream, JobTemplate, Job
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
@@ -23,8 +23,7 @@ def test_create_job_template(run_module, admin_user, project, inventory):
|
|||||||
assert jt.extra_vars == '{"foo": "bar"}'
|
assert jt.extra_vars == '{"foo": "bar"}'
|
||||||
|
|
||||||
assert result == {
|
assert result == {
|
||||||
"job_template": "foo",
|
"name": "foo",
|
||||||
"state": "present",
|
|
||||||
"id": jt.id,
|
"id": jt.id,
|
||||||
"changed": True,
|
"changed": True,
|
||||||
"invocation": {
|
"invocation": {
|
||||||
@@ -64,61 +63,70 @@ def test_job_launch_with_prompting(run_module, admin_user, project, inventory, m
|
|||||||
|
|
||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_create_job_template_with_old_credentials(
|
def test_job_template_with_new_credentials(
|
||||||
run_module, admin_user, project, inventory,
|
run_module, admin_user, project, inventory,
|
||||||
machine_credential, vault_credential):
|
machine_credential, vault_credential):
|
||||||
|
|
||||||
module_args = {
|
|
||||||
'name': 'foo', 'playbook': 'helloworld.yml',
|
|
||||||
'project': project.name, 'inventory': inventory.name,
|
|
||||||
'credential': machine_credential.name,
|
|
||||||
'vault_credential': vault_credential.name,
|
|
||||||
'job_type': 'run',
|
|
||||||
'state': 'present'
|
|
||||||
}
|
|
||||||
|
|
||||||
result = run_module('tower_job_template', module_args, admin_user)
|
|
||||||
|
|
||||||
jt = JobTemplate.objects.get(name='foo')
|
|
||||||
|
|
||||||
assert result == {
|
|
||||||
"job_template": "foo",
|
|
||||||
"state": "present",
|
|
||||||
"id": jt.id,
|
|
||||||
"changed": True,
|
|
||||||
"invocation": {
|
|
||||||
"module_args": module_args
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
assert set([machine_credential.id, vault_credential.id]) == set([
|
|
||||||
cred.pk for cred in jt.credentials.all()])
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.django_db
|
|
||||||
def test_create_job_template_with_new_credentials(
|
|
||||||
run_module, admin_user, project, inventory,
|
|
||||||
machine_credential, vault_credential):
|
|
||||||
jt = JobTemplate.objects.create(
|
|
||||||
name='foo',
|
|
||||||
playbook='helloworld.yml',
|
|
||||||
inventory=inventory,
|
|
||||||
project=project
|
|
||||||
)
|
|
||||||
result = run_module('tower_job_template', dict(
|
result = run_module('tower_job_template', dict(
|
||||||
name='foo',
|
name='foo',
|
||||||
playbook='helloworld.yml',
|
playbook='helloworld.yml',
|
||||||
project=project.name,
|
project=project.name,
|
||||||
|
inventory=inventory.name,
|
||||||
credentials=[machine_credential.name, vault_credential.name]
|
credentials=[machine_credential.name, vault_credential.name]
|
||||||
), admin_user)
|
), admin_user)
|
||||||
assert result.pop('changed', None), result
|
assert not result.get('failed', False), result.get('msg', result)
|
||||||
|
assert result.get('changed', False), result
|
||||||
result.pop('invocation')
|
jt = JobTemplate.objects.get(pk=result['id'])
|
||||||
assert result == {
|
|
||||||
"job_template": "foo",
|
|
||||||
"state": "present",
|
|
||||||
"id": jt.id
|
|
||||||
}
|
|
||||||
|
|
||||||
assert set([machine_credential.id, vault_credential.id]) == set([
|
assert set([machine_credential.id, vault_credential.id]) == set([
|
||||||
cred.pk for cred in jt.credentials.all()])
|
cred.pk for cred in jt.credentials.all()])
|
||||||
|
|
||||||
|
prior_ct = ActivityStream.objects.count()
|
||||||
|
result = run_module('tower_job_template', dict(
|
||||||
|
name='foo',
|
||||||
|
playbook='helloworld.yml',
|
||||||
|
project=project.name,
|
||||||
|
inventory=inventory.name,
|
||||||
|
credentials=[machine_credential.name, vault_credential.name]
|
||||||
|
), admin_user)
|
||||||
|
assert not result.get('failed', False), result.get('msg', result)
|
||||||
|
assert not result.get('changed', True), result
|
||||||
|
jt.refresh_from_db()
|
||||||
|
assert result['id'] == jt.id
|
||||||
|
|
||||||
|
assert set([machine_credential.id, vault_credential.id]) == set([
|
||||||
|
cred.pk for cred in jt.credentials.all()])
|
||||||
|
assert ActivityStream.objects.count() == prior_ct
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.django_db
|
||||||
|
def test_job_template_with_survey_spec(run_module, admin_user, project, inventory, survey_spec):
|
||||||
|
result = run_module('tower_job_template', dict(
|
||||||
|
name='foo',
|
||||||
|
playbook='helloworld.yml',
|
||||||
|
project=project.name,
|
||||||
|
inventory=inventory.name,
|
||||||
|
survey_spec=survey_spec,
|
||||||
|
survey_enabled=True
|
||||||
|
), admin_user)
|
||||||
|
assert not result.get('failed', False), result.get('msg', result)
|
||||||
|
assert result.get('changed', False), result
|
||||||
|
jt = JobTemplate.objects.get(pk=result['id'])
|
||||||
|
|
||||||
|
# assert jt.survey_spec == survey_spec
|
||||||
|
|
||||||
|
prior_ct = ActivityStream.objects.count()
|
||||||
|
result = run_module('tower_job_template', dict(
|
||||||
|
name='foo',
|
||||||
|
playbook='helloworld.yml',
|
||||||
|
project=project.name,
|
||||||
|
inventory=inventory.name,
|
||||||
|
survey_spec=survey_spec,
|
||||||
|
survey_enabled=True
|
||||||
|
), admin_user)
|
||||||
|
assert not result.get('failed', False), result.get('msg', result)
|
||||||
|
assert not result.get('changed', True), result
|
||||||
|
jt.refresh_from_db()
|
||||||
|
assert result['id'] == jt.id
|
||||||
|
|
||||||
|
assert jt.survey_spec == survey_spec
|
||||||
|
assert ActivityStream.objects.count() == prior_ct
|
||||||
|
|||||||
Reference in New Issue
Block a user