CiscoTestAutomation / pyats

Cisco DevNet pyATS Test Framework Bug Tracker
Apache License 2.0
152 stars 32 forks source link

testbed.connect exception behavior #226

Closed renato-alves-barros closed 9 months ago

renato-alves-barros commented 11 months ago

When trying to connect to all testbed "tb" devices in parallel, one can use below code:

tb.connect()

If within that testbed there are some devices which are unreachable, a ConnectionError exception is thrown for the first device that fails. As a consequence, tb.connect() returns and does not attempt to connect to any other devices.

Example: My testbed "tb" has 10 devices and 5 of them are unreachable

>>> try:
...   tb.connect()
... except Exception as e:
...   x = e.args
...   print(x[0]) 

!failed to connect to ROUTER_CORE_1
Failed while bringing device to "any" state
>>> 

Should we not expect 5x exceptions thrown by 5x devices instead of only 1x exception and tb.connect immediately returning.

SohanTirpude commented 10 months ago

Hello @renato-alves-barros,

Currently I am looking into this issue. Kindly give me some time to analyze and debug this.

Thank you.

SohanTirpude commented 10 months ago

Hello @renato-alves-barros,

Can you please let me know the pyATS version as well as complete log to debug this issue further?

Thank you.

SohanTirpude commented 10 months ago

Hello @renato-alves-barros,

Well, in python if we get an exception then the code execution stops and hence in this case, we are not seeing the 5x exceptions thrown by 5x device but only 1 exception. This small python program may help to understand this:

exceptions = [
    ValueError("This is a ValueError"),
    TypeError("This is a TypeError"),
    ZeroDivisionError("This is a ZeroDivisionError")
]

for exception in exceptions:
    raise exception

which prints/raises only first exception on console:

Traceback (most recent call last):
  File "C:\Users\stirpude\PycharmProjects\utils.py", line 8, in <module>
    raise exception
ValueError: This is a ValueError

I am not sure what exactly you are trying to achieve here by having all exception printed on console because anyway job execution is not going to continue in this case.

Kindly let me know otherwise I will have to close this ticket.

Thank you.

SohanTirpude commented 9 months ago

Hello @renato-alves-barros,

Currently the PR has been raised to address this issue. Once it is merged, I will update you here.

Thank you.

SohanTirpude commented 9 months ago

Hello @renato-alves-barros,

The PR got merged and the fix will be available in pyATS 24.2 version. So, kindly wait for the release and test the solution. Meanwhile, I am closing this ticket. If this issue still persists, kindly re-open the ticket and let me know.

Thank you.