mirror of
https://github.com/ansible/awx.git
synced 2026-05-19 14:57:39 -02:30
Merge pull request #10000 from sean-m-sullivan/project_update_fix
Fix project update SUMMARY Fixing bug found in #8686 Found that the on change was not triggering due to no actual changes in the Post, Set so when project update is set to true, that the wait for update is Always triggered. Also added logic from project_update to set changed status depending on if refspec changes. ISSUE TYPE Bugfix Pull Request COMPONENT NAME awx_collection AWX VERSION 19.0.0 Reviewed-by: Bianca Henderson <beeankha@gmail.com> Reviewed-by: John Westcott IV <None> Reviewed-by: Sean Sullivan <None> Reviewed-by: Alan Rominger <arominge@redhat.com>
This commit is contained in:
@@ -204,6 +204,7 @@ def wait_for_project_update(module, last_request):
|
|||||||
wait = module.params.get('wait')
|
wait = module.params.get('wait')
|
||||||
timeout = module.params.get('timeout')
|
timeout = module.params.get('timeout')
|
||||||
interval = module.params.get('interval')
|
interval = module.params.get('interval')
|
||||||
|
scm_revision_original = last_request['scm_revision']
|
||||||
|
|
||||||
if 'current_update' in last_request['summary_fields']:
|
if 'current_update' in last_request['summary_fields']:
|
||||||
running = True
|
running = True
|
||||||
@@ -229,10 +230,15 @@ def wait_for_project_update(module, last_request):
|
|||||||
start = time.time()
|
start = time.time()
|
||||||
|
|
||||||
# Invoke wait function
|
# 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
|
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)
|
module.exit_json(**module.json_output)
|
||||||
|
|
||||||
|
|
||||||
@@ -380,10 +386,21 @@ def main():
|
|||||||
on_change = wait_for_project_update
|
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
|
# 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(
|
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
|
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__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
org_name: "AWX-Collection-tests-tower_project-org-{{ lookup('password', '/dev/null chars=ascii_letters length=16') }}"
|
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') }}"
|
cred_name: "AWX-Collection-tests-tower_project-cred-{{ lookup('password', '/dev/null chars=ascii_letters length=16') }}"
|
||||||
|
|
||||||
|
- block:
|
||||||
- name: Create an SCM Credential
|
- name: Create an SCM Credential
|
||||||
tower_credential:
|
tower_credential:
|
||||||
name: "{{ scm_cred_name }}"
|
name: "{{ scm_cred_name }}"
|
||||||
@@ -20,13 +21,13 @@
|
|||||||
that:
|
that:
|
||||||
- result is changed
|
- result is changed
|
||||||
|
|
||||||
- name: Create a git project without credentials without waiting
|
- name: Create a git project without credentials and wait
|
||||||
tower_project:
|
tower_project:
|
||||||
name: "{{ project_name1 }}"
|
name: "{{ project_name1 }}"
|
||||||
organization: Default
|
organization: Default
|
||||||
scm_type: git
|
scm_type: git
|
||||||
scm_url: https://github.com/ansible/test-playbooks
|
scm_url: https://github.com/ansible/test-playbooks
|
||||||
wait: false
|
wait: true
|
||||||
register: result
|
register: result
|
||||||
|
|
||||||
- assert:
|
- assert:
|
||||||
@@ -39,8 +40,9 @@
|
|||||||
organization: Default
|
organization: Default
|
||||||
scm_type: git
|
scm_type: git
|
||||||
scm_url: https://github.com/ansible/test-playbooks
|
scm_url: https://github.com/ansible/test-playbooks
|
||||||
wait: true
|
wait: false
|
||||||
register: result
|
register: result
|
||||||
|
ignore_errors: true
|
||||||
|
|
||||||
- assert:
|
- assert:
|
||||||
that:
|
that:
|
||||||
@@ -139,7 +141,7 @@
|
|||||||
that:
|
that:
|
||||||
- result is changed
|
- result is changed
|
||||||
|
|
||||||
- name: Update a git project, update the project and wait.
|
- name: Update the project and wait. Verify not changed as no change made to repo and refspec not changed
|
||||||
tower_project:
|
tower_project:
|
||||||
name: "{{ project_name3 }}"
|
name: "{{ project_name3 }}"
|
||||||
organization: Default
|
organization: Default
|
||||||
@@ -151,16 +153,9 @@
|
|||||||
update_project: true
|
update_project: true
|
||||||
register: result
|
register: result
|
||||||
|
|
||||||
- name: Update a git project, update the project without waiting.
|
- assert:
|
||||||
tower_project:
|
that:
|
||||||
name: "{{ project_name3 }}"
|
- result is not changed
|
||||||
organization: Default
|
|
||||||
scm_type: git
|
|
||||||
scm_branch: empty_branch
|
|
||||||
scm_url: https://github.com/ansible/test-playbooks
|
|
||||||
wait: false
|
|
||||||
update_project: true
|
|
||||||
register: result
|
|
||||||
|
|
||||||
- name: Create a job template that overrides the project scm_branch
|
- name: Create a job template that overrides the project scm_branch
|
||||||
tower_job_template:
|
tower_job_template:
|
||||||
@@ -188,6 +183,7 @@
|
|||||||
that:
|
that:
|
||||||
- job is successful
|
- job is successful
|
||||||
|
|
||||||
|
always:
|
||||||
- name: Delete the test job_template
|
- name: Delete the test job_template
|
||||||
tower_job_template:
|
tower_job_template:
|
||||||
name: "{{ jt1 }}"
|
name: "{{ jt1 }}"
|
||||||
|
|||||||
Reference in New Issue
Block a user