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

Moti Asayag masayag at redhat.com
Sun Nov 10 17:36:08 UTC 2013



----- 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.

> <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