[Engine-devel] Gluster Volume asynchronous tasks

Sahina Bose sabose at redhat.com
Wed Aug 21 11:19:51 UTC 2013


On 08/21/2013 03:54 PM, Itamar Heim wrote:
> On 08/21/2013 12:46 AM, Sahina Bose wrote:
>>
>> On 08/20/2013 04:00 AM, Itamar Heim wrote:
>>> On 08/12/2013 06:09 AM, Sahina Bose wrote:
>>>>
>>>> On 08/12/2013 03:28 PM, Yair Zaslavsky wrote:
>>>>>
>>>>> ----- Original Message -----
>>>>>> From: "Sahina Bose" <sabose at redhat.com>
>>>>>> To: "Eli Mesika" <emesika at redhat.com>
>>>>>> Cc: "engine-devel" <engine-devel at ovirt.org>, arch at ovirt.org
>>>>>> Sent: Monday, August 12, 2013 11:51:15 AM
>>>>>> Subject: Re: [Engine-devel] Gluster Volume asynchronous tasks
>>>>>>
>>>>>>
>>>>>> On 08/12/2013 01:21 PM, Eli Mesika wrote:
>>>>>>> ----- Original Message -----
>>>>>>>> From: "Sahina Bose" <sabose at redhat.com>
>>>>>>>> To: "engine-devel" <engine-devel at ovirt.org>, arch at ovirt.org,
>>>>>>>> "Michael
>>>>>>>> Pasternak" <mpastern at redhat.com>
>>>>>>>> Sent: Monday, August 12, 2013 8:41:55 AM
>>>>>>>> Subject: [Engine-devel] Gluster Volume asynchronous tasks
>>>>>>>>
>>>>>>>> Hi all,
>>>>>>>>
>>>>>>>> We are working on a feature to add support to start and monitor
>>>>>>>> gluster
>>>>>>>> volume asynchronous tasks (like rebalancing a gluster volume,
>>>>>>>> removing
>>>>>>>> brick from volume ) from the oVirt engine.
>>>>>>>>
>>>>>>>> The operations can be started from the Volumes tab or the Bricks
>>>>>>>> sub-tab
>>>>>>>> using the Rebalance, Remove options.
>>>>>>>> These are long running operations which can be monitored using a
>>>>>>>> task id
>>>>>>>> returned from Gluster. We are planning to add the monitoring in 
>>>>>>>> the
>>>>>>>> existing Task sub tab
>>>>>>>>
>>>>>>>> The feature description and User flows are at
>>>>>>>> http://www.ovirt.org/Features/Gluster_Volume_Asynchronous_Tasks_Management 
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> The detailed design (including REST API design) is at
>>>>>>>> http://www.ovirt.org/Features/Detailed_Gluster_Volume_Asynchronous_Tasks_Management. 
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> I would really appreciate if you could review and provide your
>>>>>>>> valuable
>>>>>>>> feedback.
>>>>>>> I Sahina
>>>>>>> Why not using 6the External Tasks feature introduced for 3.3 for
>>>>>>> those
>>>>>>> Gluster tasks ???
>>>>>>> http://www.ovirt.org/Features/Design/DetailedExternalTasks
>>>>>> Hi Eli,
>>>>>>
>>>>>> We still want to be able to start and stop these operations from the
>>>>>> engine.
>>>>>> So, when a user wants to say, rebalance a volume, they would go 
>>>>>> select
>>>>>> the volume and click on Rebalance Start.
>>>>>> This would then call the BLL command to start rebalance which will
>>>>>> invoke the corresponding vdsm verb to start the rebalance on the
>>>>>> volume.
>>>>>> This is the same as existing flow for other commands. The only
>>>>>> difference is the vdsm verb will return the task id from gluster, 
>>>>>> for
>>>>>> the rebalance operation that was started. And we will monitor the
>>>>>> progress of the task using the gluster task id (by calling a gluster
>>>>>> command)
>>>>>>
>>>>>> I'm not sure how ExternalTasks would fit in here? I was thinking of
>>>>>> using ExternalTask support for adding Job/Steps to engine when the
>>>>>> operation is started outside of engine, that is, from Gluster CLI.
>>>>>> Please correct me if I'm missing something.
>>>>> Does this mean that from Gluster CLI you will not try and invoke the
>>>>> rebalance command ?
>>>>> (I mean, I should either use Gluster CLI or Engine's REST API?)
>>>> Rebalance volume command could be invoked in any of the following 
>>>> ways:
>>>> 1. From the console UI (clicking on Rebalance as shown in
>>>> http://www.ovirt.org/Features/Gluster_Volume_Asynchronous_Tasks_Management#Rebalance_Volume) 
>>>>
>>>>
>>>>
>>>> 2. Using REST API
>>>> 3. Outside of engine, from Gluster CLI - In such cases, the engine
>>>> should detect that a user has triggered rebalance operation outside 
>>>> the
>>>> engine, and allow the user to monitor progress of this from the 
>>>> engine.
>>>> This is where, we need support to add a Job for an operation that was
>>>> started externally, so that it can be seen in the Tasks tab.
>>>
>>> and still, it should be considered an internal task, since the engine
>>> is managing it / detected it.
>>>
>>
>> Itamar, yes, you are right. This would need to be treated as an internal
>> task as the engine needs to be able to stop it and also monitor it. We
>> would probably need a similar mechanism as external task injection, to
>> add a Job for the task started from gluster CLI.
>>
>>
>
> even if it was started from CLI, wouldn't it be better if engine 
> detected it, and still treated it as an internal task, allowing to 
> cancel it, etc.?

Yes, but I need to add a Job for this internal task, so that it can be 
monitored in the Tasks pane. Any idea if I can use any existing 
framework to do it? I was thinking I would use 
ExecutionHandler.createJob to do this (similar to what's done in 
AddExternalJobCommand)




More information about the Engine-devel mailing list