Bug 1882248
| Summary: | FAM theforeman.foreman.repository errors out when no change needed | |||
|---|---|---|---|---|
| Product: | Red Hat Satellite | Reporter: | Patrick C. F. Ernzer <pcfe> | |
| Component: | Ansible Collection | Assignee: | Evgeni Golov <egolov> | |
| Status: | CLOSED ERRATA | QA Contact: | Peter Ondrejka <pondrejk> | |
| Severity: | medium | Docs Contact: | ||
| Priority: | unspecified | |||
| Version: | 6.7.0 | CC: | akapse, egolov | |
| Target Milestone: | 6.9.0 | Keywords: | Triaged | |
| Target Release: | Unused | |||
| Hardware: | All | |||
| OS: | Linux | |||
| Whiteboard: | ||||
| Fixed In Version: | ansible-collection-redhat-satellite-1.5.0 | Doc Type: | If docs needed, set a value | |
| Doc Text: | Story Points: | --- | ||
| Clone Of: | ||||
| : | 1933167 (view as bug list) | Environment: | ||
| Last Closed: | 2021-04-21 13:17:46 UTC | Type: | Bug | |
| Regression: | --- | Mount Type: | --- | |
| Documentation: | --- | CRM: | ||
| Verified Versions: | Category: | --- | ||
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | ||
| Cloudforms Team: | --- | Target Upstream Version: | ||
| Embargoed: | ||||
An early Satellite 6.9 SNAP includes ansible-collection-redhat-satellite-1.5.1-1.el7sat.noarch.rpm; therefore, aligning this to the release and updating state. Verified on Satellite 6.9 sn 16 using similar playbook as in problem description, "missing values" error no longer occurs, the second run passes with: PLAY RECAP ******************************************************************************************************************* hostname : ok=5 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory (Moderate: Satellite 6.9 Release), and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHSA-2021:1313 |
Description of problem: Using a theforeman.foreman.repository task twice errors out on the second run (when no change is needed on that second run) Version-Release number of selected component (if applicable): FAM 1.3.0 How reproducible: always Steps to Reproduce: 1. run below playbook once 2. make no changes on the Satellite 3. run below paybook again Actual results: errors out on second run with "param is missing or the value is empty: repository" Expected results: idempotent Additional info: File bug upstream at https://github.com/theforeman/foreman-ansible-modules/issues/975 This Bugzilla so that this customer relevant bug is propery tracked. Case will follow momentarily I get with -vvv TASK [Ensure Repository for soe-ci generated RHEL 7 RPMs exists] ********************************************************************************************************************************************************* task path: /home/pcfe/work/git/HouseNet/ansible/pcfe.net/satellite-FAM-create-soe-ci-CVs.yml:39 <127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: pcfe <127.0.0.1> EXEC /bin/sh -c 'echo ~pcfe && sleep 0' <127.0.0.1> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /home/pcfe/.ansible/tmp `"&& mkdir "` echo /home/pcfe/.ansible/tmp/ansible-tmp-1600868473.3831494-93673-81858291854066 `" && echo ansible-tmp-1600868473.3831494-93673-81858291854066="` echo /home/pcfe/.ansible/tmp/ansible-tmp-1600868473.3831494-93673-81858291854066 `" ) && sleep 0' Using module file /home/pcfe/.ansible/collections/ansible_collections/theforeman/foreman/plugins/modules/repository.py <127.0.0.1> PUT /home/pcfe/.ansible/tmp/ansible-local-93583j0frge0d/tmpx7pa72hn TO /home/pcfe/.ansible/tmp/ansible-tmp-1600868473.3831494-93673-81858291854066/AnsiballZ_repository.py <127.0.0.1> EXEC /bin/sh -c 'chmod u+x /home/pcfe/.ansible/tmp/ansible-tmp-1600868473.3831494-93673-81858291854066/ /home/pcfe/.ansible/tmp/ansible-tmp-1600868473.3831494-93673-81858291854066/AnsiballZ_repository.py && sleep 0' <127.0.0.1> EXEC /bin/sh -c '/usr/bin/python3 /home/pcfe/.ansible/tmp/ansible-tmp-1600868473.3831494-93673-81858291854066/AnsiballZ_repository.py && sleep 0' <127.0.0.1> EXEC /bin/sh -c 'rm -f -r /home/pcfe/.ansible/tmp/ansible-tmp-1600868473.3831494-93673-81858291854066/ > /dev/null 2>&1 && sleep 0' The full traceback is: File "/tmp/ansible_theforeman.foreman.repository_payload_8m06ix8s/ansible_theforeman.foreman.repository_payload.zip/ansible_collections/theforeman/foreman/plugins/module_utils/foreman_helper.py", line 818, in resource_action result = self._resource_call(resource, action, resource_payload, options=options, data=data, files=files) File "/tmp/ansible_theforeman.foreman.repository_payload_8m06ix8s/ansible_theforeman.foreman.repository_payload.zip/ansible_collections/theforeman/foreman/plugins/module_utils/foreman_helper.py", line 446, in _resource_call return self._resource(resource).call(*args, **kwargs) File "/usr/lib/python3.8/site-packages/apypie/resource.py", line 30, in call return self.api.call(self.name, action, params, headers, options, data, files) File "/usr/lib/python3.8/site-packages/apypie/api.py", line 189, in call return self._call_action(action, params, headers, data, files) File "/usr/lib/python3.8/site-packages/apypie/api.py", line 194, in _call_action return self.http_call( File "/usr/lib/python3.8/site-packages/apypie/api.py", line 224, in http_call request.raise_for_status() File "/usr/lib/python3.8/site-packages/requests/models.py", line 940, in raise_for_status raise HTTPError(http_error_msg, response=self) fatal: [localhost]: FAILED! => { "changed": false, "error": { "displayMessage": "Missing values for repository.", "errors": [ "param is missing or the value is empty: repository" ] }, "invocation": { "module_args": { "ansible_collection_requirements": null, "auto_enabled": false, "checksum_type": "sha256", "content_type": "yum", "deb_architectures": null, "deb_components": null, "deb_errata_url": null, "deb_releases": null, "description": null, "docker_tags_whitelist": null, "docker_upstream_name": null, "download_policy": "immediate", "gpg_key": null, "http_proxy": null, "http_proxy_policy": null, "ignorable_content": null, "ignore_global_proxy": null, "label": "repo-soe-rpms-rhel7", "mirror_on_sync": true, "name": "repo-soe-rpms-rhel7", "organization": "Sat Test", "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "product": "prd-ACME-soe", "server_url": "https://satellite.internal.pcfe.net", "ssl_ca_cert": null, "ssl_client_cert": null, "ssl_client_key": null, "state": "present", "unprotected": false, "upstream_password": null, "upstream_username": null, "url": "http://jenkins.internal.pcfe.net/pub/soe-repo/rhel7/", "username": "admin", "validate_certs": true, "verify_ssl_on_sync": false } }, "msg": "Error while performing update on repositories: 400 Client Error: Bad Request for url: https://satellite.internal.pcfe.net/katello/api/repositories/3824" } and with --check --diff I get TASK [Ensure Repository for soe-ci generated RHEL 7 RPMs exists] ********************************************************************************************************************************************************* --- before +++ after @@ -1,10 +1,10 @@ { "repositories": [ { + "auto_enabled": false, "checksum_type": "sha256", "content_type": "yum", "download_policy": "immediate", - "http_proxy_id": null, "http_proxy_policy": "global_default_http_proxy", "id": 3824, "label": "repo-soe-rpms-rhel7", @@ -12,9 +12,6 @@ "name": "repo-soe-rpms-rhel7", "organization_id": 1, "product_id": 320, - "ssl_ca_cert_id": null, - "ssl_client_cert_id": null, - "ssl_client_key_id": null, "unprotected": false, "url": "http://jenkins.internal.pcfe.net/pub/soe-repo/rhel7/", "verify_ssl_on_sync": false changed: [localhost] Full playbook; --- # c.f. https://github.com/theforeman/foreman-ansible-modules # AND https://theforeman.org/plugins/foreman-ansible-modules/ # my Ansible control node connects to the Satellite server. # Purely personal preference to run the tasks on another box. - hosts: localhost # put your vars wherever is comforable for you, a Tower, an AWX, a file automatically picked up by Ansible, a file explicitly specified, in this playbook or a mix. Your call, choose what fits your environment best. vars_files: - "vars/satellite-secrets.yml" vars: sat_server_url: "https://satellite.internal.pcfe.net" sat_username: "admin" sat_password: "{{ vaulted_sat6_pass }}" sat_org: "Sat Test" cu_dept: "ACME" # Do NOT use spaces, the content of this var is part of labels in Satellite repo_url_rpms_rhel7: "http://jenkins.internal.pcfe.net/pub/soe-repo/rhel7/" repo_url_rpms_rhel8: "http://jenkins.internal.pcfe.net/pub/soe-repo/rhel8/" repo_verify_ssl: no tasks: - name: "Ensure Product used by soe-ci exists and is current in Satellite" theforeman.foreman.product: username: "{{ sat_username }}" password: "{{ vaulted_sat6_pass }}" server_url: "{{ sat_server_url }}" organization: "{{ sat_org }}" name: "prd-{{ cu_dept }}-soe" description: "Used by soe-ci, managed by Ansible. Do not automatically sync, soe-ci handles syncing." state: present - name: "Ensure Repository for soe-ci generated RHEL 7 RPMs exists" theforeman.foreman.repository: username: "{{ sat_username }}" password: "{{ vaulted_sat6_pass }}" server_url: "{{ sat_server_url }}" organization: "{{ sat_org }}" auto_enabled: no checksum_type: sha256 content_type: yum download_policy: immediate mirror_on_sync: yes label: repo-soe-rpms-rhel7 name: repo-soe-rpms-rhel7 product: "prd-{{ cu_dept }}-soe" state: present unprotected: no url: "{{ repo_url_rpms_rhel7 }}" verify_ssl_on_sync: "{{ repo_verify_ssl }}" - name: "Ensure Repository for soe-ci generated RHEL 8 RPMs exists" theforeman.foreman.repository: username: "{{ sat_username }}" password: "{{ vaulted_sat6_pass }}" server_url: "{{ sat_server_url }}" organization: "{{ sat_org }}" auto_enabled: no checksum_type: sha256 content_type: yum download_policy: immediate mirror_on_sync: yes label: repo-soe-rpms-rhel8 name: repo-soe-rpms-rhel8 product: "prd-{{ cu_dept }}-soe" state: present unprotected: no url: "{{ repo_url_rpms_rhel8 }}" verify_ssl_on_sync: "{{ repo_verify_ssl }}"