----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/43926/ -----------------------------------------------------------
(Updated April 12, 2016, 6:33 p.m.) Review request for Ambari, Alejandro Fernandez, Zhe (Joe) Wang, Nate Cole, Sumit Mohanty, and Yusaku Sako. Bugs: AMBARI-15150 https://issues.apache.org/jira/browse/AMBARI-15150 Repository: ambari Description (updated) ------- Currently DELETE API only returns status code and no body. This doesn't fit well in bulk delete scenario as user needs to know which keys were deleted and which one failed and why. For this, ResourceProvider needs to return metadata as part of RequestStatus object which can be translated to metadata for Result object at API layer. At API layer, for all failed keys, reason code (like 404) is required which will make scripting easy instead of just including error message as string. API response for bulk delete {code} curl -u admin:admin -H 'X-Requested-By: ambari' -X DELETE http://c6401.ambari.apache.org:8080/api/v1/clusters/a/hosts -d '{"RequestInfo":{"query":"Hosts/host_name.in(c6401.ambari.apache.org,c6402.ambari.apache.org)"}}' { "deleteResult" : [ { "deleted" : { "key" : "c6402.ambari.apache.org" } }, { "error" : { "key" : "c6401.ambari.apache.org", "code" : 500, "message" : "org.apache.ambari.server.AmbariException: Cannot remove host c6401.ambari.apache.org from a. The following roles exist, and these components must be stopped if running, and then deleted: ZOOKEEPER_SERVER" } } ] } {code} Sample code for how each resource provider can set metadata for delete https://reviews.apache.org/r/43927/. Diffs (updated) ----- ambari-server/src/main/java/org/apache/ambari/server/api/handlers/BaseManagementHandler.java c34f0d7 ambari-server/src/main/java/org/apache/ambari/server/api/handlers/CreateHandler.java 691a3ee ambari-server/src/main/java/org/apache/ambari/server/api/handlers/DeleteHandler.java 8580196 ambari-server/src/main/java/org/apache/ambari/server/api/handlers/QueryCreateHandler.java 534ee7b ambari-server/src/main/java/org/apache/ambari/server/api/handlers/UpdateHandler.java bb66fae ambari-server/src/main/java/org/apache/ambari/server/api/services/DeleteResultMetadata.java PRE-CREATION ambari-server/src/main/java/org/apache/ambari/server/api/services/Result.java fabab62 ambari-server/src/main/java/org/apache/ambari/server/api/services/ResultImpl.java adcbde1 ambari-server/src/main/java/org/apache/ambari/server/api/services/ResultMetadata.java PRE-CREATION ambari-server/src/main/java/org/apache/ambari/server/api/services/serializers/JsonSerializer.java c17f162 ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractResourceProvider.java ac9935d ambari-server/src/main/java/org/apache/ambari/server/controller/internal/DeleteStatusMetaData.java PRE-CREATION ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RequestStatusImpl.java b0fde8a ambari-server/src/main/java/org/apache/ambari/server/controller/spi/RequestStatus.java f9847a9 ambari-server/src/main/java/org/apache/ambari/server/controller/spi/RequestStatusMetaData.java PRE-CREATION ambari-server/src/test/java/org/apache/ambari/server/api/handlers/DeleteHandlerTest.java fb70be6 ambari-server/src/test/java/org/apache/ambari/server/api/services/DeleteResultMetaDataTest.java PRE-CREATION ambari-server/src/test/java/org/apache/ambari/server/api/services/serializers/JsonSerializerTest.java d854dcf ambari-server/src/test/java/org/apache/ambari/server/controller/internal/DeleteStatusMetaDataTest.java PRE-CREATION ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RequestStatusImplTest.java cd61822 Diff: https://reviews.apache.org/r/43926/diff/ Testing (updated) ------- manual testing Unit test Thanks, Ajit Kumar