mirror of
https://github.com/ansible/awx.git
synced 2026-01-16 20:30:46 -03:30
project update fix
This commit is contained in:
parent
6267b264bf
commit
a75cbe683c
@ -204,6 +204,7 @@ def wait_for_project_update(module, last_request):
|
||||
wait = module.params.get('wait')
|
||||
timeout = module.params.get('timeout')
|
||||
interval = module.params.get('interval')
|
||||
scm_revision_original = last_request['scm_revision']
|
||||
|
||||
if 'current_update' in last_request['summary_fields']:
|
||||
running = True
|
||||
@ -229,10 +230,15 @@ def wait_for_project_update(module, last_request):
|
||||
start = time.time()
|
||||
|
||||
# Invoke wait function
|
||||
module.wait_on_url(
|
||||
result_final = module.wait_on_url(
|
||||
url=result['json']['url'], object_name=module.get_item_name(last_request), object_type='Project Update', timeout=timeout, interval=interval
|
||||
)
|
||||
|
||||
# Set Changed to correct value depending on if hash changed Also output refspec comparision
|
||||
module.json_output['changed'] = True
|
||||
if result_final['json']['scm_revision'] == scm_revision_original:
|
||||
module.json_output['changed'] = False
|
||||
|
||||
module.exit_json(**module.json_output)
|
||||
|
||||
|
||||
@ -380,10 +386,21 @@ def main():
|
||||
on_change = wait_for_project_update
|
||||
|
||||
# If the state was present and we can let the module build or update the existing project, this will return on its own
|
||||
module.create_or_update_if_needed(
|
||||
project, project_fields, endpoint='projects', item_type='project', associations=association_fields, on_create=on_change, on_update=on_change
|
||||
response = module.create_or_update_if_needed(
|
||||
project,
|
||||
project_fields,
|
||||
endpoint='projects',
|
||||
item_type='project',
|
||||
associations=association_fields,
|
||||
on_create=on_change,
|
||||
on_update=on_change,
|
||||
auto_exit=not update_project,
|
||||
)
|
||||
|
||||
if update_project:
|
||||
wait_for_project_update(module, response)
|
||||
module.exit_json(**module.json_output)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
@ -9,245 +9,241 @@
|
||||
org_name: "AWX-Collection-tests-tower_project-org-{{ lookup('password', '/dev/null chars=ascii_letters length=16') }}"
|
||||
cred_name: "AWX-Collection-tests-tower_project-cred-{{ lookup('password', '/dev/null chars=ascii_letters length=16') }}"
|
||||
|
||||
- name: Create an SCM Credential
|
||||
tower_credential:
|
||||
name: "{{ scm_cred_name }}"
|
||||
organization: Default
|
||||
kind: scm
|
||||
register: result
|
||||
- block:
|
||||
- name: Create an SCM Credential
|
||||
tower_credential:
|
||||
name: "{{ scm_cred_name }}"
|
||||
organization: Default
|
||||
kind: scm
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- result is changed
|
||||
- assert:
|
||||
that:
|
||||
- result is changed
|
||||
|
||||
- name: Create a git project without credentials without waiting
|
||||
tower_project:
|
||||
name: "{{ project_name1 }}"
|
||||
organization: Default
|
||||
scm_type: git
|
||||
scm_url: https://github.com/ansible/test-playbooks
|
||||
wait: false
|
||||
register: result
|
||||
- name: Create a git project without credentials and wait
|
||||
tower_project:
|
||||
name: "{{ project_name1 }}"
|
||||
organization: Default
|
||||
scm_type: git
|
||||
scm_url: https://github.com/ansible/test-playbooks
|
||||
wait: true
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- result is changed
|
||||
- assert:
|
||||
that:
|
||||
- result is changed
|
||||
|
||||
- name: Recreate the project to validate not changed
|
||||
tower_project:
|
||||
name: "{{ project_name1 }}"
|
||||
organization: Default
|
||||
scm_type: git
|
||||
scm_url: https://github.com/ansible/test-playbooks
|
||||
wait: true
|
||||
register: result
|
||||
- name: Recreate the project to validate not changed
|
||||
tower_project:
|
||||
name: "{{ project_name1 }}"
|
||||
organization: Default
|
||||
scm_type: git
|
||||
scm_url: https://github.com/ansible/test-playbooks
|
||||
wait: false
|
||||
register: result
|
||||
ignore_errors: true
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- result is not changed
|
||||
- assert:
|
||||
that:
|
||||
- result is not changed
|
||||
|
||||
- name: Create organizations
|
||||
tower_organization:
|
||||
name: "{{ org_name }}"
|
||||
register: result
|
||||
- name: Create organizations
|
||||
tower_organization:
|
||||
name: "{{ org_name }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- result is changed
|
||||
- assert:
|
||||
that:
|
||||
- result is changed
|
||||
|
||||
- name: Create credential
|
||||
tower_credential:
|
||||
kind: scm
|
||||
name: "{{ cred_name }}"
|
||||
organization: "{{ org_name }}"
|
||||
register: result
|
||||
- name: Create credential
|
||||
tower_credential:
|
||||
kind: scm
|
||||
name: "{{ cred_name }}"
|
||||
organization: "{{ org_name }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- result is changed
|
||||
- assert:
|
||||
that:
|
||||
- result is changed
|
||||
|
||||
- name: Create a new test project in check_mode
|
||||
tower_project:
|
||||
name: "{{ project_name2 }}"
|
||||
organization: "{{ org_name }}"
|
||||
scm_type: git
|
||||
scm_url: https://github.com/ansible/test-playbooks
|
||||
scm_credential: "{{ cred_name }}"
|
||||
check_mode: true
|
||||
- name: Create a new test project in check_mode
|
||||
tower_project:
|
||||
name: "{{ project_name2 }}"
|
||||
organization: "{{ org_name }}"
|
||||
scm_type: git
|
||||
scm_url: https://github.com/ansible/test-playbooks
|
||||
scm_credential: "{{ cred_name }}"
|
||||
check_mode: true
|
||||
|
||||
- name: "Copy tower project from {{ project_name1 }}"
|
||||
tower_project:
|
||||
name: "{{ project_name2 }}"
|
||||
copy_from: "{{ project_name1 }}"
|
||||
organization: "{{ org_name }}"
|
||||
scm_type: git
|
||||
scm_credential: "{{ cred_name }}"
|
||||
state: present
|
||||
register: result
|
||||
- name: "Copy tower project from {{ project_name1 }}"
|
||||
tower_project:
|
||||
name: "{{ project_name2 }}"
|
||||
copy_from: "{{ project_name1 }}"
|
||||
organization: "{{ org_name }}"
|
||||
scm_type: git
|
||||
scm_credential: "{{ cred_name }}"
|
||||
state: present
|
||||
register: result
|
||||
|
||||
# If this fails it may be because the check_mode task actually already created
|
||||
# the project, or it could be because the module actually failed somehow
|
||||
- assert:
|
||||
that:
|
||||
- result.copied
|
||||
# If this fails it may be because the check_mode task actually already created
|
||||
# the project, or it could be because the module actually failed somehow
|
||||
- assert:
|
||||
that:
|
||||
- result.copied
|
||||
|
||||
- name: Check module fails with correct msg when given non-existing org as param
|
||||
tower_project:
|
||||
name: "{{ project_name2 }}"
|
||||
organization: Non_Existing_Org
|
||||
scm_type: git
|
||||
scm_url: https://github.com/ansible/test-playbooks
|
||||
scm_credential: "{{ cred_name }}"
|
||||
register: result
|
||||
ignore_errors: true
|
||||
- name: Check module fails with correct msg when given non-existing org as param
|
||||
tower_project:
|
||||
name: "{{ project_name2 }}"
|
||||
organization: Non_Existing_Org
|
||||
scm_type: git
|
||||
scm_url: https://github.com/ansible/test-playbooks
|
||||
scm_credential: "{{ cred_name }}"
|
||||
register: result
|
||||
ignore_errors: true
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- "result is failed"
|
||||
- "result is not changed"
|
||||
- "'Non_Existing_Org' in result.msg"
|
||||
- "result.total_results == 0"
|
||||
- assert:
|
||||
that:
|
||||
- "result is failed"
|
||||
- "result is not changed"
|
||||
- "'Non_Existing_Org' in result.msg"
|
||||
- "result.total_results == 0"
|
||||
|
||||
- name: Check module fails with correct msg when given non-existing credential as param
|
||||
tower_project:
|
||||
name: "{{ project_name2 }}"
|
||||
organization: "{{ org_name }}"
|
||||
scm_type: git
|
||||
scm_url: https://github.com/ansible/test-playbooks
|
||||
scm_credential: Non_Existing_Credential
|
||||
register: result
|
||||
ignore_errors: true
|
||||
- name: Check module fails with correct msg when given non-existing credential as param
|
||||
tower_project:
|
||||
name: "{{ project_name2 }}"
|
||||
organization: "{{ org_name }}"
|
||||
scm_type: git
|
||||
scm_url: https://github.com/ansible/test-playbooks
|
||||
scm_credential: Non_Existing_Credential
|
||||
register: result
|
||||
ignore_errors: true
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- "result is failed"
|
||||
- "result is not changed"
|
||||
- "'Non_Existing_Credential' in result.msg"
|
||||
- "result.total_results == 0"
|
||||
- assert:
|
||||
that:
|
||||
- "result is failed"
|
||||
- "result is not changed"
|
||||
- "'Non_Existing_Credential' in result.msg"
|
||||
- "result.total_results == 0"
|
||||
|
||||
- name: Create a git project without credentials without waiting
|
||||
tower_project:
|
||||
name: "{{ project_name3 }}"
|
||||
organization: Default
|
||||
scm_type: git
|
||||
scm_branch: empty_branch
|
||||
scm_url: https://github.com/ansible/test-playbooks
|
||||
allow_override: true
|
||||
register: result
|
||||
- name: Create a git project without credentials without waiting
|
||||
tower_project:
|
||||
name: "{{ project_name3 }}"
|
||||
organization: Default
|
||||
scm_type: git
|
||||
scm_branch: empty_branch
|
||||
scm_url: https://github.com/ansible/test-playbooks
|
||||
allow_override: true
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- result is changed
|
||||
- assert:
|
||||
that:
|
||||
- result is changed
|
||||
|
||||
- name: Update a git project, update the project and wait.
|
||||
tower_project:
|
||||
name: "{{ project_name3 }}"
|
||||
organization: Default
|
||||
scm_type: git
|
||||
scm_branch: empty_branch
|
||||
scm_url: https://github.com/ansible/test-playbooks
|
||||
allow_override: true
|
||||
wait: true
|
||||
update_project: true
|
||||
register: result
|
||||
- name: Update the project and wait. Verify not changed as no change made to repo and refspec not changed
|
||||
tower_project:
|
||||
name: "{{ project_name3 }}"
|
||||
organization: Default
|
||||
scm_type: git
|
||||
scm_branch: empty_branch
|
||||
scm_url: https://github.com/ansible/test-playbooks
|
||||
allow_override: true
|
||||
wait: true
|
||||
update_project: true
|
||||
register: result
|
||||
|
||||
- name: Update a git project, update the project without waiting.
|
||||
tower_project:
|
||||
name: "{{ project_name3 }}"
|
||||
organization: Default
|
||||
scm_type: git
|
||||
scm_branch: empty_branch
|
||||
scm_url: https://github.com/ansible/test-playbooks
|
||||
wait: false
|
||||
update_project: true
|
||||
register: result
|
||||
- assert:
|
||||
that:
|
||||
- result is not changed
|
||||
|
||||
- name: Create a job template that overrides the project scm_branch
|
||||
tower_job_template:
|
||||
name: "{{ jt1 }}"
|
||||
project: "{{ project_name3 }}"
|
||||
inventory: "Demo Inventory"
|
||||
scm_branch: master
|
||||
playbook: debug.yml
|
||||
- name: Create a job template that overrides the project scm_branch
|
||||
tower_job_template:
|
||||
name: "{{ jt1 }}"
|
||||
project: "{{ project_name3 }}"
|
||||
inventory: "Demo Inventory"
|
||||
scm_branch: master
|
||||
playbook: debug.yml
|
||||
|
||||
- name: Launch "{{ jt1 }}"
|
||||
tower_job_launch:
|
||||
job_template: "{{ jt1 }}"
|
||||
register: result
|
||||
- name: Launch "{{ jt1 }}"
|
||||
tower_job_launch:
|
||||
job_template: "{{ jt1 }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- result is changed
|
||||
- assert:
|
||||
that:
|
||||
- result is changed
|
||||
|
||||
- name: "wait for job {{ result.id }}"
|
||||
tower_job_wait:
|
||||
job_id: "{{ result.id }}"
|
||||
register: job
|
||||
- name: "wait for job {{ result.id }}"
|
||||
tower_job_wait:
|
||||
job_id: "{{ result.id }}"
|
||||
register: job
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- job is successful
|
||||
- assert:
|
||||
that:
|
||||
- job is successful
|
||||
|
||||
- name: Delete the test job_template
|
||||
tower_job_template:
|
||||
name: "{{ jt1 }}"
|
||||
project: "{{ project_name3 }}"
|
||||
inventory: "Demo Inventory"
|
||||
state: absent
|
||||
always:
|
||||
- name: Delete the test job_template
|
||||
tower_job_template:
|
||||
name: "{{ jt1 }}"
|
||||
project: "{{ project_name3 }}"
|
||||
inventory: "Demo Inventory"
|
||||
state: absent
|
||||
|
||||
- name: Delete the test project 3
|
||||
tower_project:
|
||||
name: "{{ project_name3 }}"
|
||||
organization: Default
|
||||
state: absent
|
||||
- name: Delete the test project 3
|
||||
tower_project:
|
||||
name: "{{ project_name3 }}"
|
||||
organization: Default
|
||||
state: absent
|
||||
|
||||
- name: Delete the test project 2
|
||||
tower_project:
|
||||
name: "{{ project_name2 }}"
|
||||
organization: "{{ org_name }}"
|
||||
state: absent
|
||||
- name: Delete the test project 2
|
||||
tower_project:
|
||||
name: "{{ project_name2 }}"
|
||||
organization: "{{ org_name }}"
|
||||
state: absent
|
||||
|
||||
- name: Delete the SCM Credential
|
||||
tower_credential:
|
||||
name: "{{ scm_cred_name }}"
|
||||
organization: Default
|
||||
kind: scm
|
||||
state: absent
|
||||
register: result
|
||||
- name: Delete the SCM Credential
|
||||
tower_credential:
|
||||
name: "{{ scm_cred_name }}"
|
||||
organization: Default
|
||||
kind: scm
|
||||
state: absent
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- result is changed
|
||||
- assert:
|
||||
that:
|
||||
- result is changed
|
||||
|
||||
- name: Delete the test project 1
|
||||
tower_project:
|
||||
name: "{{ project_name1 }}"
|
||||
organization: Default
|
||||
state: absent
|
||||
register: result
|
||||
- name: Delete the test project 1
|
||||
tower_project:
|
||||
name: "{{ project_name1 }}"
|
||||
organization: Default
|
||||
state: absent
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- result is changed
|
||||
- assert:
|
||||
that:
|
||||
- result is changed
|
||||
|
||||
- name: Delete credential
|
||||
tower_credential:
|
||||
kind: scm
|
||||
name: "{{ cred_name }}"
|
||||
organization: "{{ org_name }}"
|
||||
state: absent
|
||||
register: result
|
||||
- name: Delete credential
|
||||
tower_credential:
|
||||
kind: scm
|
||||
name: "{{ cred_name }}"
|
||||
organization: "{{ org_name }}"
|
||||
state: absent
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- result is changed
|
||||
- assert:
|
||||
that:
|
||||
- result is changed
|
||||
|
||||
- name: Delete the organization
|
||||
tower_organization:
|
||||
name: "{{ org_name }}"
|
||||
state: absent
|
||||
register: result
|
||||
- name: Delete the organization
|
||||
tower_organization:
|
||||
name: "{{ org_name }}"
|
||||
state: absent
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- result is changed
|
||||
- assert:
|
||||
that:
|
||||
- result is changed
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user