Bug 1873470
Summary: | Pre-upgrade validations fail because of missing python3 command in overcloud nodes | ||
---|---|---|---|
Product: | Red Hat OpenStack | Reporter: | Takashi Kajinami <tkajinam> |
Component: | python-tripleoclient | Assignee: | mathieu bultel <mbultel> |
Status: | CLOSED ERRATA | QA Contact: | David Rosenfeld <drosenfe> |
Severity: | medium | Docs Contact: | |
Priority: | medium | ||
Version: | 16.1 (Train) | CC: | cjeanner, emacchi, gchamoul, hbrock, jbuchta, jfrancoa, jhardee, jjoyce, jmelvin, jschluet, jslagle, mbultel, mburns, mgarciac, rbrady, slinaber, spower, tvignaud, ykulkarn |
Target Milestone: | z3 | Keywords: | Triaged |
Target Release: | 16.1 (Train on RHEL 8.2) | ||
Hardware: | Unspecified | ||
OS: | Unspecified | ||
Whiteboard: | |||
Fixed In Version: | python-tripleoclient-12.3.2-1.20200914164930.el8ost | Doc Type: | If docs needed, set a value |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2020-12-15 18:36:32 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: |
Description
Takashi Kajinami
2020-08-28 12:32:43 UTC
Moving this BZ back to DFG:DF, as this is a pure Validations Framework issue. My guess is that the fact of having the Undercloud in RHEL8 with OSP16.1 (python3) and the overcloud nodes in RHEL7 with OSP13 (no python3) causes the issue. The Framework will probably need to set up the ansible_python_interpreter to /usr/libexec/platform-python (which is present in RHEL7 and RHEL8) or add some logic to capture the right python binary in the target system: https://github.com/redhat-openstack/infrared/blob/c2f6cb0b793c12a5f072ef5c2f29dc98e3ff0aeb/plugins/tripleo-undercloud/update_inventory.yml#L28-L45 Something like it's done here...it relies on the raw module (which doesn't use python underneath) to capture the binary in the system and then it sets it up. have to check, but iirc the tripleo-ansible-inventory script takes some options, among them the python interpreter. Maybe we can tweak it a bit. I can see that the OSP16.1 Undercloud has Ansible 2.9 version, so maybe it's just a fact of changing these ansible options: https://docs.ansible.com/ansible/latest/reference_appendices/interpreter_discovery.html Running the validation with Mathieus patch worked: openstack tripleo validator run --debug --plan qe-Cloud-0 --validation check-rhsm-version --python-interpreter /usr/libexec/platform-python (undercloud) [stack@undercloud-0 ~]$ openstack tripleo validator show run 5254007e-7d72-bcbc-d185-00000000000b { "task": { "hosts": { "compute-0": { "_ansible_no_log": false, "action": "fail", "changed": false, "failed": true, "msg": "8.2 does not match configured rhsm_version Release not set" } }, "name": "Check RHSM version", "status": "FAILED" } } { "task": { "hosts": { "compute-1": { "_ansible_no_log": false, "action": "fail", "changed": false, "failed": true, "msg": "8.2 does not match configured rhsm_version Release not set" } }, "name": "Check RHSM version", "status": "FAILED" } } { "task": { "hosts": { "controller-0": { "_ansible_no_log": false, "action": "fail", "changed": false, "failed": true, "msg": "8.2 does not match configured rhsm_version Release not set" } }, "name": "Check RHSM version", "status": "FAILED" } } { "task": { "hosts": { "controller-1": { "_ansible_no_log": false, "action": "fail", "changed": false, "failed": true, "msg": "8.2 does not match configured rhsm_version Release not set" } }, "name": "Check RHSM version", "status": "FAILED" } } { "task": { "hosts": { "controller-2": { "_ansible_no_log": false, "action": "fail", "changed": false, "failed": true, "msg": "8.2 does not match configured rhsm_version Release not set" } }, "name": "Check RHSM version", "status": "FAILED" } } While, if I run it without the parameter I would get: (undercloud) [stack@undercloud-0 ~]$ openstack tripleo validator show run 5254007e-7d72-e718-2945-00000000000b { "task": { "hosts": { "compute-0": { "_ansible_no_log": false, "action": "command", "changed": false, "failed": true, "module_stderr": "Shared connection to 192.168.24.51 closed.\r\n", "module_stdout": "/bin/sh: /usr/bin/python3: No such file or directory\r\n", "msg": "The module failed to execute correctly, you probably need to set the interpreter.\nSee stdout/stderr for the exact error", "rc": 127 } }, "name": "Retrieve RHSM version", "status": "FAILED" } } { "task": { "hosts": { "compute-1": { "_ansible_no_log": false, "action": "command", "changed": false, "failed": true, "module_stderr": "Shared connection to 192.168.24.38 closed.\r\n", "module_stdout": "/bin/sh: /usr/bin/python3: No such file or directory\r\n", "msg": "The module failed to execute correctly, you probably need to set the interpreter.\nSee stdout/stderr for the exact error", "rc": 127 } }, "name": "Retrieve RHSM version", "status": "FAILED" } } { "task": { "hosts": { "controller-0": { "_ansible_no_log": false, "action": "command", "changed": false, "failed": true, "module_stderr": "Shared connection to 192.168.24.16 closed.\r\n", "module_stdout": "/bin/sh: /usr/bin/python3: No such file or directory\r\n", "msg": "The module failed to execute correctly, you probably need to set the interpreter.\nSee stdout/stderr for the exact error", "rc": 127 } }, "name": "Retrieve RHSM version", "status": "FAILED" } } { "task": { "hosts": { "controller-1": { "_ansible_no_log": false, "action": "command", "changed": false, "failed": true, "module_stderr": "Shared connection to 192.168.24.6 closed.\r\n", "module_stdout": "/bin/sh: /usr/bin/python3: No such file or directory\r\n", "msg": "The module failed to execute correctly, you probably need to set the interpreter.\nSee stdout/stderr for the exact error", "rc": 127 } }, "name": "Retrieve RHSM version", "status": "FAILED" } } { "task": { "hosts": { "controller-2": { "_ansible_no_log": false, "action": "command", "changed": false, "failed": true, "module_stderr": "Shared connection to 192.168.24.14 closed.\r\n", "module_stdout": "/bin/sh: /usr/bin/python3: No such file or directory\r\n", "msg": "The module failed to execute correctly, you probably need to set the interpreter.\nSee stdout/stderr for the exact error", "rc": 127 } }, "name": "Retrieve RHSM version", "status": "FAILED" } } sys:1: ResourceWarning: unclosed <ssl.SSLSocket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6, laddr=('192.168.24.2', 37782), raddr=('192.168.24.2 ', 13000)> The only complain is the fact of having to pass an extra parameter for all the validations run in this type of situation (different RHEL versions between UC and OC nodes). It would be nicer that the code would realize automagically that it has to use /usr/libexec/platform-python *** Bug 1894000 has been marked as a duplicate of this bug. *** 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 (Red Hat OpenStack Platform 16.1.3 bug fix and enhancement advisory), 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/RHEA-2020:5413 I think we should also update the document to use the new option. I opened another bug for the documentation update. https://bugzilla.redhat.com/show_bug.cgi?id=1908569 |