Python-SDK: ovirtsdk4.Connection object autologout?

Hi, We've recently upgraded from oVirt 4.0.x to 4.1.0 and it seems that the behavior of a script we wrote in Python-SDK has changed slightly. We have a script that needs to be executed forever (daemon mode). This daemon creates an ovirtsdk4.Connection object and uses the same Connection object all the time. conn = sdk.Connection( url=URI, username=USERNAME, password=PASSWORD, ca_file=CAFILE ) Between iterations we have ~5 minutes delays which we accomplish with a time.sleep(...) call. After some of these iterations (5 or 6), when trying to perform an operation on the Connection object (in this case, listing all SDs): try: sys_serv = conn.system_service() sd_serv = sys_serv.storage_domains_service() storages = sd_serv.list(search=sd_search_query) except Error, e: log('ERR: Error getting storage domains: %s' % (e)) We start getting exceptions (i.e., the sd_serv.list() call throwing an Error exception) with this message: ERR: Error getting storage domains: HTTP response code is 401. I believe this has something to do with the Connection object expiring (even if it's not idle more than 5 minutes at any time). Is there a way to "refresh" the Connection object so it doesn't auto-logout (assuming this is the actual problem)? As I said, this started happening as of oVirt 4.1.0. ovirt-engine-sdk-python version is 4.1.1. Any ideas? Thanks.

