[Engine-devel] REST-API: Problem with additional DELETE action at collection level

Shubhendu Tripathi shtripat at redhat.com
Mon Nov 11 05:00:31 UTC 2013


On 11/10/2013 11:06 PM, Moti Asayag wrote:
>
> ----- Original Message -----
>> From: "Shubhendu Tripathi" <shtripat at redhat.com>
>> To: "engine-devel" <engine-devel at ovirt.org>, "Michael Pasternak" <mpastern at redhat.com>, oliel at redhat.com
>> Sent: Friday, November 8, 2013 8:37:30 AM
>> Subject: [Engine-devel] REST-API: Problem with additional DELETE action at	collection level
>>
>> Hi All,
>>
>> There is a DELETE action defined at collection level for Gluster Bricks with
>> signature -
>>
>> @DELETE
>> public Response remove ( GlusterBricks bricks );
>>
>> Recently we had needed a commit action to remove migrated bricks.
>> After multiple rounds of discussion on introducing a commit action to remove
>> migrated bricks we introduced a DELETE action [1] which accepts a boolean
>> parameter isForce.
>> If the parameter is set to true , forced deletion of bricks happens without
>> any data migration.
>> And if the parameter is not set or set to false, the deletion is meant for a
>> brick on which migration has already taken place.
>>
>> To achieve the above functionality we introduced another DELETE action with
>> new signature as below and also marked the first action as deprecated -
>>
>> @DELETE
>> public Response remove ( Action action );
>>
>> The problem arises now as the new api works fine for all possible scenarios
>> with below input structure -
>>
>> <action>
>> <force>true/false</force>
>> <bricks>
>> <brick>
>> <name> brick1-name</name>
>> <name>brick2-name</name>
>> </brick>
>> </bricks>
>> </action>
>>
>> BUT after these change backward compatibility is broken and the old api does
>> not work.
>> If we try invoking old DELETE with bricks as input parameter as below, it
>> still invokes the new api and gives an error saying " Invalid parameter ".
>>
> Maybe I've missed it some where, but i wasn't able to find the new 'force' parameter
> in the rsdl, and specifically not in optionalArguments list of:
>
> - name: /api/clusters/{cluster:id}/glustervolumes/{glustervolume:id}/bricks|rel=delete
>
> and perhaps the correct approach will be to deprecate this signature and introduce a new
> one with the 'force' in the 'mandatoryArguments' section.
Moti, I have introduced another methods remove of DELETE type which 
takes Action as input.
I pass list of bricks and force as parameter in the same Action.

Also, I tried marking the old method deprecated and introduced the new 
one BUT as mentioned above, after introduction of new DELETE with Action 
parameter old one STOPS working.
Is it OK to stop working for a method if its deprecated?? I don't feel 
so. Please comment.
>
>> <bricks>
>> <brick id="brick1-id"/>
>> <brick id="brick2-id"/>
>> </bricks>
>>
>> Kindly suggest a solution around the same.
>>
>> PS: Both the actions are defined at collection level (
>> /api/clusters/<cluster-id>/glustervolumes/<volume-id>/bricks )
>>
>> [1]: http://gerrit.ovirt.org/#/c/21043/
>>
>> Thanks and Regards,
>> Shubhendu
>>
>>
>>
>>
>>
>> _______________________________________________
>> Engine-devel mailing list
>> Engine-devel at ovirt.org
>> http://lists.ovirt.org/mailman/listinfo/engine-devel
>>




More information about the Devel mailing list