REST : Add ACK Rest Action

This commit adds the alert ack rest action.

Original commit: elastic/x-pack-elasticsearch@73a0286863
This commit is contained in:
Brian Murphy 2014-11-20 18:02:54 +00:00
parent bed7ddbb01
commit 32e7bc45b1
1 changed files with 49 additions and 0 deletions

View File

@ -0,0 +1,49 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/
package org.elasticsearch.alerts.rest;
import org.elasticsearch.alerts.AlertsStore;
import org.elasticsearch.alerts.client.AlertsClient;
import org.elasticsearch.alerts.transport.actions.ack.AckAlertRequest;
import org.elasticsearch.alerts.transport.actions.ack.AckAlertResponse;
import org.elasticsearch.client.Client;
import org.elasticsearch.common.inject.Inject;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.rest.*;
import org.elasticsearch.rest.action.support.RestBuilderListener;
/**
* The rest action to ack an alert
*/
public class RestAckAlertAction extends BaseRestHandler {
private final AlertsClient alertsClient;
@Inject
protected RestAckAlertAction(Settings settings, RestController controller, Client client, AlertsClient alertsClient) {
super(settings, controller, client);
this.alertsClient = alertsClient;
controller.registerHandler(RestRequest.Method.PUT, AlertsStore.ALERT_INDEX + "/{name}/_ack", this);
}
@Override
protected void handleRequest(RestRequest request, RestChannel restChannel, Client client) throws Exception {
final AckAlertRequest ackAlertRequest = new AckAlertRequest();
ackAlertRequest.setAlertName(request.param("name"));
alertsClient.ackAlert(ackAlertRequest, new RestBuilderListener<AckAlertResponse>(restChannel) {
@Override
public RestResponse buildResponse(AckAlertResponse ackAlertResponse, XContentBuilder builder) throws Exception {
builder.startObject();
builder.field(AlertsStore.ACK_STATE_FIELD.getPreferredName(), ackAlertResponse.getAlertAckState().toString());
builder.endObject();
return new BytesRestResponse(RestStatus.OK, builder);
}
});
}
}