On 03/22/2017 01:10 PM, nicolas@devels.es wrote:
Hi,
We've recently upgraded from oVirt 4.0.x to 4.1.0 and it seems that the behavior of a script we wrote in Python-SDK has changed slightly. We have a script that needs to be executed forever (daemon mode). This daemon creates an ovirtsdk4.Connection object and uses the same Connection object all the time.
conn = sdk.Connection( url=URI, username=USERNAME, password=PASSWORD, ca_file=CAFILE )
Between iterations we have ~5 minutes delays which we accomplish with a time.sleep(...) call.
After some of these iterations (5 or 6), when trying to perform an operation on the Connection object (in this case, listing all SDs):
try: sys_serv = conn.system_service() sd_serv = sys_serv.storage_domains_service() storages = sd_serv.list(search=sd_search_query) except Error, e: log('ERR: Error getting storage domains: %s' % (e))
We start getting exceptions (i.e., the sd_serv.list() call throwing an Error exception) with this message:
ERR: Error getting storage domains: HTTP response code is 401.
I believe this has something to do with the Connection object expiring (even if it's not idle more than 5 minutes at any time). Is there a way to "refresh" the Connection object so it doesn't auto-logout (assuming this is the actual problem)?
As I said, this started happening as of oVirt 4.1.0. ovirt-engine-sdk-python version is 4.1.1.
Any ideas?
This sound like this bug, opened yesterday: SSO token used for the API expires when running only queries https://bugzilla.redhat.com/1434605 But I thought the same happened in 4.0. Can you confirm that you don't see this problem in 4.0? Open possible workaround is to force a refresh of the backend session sending an external event, like in this example: https://github.com/oVirt/ovirt-engine-sdk/blob/master/sdk/examples/vm_backup... I also think that we need to modify the SDKs so that they detect expired SSO tokens and renew them automatically. I will open another bug for that.

On 03/22/2017 01:50 PM, Juan Hernández wrote:
On 03/22/2017 01:10 PM, nicolas@devels.es wrote:
Hi,
We've recently upgraded from oVirt 4.0.x to 4.1.0 and it seems that the behavior of a script we wrote in Python-SDK has changed slightly. We have a script that needs to be executed forever (daemon mode). This daemon creates an ovirtsdk4.Connection object and uses the same Connection object all the time.
conn = sdk.Connection( url=URI, username=USERNAME, password=PASSWORD, ca_file=CAFILE )
Between iterations we have ~5 minutes delays which we accomplish with a time.sleep(...) call.
After some of these iterations (5 or 6), when trying to perform an operation on the Connection object (in this case, listing all SDs):
try: sys_serv = conn.system_service() sd_serv = sys_serv.storage_domains_service() storages = sd_serv.list(search=sd_search_query) except Error, e: log('ERR: Error getting storage domains: %s' % (e))
We start getting exceptions (i.e., the sd_serv.list() call throwing an Error exception) with this message:
ERR: Error getting storage domains: HTTP response code is 401.
I believe this has something to do with the Connection object expiring (even if it's not idle more than 5 minutes at any time). Is there a way to "refresh" the Connection object so it doesn't auto-logout (assuming this is the actual problem)?
As I said, this started happening as of oVirt 4.1.0. ovirt-engine-sdk-python version is 4.1.1.
Any ideas?
This sound like this bug, opened yesterday:
SSO token used for the API expires when running only queries https://bugzilla.redhat.com/1434605
But I thought the same happened in 4.0. Can you confirm that you don't see this problem in 4.0?
Open possible workaround is to force a refresh of the backend session sending an external event, like in this example:
https://github.com/oVirt/ovirt-engine-sdk/blob/master/sdk/examples/vm_backup...
I also think that we need to modify the SDKs so that they detect expired SSO tokens and renew them automatically. I will open another bug for that.
Here is the bug for adding automatic SSO token renew to the SDK, in case you want to follow/vote it: Implement automatic SSO token renew https://bugzilla.redhat.com/1434830

Hi Juan, I confirm this was working with 4.0.6 (but the same SDK package). The script is relatively new but I'm 100% sure it has been in execution for several weeks, in contrast to current version where after 5-6 iterations the exception starts showing up. I've voted for the bug and added myself as CC. Thank you. Regards, Nicolás El 2017-03-22 12:58, Juan Hernández escribió:
On 03/22/2017 01:50 PM, Juan Hernández wrote:
On 03/22/2017 01:10 PM, nicolas@devels.es wrote:
Hi,
We've recently upgraded from oVirt 4.0.x to 4.1.0 and it seems that the behavior of a script we wrote in Python-SDK has changed slightly. We have a script that needs to be executed forever (daemon mode). This daemon creates an ovirtsdk4.Connection object and uses the same Connection object all the time.
conn = sdk.Connection( url=URI, username=USERNAME, password=PASSWORD, ca_file=CAFILE )
Between iterations we have ~5 minutes delays which we accomplish with a time.sleep(...) call.
After some of these iterations (5 or 6), when trying to perform an operation on the Connection object (in this case, listing all SDs):
try: sys_serv = conn.system_service() sd_serv = sys_serv.storage_domains_service() storages = sd_serv.list(search=sd_search_query) except Error, e: log('ERR: Error getting storage domains: %s' % (e))
We start getting exceptions (i.e., the sd_serv.list() call throwing an Error exception) with this message:
ERR: Error getting storage domains: HTTP response code is 401.
I believe this has something to do with the Connection object expiring (even if it's not idle more than 5 minutes at any time). Is there a way to "refresh" the Connection object so it doesn't auto-logout (assuming this is the actual problem)?
As I said, this started happening as of oVirt 4.1.0. ovirt-engine-sdk-python version is 4.1.1.
Any ideas?
This sound like this bug, opened yesterday:
SSO token used for the API expires when running only queries https://bugzilla.redhat.com/1434605
But I thought the same happened in 4.0. Can you confirm that you don't see this problem in 4.0?
Open possible workaround is to force a refresh of the backend session sending an external event, like in this example:
https://github.com/oVirt/ovirt-engine-sdk/blob/master/sdk/examples/vm_backup...
I also think that we need to modify the SDKs so that they detect expired SSO tokens and renew them automatically. I will open another bug for that.
Here is the bug for adding automatic SSO token renew to the SDK, in case you want to follow/vote it:
Implement automatic SSO token renew https://bugzilla.redhat.com/1434830

Hi Nicolás, There has been some changes to how a session is refreshed after 4.0. So this is a BZ and is being tracked by BZ 1434605. Will post a patch to fix this. Thanks for reporting the issue. Ravi On Wed, Mar 22, 2017 at 9:10 AM, <nicolas@devels.es> wrote:
Hi Juan,
I confirm this was working with 4.0.6 (but the same SDK package). The script is relatively new but I'm 100% sure it has been in execution for several weeks, in contrast to current version where after 5-6 iterations the exception starts showing up.
I've voted for the bug and added myself as CC.
Thank you.
Regards,
Nicolás
El 2017-03-22 12:58, Juan Hernández escribió:
On 03/22/2017 01:50 PM, Juan Hernández wrote:
On 03/22/2017 01:10 PM, nicolas@devels.es wrote:
Hi,
We've recently upgraded from oVirt 4.0.x to 4.1.0 and it seems that the behavior of a script we wrote in Python-SDK has changed slightly. We have a script that needs to be executed forever (daemon mode). This daemon creates an ovirtsdk4.Connection object and uses the same Connection object all the time.
conn = sdk.Connection( url=URI, username=USERNAME, password=PASSWORD, ca_file=CAFILE )
Between iterations we have ~5 minutes delays which we accomplish with a time.sleep(...) call.
After some of these iterations (5 or 6), when trying to perform an operation on the Connection object (in this case, listing all SDs):
try: sys_serv = conn.system_service() sd_serv = sys_serv.storage_domains_service() storages = sd_serv.list(search=sd_search_query) except Error, e: log('ERR: Error getting storage domains: %s' % (e))
We start getting exceptions (i.e., the sd_serv.list() call throwing an Error exception) with this message:
ERR: Error getting storage domains: HTTP response code is 401.
I believe this has something to do with the Connection object expiring (even if it's not idle more than 5 minutes at any time). Is there a way to "refresh" the Connection object so it doesn't auto-logout (assuming this is the actual problem)?
As I said, this started happening as of oVirt 4.1.0. ovirt-engine-sdk-python version is 4.1.1.
Any ideas?
This sound like this bug, opened yesterday:
SSO token used for the API expires when running only queries https://bugzilla.redhat.com/1434605
But I thought the same happened in 4.0. Can you confirm that you don't see this problem in 4.0?
Open possible workaround is to force a refresh of the backend session sending an external event, like in this example:
https://github.com/oVirt/ovirt-engine-sdk/blob/master/sdk/ examples/vm_backup.py#L112-L131
I also think that we need to modify the SDKs so that they detect expired SSO tokens and renew them automatically. I will open another bug for that.
Here is the bug for adding automatic SSO token renew to the SDK, in case you want to follow/vote it:
Implement automatic SSO token renew https://bugzilla.redhat.com/1434830
_______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users

Hi Ravi, Could you please tell me what's the right way to apply this patch on an already working oVirt instance? I already have applied some patches on *.py files, but it seems the *.java files are not there. Thanks! El 2017-03-22 16:06, Ravi Nori escribió:
Hi Nicolás,
There has been some changes to how a session is refreshed after 4.0. So this is a BZ and is being tracked by BZ 1434605.
Will post a patch to fix this. Thanks for reporting the issue.
Ravi
On Wed, Mar 22, 2017 at 9:10 AM, <nicolas@devels.es> wrote:
Hi Juan,
I confirm this was working with 4.0.6 (but the same SDK package). The script is relatively new but I'm 100% sure it has been in execution for several weeks, in contrast to current version where after 5-6 iterations the exception starts showing up.
I've voted for the bug and added myself as CC.
Thank you.
Regards,
Nicolás
El 2017-03-22 12:58, Juan Hernández escribió: On 03/22/2017 01:50 PM, Juan Hernández wrote: On 03/22/2017 01:10 PM, nicolas@devels.es wrote: Hi,
We've recently upgraded from oVirt 4.0.x to 4.1.0 and it seems that the behavior of a script we wrote in Python-SDK has changed slightly. We have a script that needs to be executed forever (daemon mode). This daemon creates an ovirtsdk4.Connection object and uses the same Connection object all the time.
conn = sdk.Connection( url=URI, username=USERNAME, password=PASSWORD, ca_file=CAFILE )
Between iterations we have ~5 minutes delays which we accomplish with a time.sleep(...) call.
After some of these iterations (5 or 6), when trying to perform an operation on the Connection object (in this case, listing all SDs):
try: sys_serv = conn.system_service() sd_serv = sys_serv.storage_domains_service() storages = sd_serv.list(search=sd_search_query) except Error, e: log('ERR: Error getting storage domains: %s' % (e))
We start getting exceptions (i.e., the sd_serv.list() call throwing an Error exception) with this message:
ERR: Error getting storage domains: HTTP response code is 401.
I believe this has something to do with the Connection object expiring (even if it's not idle more than 5 minutes at any time). Is there a way to "refresh" the Connection object so it doesn't auto-logout (assuming this is the actual problem)?
As I said, this started happening as of oVirt 4.1.0. ovirt-engine-sdk-python version is 4.1.1.
Any ideas?
This sound like this bug, opened yesterday:
SSO token used for the API expires when running only queries https://bugzilla.redhat.com/1434605 [1]
But I thought the same happened in 4.0. Can you confirm that you don't see this problem in 4.0?
Open possible workaround is to force a refresh of the backend session sending an external event, like in this example:
https://github.com/oVirt/ovirt-engine-sdk/blob/master/sdk/examples/vm_backup...
[2]
I also think that we need to modify the SDKs so that they detect expired SSO tokens and renew them automatically. I will open another bug for that.
Here is the bug for adding automatic SSO token renew to the SDK, in case you want to follow/vote it:
Implement automatic SSO token renew https://bugzilla.redhat.com/1434830 [3] _______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users [4]
Links: ------ [1] https://bugzilla.redhat.com/1434605 [2] https://github.com/oVirt/ovirt-engine-sdk/blob/master/sdk/examples/vm_backup... [3] https://bugzilla.redhat.com/1434830 [4] http://lists.ovirt.org/mailman/listinfo/users

Can you give me the exact rpm version of ovirt-engine-backend, I can give you a replacement jar file to test On Thu, Mar 23, 2017 at 3:56 AM, <nicolas@devels.es> wrote:
Hi Ravi,
Could you please tell me what's the right way to apply this patch on an already working oVirt instance? I already have applied some patches on *.py files, but it seems the *.java files are not there.
Thanks!
El 2017-03-22 16:06, Ravi Nori escribió:
Hi Nicolás,
There has been some changes to how a session is refreshed after 4.0. So this is a BZ and is being tracked by BZ 1434605.
Will post a patch to fix this. Thanks for reporting the issue.
Ravi
On Wed, Mar 22, 2017 at 9:10 AM, <nicolas@devels.es> wrote:
Hi Juan,
I confirm this was working with 4.0.6 (but the same SDK package). The script is relatively new but I'm 100% sure it has been in execution for several weeks, in contrast to current version where after 5-6 iterations the exception starts showing up.
I've voted for the bug and added myself as CC.
Thank you.
Regards,
Nicolás
El 2017-03-22 12:58, Juan Hernández escribió: On 03/22/2017 01:50 PM, Juan Hernández wrote: On 03/22/2017 01:10 PM, nicolas@devels.es wrote: Hi,
We've recently upgraded from oVirt 4.0.x to 4.1.0 and it seems that the behavior of a script we wrote in Python-SDK has changed slightly. We have a script that needs to be executed forever (daemon mode). This daemon creates an ovirtsdk4.Connection object and uses the same Connection object all the time.
conn = sdk.Connection( url=URI, username=USERNAME, password=PASSWORD, ca_file=CAFILE )
Between iterations we have ~5 minutes delays which we accomplish with a time.sleep(...) call.
After some of these iterations (5 or 6), when trying to perform an operation on the Connection object (in this case, listing all SDs):
try: sys_serv = conn.system_service() sd_serv = sys_serv.storage_domains_service() storages = sd_serv.list(search=sd_search_query) except Error, e: log('ERR: Error getting storage domains: %s' % (e))
We start getting exceptions (i.e., the sd_serv.list() call throwing an Error exception) with this message:
ERR: Error getting storage domains: HTTP response code is 401.
I believe this has something to do with the Connection object expiring (even if it's not idle more than 5 minutes at any time). Is there a way to "refresh" the Connection object so it doesn't auto-logout (assuming this is the actual problem)?
As I said, this started happening as of oVirt 4.1.0. ovirt-engine-sdk-python version is 4.1.1.
Any ideas?
This sound like this bug, opened yesterday:
SSO token used for the API expires when running only queries https://bugzilla.redhat.com/1434605 [1]
But I thought the same happened in 4.0. Can you confirm that you don't see this problem in 4.0?
Open possible workaround is to force a refresh of the backend session sending an external event, like in this example:
examples/vm_backup.py#L112-L131
[2]
I also think that we need to modify the SDKs so that they detect expired SSO tokens and renew them automatically. I will open another bug for that.
Here is the bug for adding automatic SSO token renew to the SDK, in case you want to follow/vote it:
Implement automatic SSO token renew https://bugzilla.redhat.com/1434830 [3] _______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users [4]
Links: ------ [1] https://bugzilla.redhat.com/1434605 [2] https://github.com/oVirt/ovirt-engine-sdk/blob/master/sdk/ examples/vm_backup.py#L112-L131 [3] https://bugzilla.redhat.com/1434830 [4] http://lists.ovirt.org/mailman/listinfo/users

ovirt-engine-backend-4.1.0.4-1.el7.centos.noarch El 2017-03-23 12:53, Ravi Nori escribió:
Can you give me the exact rpm version of ovirt-engine-backend, I can give you a replacement jar file to test
On Thu, Mar 23, 2017 at 3:56 AM, <nicolas@devels.es> wrote:
Hi Ravi,
Could you please tell me what's the right way to apply this patch on an already working oVirt instance? I already have applied some patches on *.py files, but it seems the *.java files are not there.
Thanks!
El 2017-03-22 16:06, Ravi Nori escribió:
Hi Nicolás,
There has been some changes to how a session is refreshed after 4.0. So this is a BZ and is being tracked by BZ 1434605.
Will post a patch to fix this. Thanks for reporting the issue.
Ravi
On Wed, Mar 22, 2017 at 9:10 AM, <nicolas@devels.es> wrote:
Hi Juan,
I confirm this was working with 4.0.6 (but the same SDK package). The script is relatively new but I'm 100% sure it has been in execution for several weeks, in contrast to current version where after 5-6 iterations the exception starts showing up.
I've voted for the bug and added myself as CC.
Thank you.
Regards,
Nicolás
El 2017-03-22 12:58, Juan Hernández escribió: On 03/22/2017 01:50 PM, Juan Hernández wrote: On 03/22/2017 01:10 PM, nicolas@devels.es wrote: Hi,
We've recently upgraded from oVirt 4.0.x to 4.1.0 and it seems that the behavior of a script we wrote in Python-SDK has changed slightly. We have a script that needs to be executed forever (daemon mode). This daemon creates an ovirtsdk4.Connection object and uses the same Connection object all the time.
conn = sdk.Connection( url=URI, username=USERNAME, password=PASSWORD, ca_file=CAFILE )
Between iterations we have ~5 minutes delays which we accomplish with a time.sleep(...) call.
After some of these iterations (5 or 6), when trying to perform an operation on the Connection object (in this case, listing all SDs):
try: sys_serv = conn.system_service() sd_serv = sys_serv.storage_domains_service() storages = sd_serv.list(search=sd_search_query) except Error, e: log('ERR: Error getting storage domains: %s' % (e))
We start getting exceptions (i.e., the sd_serv.list() call throwing an Error exception) with this message:
ERR: Error getting storage domains: HTTP response code is 401.
I believe this has something to do with the Connection object expiring (even if it's not idle more than 5 minutes at any time). Is there a way to "refresh" the Connection object so it doesn't auto-logout (assuming this is the actual problem)?
As I said, this started happening as of oVirt 4.1.0. ovirt-engine-sdk-python version is 4.1.1.
Any ideas?
This sound like this bug, opened yesterday:
SSO token used for the API expires when running only queries https://bugzilla.redhat.com/1434605 [1] [1]
But I thought the same happened in 4.0. Can you confirm that you don't see this problem in 4.0?
Open possible workaround is to force a refresh of the backend session sending an external event, like in this example:
https://github.com/oVirt/ovirt-engine-sdk/blob/master/sdk/examples/vm_backup...
[2] [2]
I also think that we need to modify the SDKs so that they detect expired SSO tokens and renew them automatically. I will open another bug for that.
Here is the bug for adding automatic SSO token renew to the SDK, in case you want to follow/vote it:
Implement automatic SSO token renew https://bugzilla.redhat.com/1434830 [3] [3] _______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users [4] [4]
Links: ------ [1] https://bugzilla.redhat.com/1434605 [1] [2]
https://github.com/oVirt/ovirt-engine-sdk/blob/master/sdk/examples/vm_backup...
[2] [3] https://bugzilla.redhat.com/1434830 [3] [4] http://lists.ovirt.org/mailman/listinfo/users [4]
Links: ------ [1] https://bugzilla.redhat.com/1434605 [2] https://github.com/oVirt/ovirt-engine-sdk/blob/master/sdk/examples/vm_backup... [3] https://bugzilla.redhat.com/1434830 [4] http://lists.ovirt.org/mailman/listinfo/users
participants (4)
-
Juan Hernández
-
nicolas@devels.es
-
Nicolás
-
Ravi Nori