project update fix

This commit is contained in:
sean-m-ssullivan
2021-04-22 22:45:40 -05:00
parent 6267b264bf
commit a75cbe683c
2 changed files with 222 additions and 209 deletions

View File

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

View File

@@ -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 }}"