API behaviour differs depending upon Python version

53 views
Skip to first unread message

Ceri Williams

unread,
Feb 23, 2021, 8:32:00 AM2/23/21
to Ansible Development
Hi,

I am hoping that someone can explain a difference in behaviour when using the API, where success is achieved when using Python 2 (2.7 tested) and a failure occurs when using Python 3 (3.6 and 3.8 tested).

The outcome of running the same code with the 2 versions of Python are as follows (ansible == latest, but occurs on 2.9, 2.10 etc):

Python 2.7

./py2/bin/python test.py; echo $?  --> 0

# extract of full output
controller1 | SUCCESS => {
    "msg": "a0492524b4da454d992d9987481cacf2"
}
node1 | SUCCESS => {
    "msg": "a0492524b4da454d992d9987481cacf2"
}

Ignore the fact that the machine ID is identical, as that is purely due to instances running from the same base image.

Python 3.6

./py3/bin/python test.py; echo $?  --> 2

# extract of full output
[WARNING]: Unhandled error in Python interpreter discovery for host node1: '>' not supported between instances of 'NoneType' and 'int'
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: TypeError: '>' not supported between instances of 'NoneType' and 'int'
node1 | FAILED! => {
    "msg": "Unexpected failure during module execution.",
    "stdout": ""
}

controller1 | SUCCESS => {
    "msg": "a0492524b4da454d992d9987481cacf2"
}

I have attached the steps to reproduce the issue. 

It seems to relate to the connection plugin, whereby unless a local connection  is used then running with Python 3 will error, whereas Python 2 will not.

Cheers,

Ceri
ansible-api-test.txt
Reply all
Reply to author
Forward
0 new messages