@RequestMapping(value = {
"/{cfInstanceId}/v2/service_instances/{instanceId}",
"/v2/service_instances/{instanceId}"
}, method = RequestMethod.DELETE)
public ResponseEntity<?> deleteServiceInstance(@PathVariable Map<String, String> pathVariables,
@PathVariable("instanceId") String serviceInstanceId,
@RequestParam("service_id") String serviceDefinitionId,
@RequestParam("plan_id") String planId,
@RequestParam(value = ASYNC_REQUEST_PARAMETER, required = false) boolean acceptsIncomplete,
@RequestHeader(value = API_INFO_LOCATION_HEADER, required = false) String apiInfoLocation,
@RequestHeader(value = ORIGINATING_IDENTITY_HEADER, required = false) String originatingIdentityString) {
DeleteServiceInstanceRequest request =
new DeleteServiceInstanceRequest(serviceInstanceId, serviceDefinitionId, planId, getServiceDefinition(serviceDefinitionId))
.withAsyncAccepted(acceptsIncomplete)
.withCfInstanceId(pathVariables.get("cfInstanceId"))
.withApiInfoLocation(apiInfoLocation)
.withOriginatingIdentity(parseOriginatingIdentity(originatingIdentityString));
log.debug("Deleting a service instance: request={}", request);
try {
DeleteServiceInstanceResponse response = service.deleteServiceInstance(request);
log.debug("Deleting a service instance succeeded: serviceInstanceId={}, response={}",
serviceInstanceId, response);
return new ResponseEntity<>(response, response.isAsync() ? HttpStatus.ACCEPTED : HttpStatus.OK);
} catch (ServiceInstanceDoesNotExistException e) {
log.debug("Service instance does not exist: ", e);
return new ResponseEntity<>("{}", HttpStatus.GONE);
}
}