I've debugged vdsm while doing sdm.create_volume and even at the code
level, 'job' and 'task' are loosely related - they don't know each
others' ids.
I think this is not possible besides doing a workaround like retrieving
all task ids before, and after you run the job, and then comparing those
two sets.
On 9/19/18 1:55 AM, Germano Veit Michel wrote:
Hi Marcin,
Yes, I know that. Let me try to be clearer.
1. My API command passes a JobID as argument.
2. VDSM creates a taskID for it once it starts running the command
3. I want to retrieve or define the taskID somehow.
The current API does show the TaskIDs and JobIDs. The JobID I know,
but I want to know the TaskID for the API command I submitted.
And the API does not have enough info to correlate the JobID with the
TaskID. See:
# vdsm-client Host getJobs
{
"8a4a6452-bb9c-11e8-8871-52540016c103": {
"status": "done",
"job_type": "storage",
"id": "8a4a6452-bb9c-11e8-8871-52540016c103",
"description": "update_volume"
},
# vdsm-client Host getAllTasks
{
"eb3f55af-c004-44af-8b28-87f8924a7623": {
"verb": "sdm_update_volume",
"code": 0,
"state": "finished",
"tag": "sdm",
"result": "",
"message": "1 jobs completed successfully",
"id": "eb3f55af-c004-44af-8b28-87f8924a7623"
},
I want to somehow retrieve or define the taskID
(eb3f55af-c004-44af-8b28-87f8924a7623) after using the following
update_volume command:
~~~
from vdsm import client
cli = client.connect('localhost', 54321, use_tls=True)
cli.SDM.update_volume(job_id=job, vol_info=vol, vol_attr=changes)
~~~
On Wed, Sep 19, 2018 at 4:52 AM Marcin Sobczyk <msobczyk(a)redhat.com
<mailto:msobczyk@redhat.com>> wrote:
From what I can see in:
https://github.com/oVirt/vdsm/blob/0725f32994293514d3275528c44687e8e800d6...
you should try and query sdm jobs by using Host.getJobs API call.
On 9/18/18 6:50 AM, Germano Veit Michel wrote:
> Hi Marcin,
>
> Thanks for replying. In short, this is what I am doing:
>
> ~~~
> from vdsm import client
> cli = client.connect('localhost', 54321, use_tls=True)
> cli.SDM.update_volume(job_id=job, vol_info=vol, vol_attr=changes)
> ~~~
>
> This last line does an API call. A taskID is generated in vdsm, I
> can only specify the JobID as a parameter of the call. From what
> I read, the taskID should be sent on the HTTP header if I want to
> set it. But I cannot find how to do it.
> The whole point is that I want to know the taskID, so I can
> monitor the task and clear it after it is finished.
>
> So:
> * How do I retrieve the taskID vdsm generated for this?
> or
> * How to I query VDSM to give me the taskID for the JobID I
> passed as argument
> or
> * How can I specify the taskID to be used given I'm using vdsm
> client (from vdsm import client).
> or
> * any other idea you have on how to handle this?
>
> Am I missing something or there is some missing implementation
> for doing this?
>
> Thanks
>
> On Mon, Sep 17, 2018 at 10:19 PM Marcin Sobczyk
> <msobczyk(a)redhat.com <mailto:msobczyk@redhat.com>> wrote:
>
> Hi,
>
> I'm currently doing some work around vdsm API so maybe I can.
> I need some more detailed description of your problem though
> - a pseudo-code of the calls you're making with explanation
> what exactly is the problem would be ideal.
>
> Marcin
>
> On 9/17/18 7:04 AM, Germano Veit Michel wrote:
>> Hello,
>>
>> I've been struggling with TaskID/FlowID when talking to the
>> VDSM API. I am trying to write a tool that uses the vdsm-api
>> to facilitate the troubleshooting of image issues
>> (snapshots). This tool does a series of API calls, but I
>> cannot find a nice way to track the taskID and clear the
>> completed tasks after completion of the tool commands.
>> Currently I'm clearing all Tasks that match the verb and are
>> finished, which is not ideal. I would like to have the exact
>> TaskID to track and dont want to leave Tasks behind. I don't
>> want also to clear tasks from other entities (like engine!).
>>
>> I understand that if I want to specify the task/flow ids
>> when calling the vdsm API, these two need to be passed as
>> headers (http) so they end up in the context of the call. Is
>> this correct? But using vdsm/client.py I cannot figure out
>> how to do this, but I understand it is possible.
>>
>> I've been looking at vdsm/common/api.py and vdsm/client.py
>> and trying several things but nothing seems to do it. Could
>> anyone please put some light on this?
>>
>> Thanks,
>> Germano
>>
>> _______________________________________________
>> Devel mailing list --devel(a)ovirt.org <mailto:devel@ovirt.org>
>> To unsubscribe send an email todevel-leave(a)ovirt.org
<mailto:devel-leave@ovirt.org>
>> Privacy
Statement:https://www.ovirt.org/site/privacy-policy/
>> oVirt Code of
Conduct:https://www.ovirt.org/community/about/community-guidelines/
>> List
Archives:https://lists.ovirt.org/archives/list/devel@ovirt.org/message/MS...
> _______________________________________________
> Devel mailing list -- devel(a)ovirt.org <mailto:devel@ovirt.org>
> To unsubscribe send an email to devel-leave(a)ovirt.org
> <mailto:devel-leave@ovirt.org>
> Privacy Statement:
https://www.ovirt.org/site/privacy-policy/
> oVirt Code of Conduct:
>
https://www.ovirt.org/community/about/community-guidelines/
> List Archives:
>
https://lists.ovirt.org/archives/list/devel@ovirt.org/message/J3UUC3EBLGU...
>