use of io.hops.hopsworks.exceptions.ElasticException in project hopsworks by logicalclocks.
the class KibanaClient method execute.
private JSONObject execute(HttpMethod method, KibanaType type, String id, String data, Users user, Project project, boolean overwrite, boolean runAsDataOwner) throws ElasticException {
String url = settings.getKibanaUri() + "/api/saved_objects";
if (type != KibanaType.All) {
url += "/" + type.toString();
}
if (id != null) {
url += "/" + id;
}
if (overwrite) {
url += "?overwrite=true";
}
try {
final HttpUriRequest httpRequest = buildHttpRequest(method, url, data);
httpRequest.setHeader("kbn-xsrf", "required");
httpRequest.setHeader(HttpHeaders.CONTENT_TYPE, "application/json");
// authorization
if (settings.isElasticOpenDistroSecurityEnabled()) {
if (settings.isElasticJWTEnabled() && project != null && (user != null || runAsDataOwner)) {
String token = runAsDataOwner ? elasticJWTController.createTokenForELKAsDataOwner(project) : elasticJWTController.createTokenForELK(user, project);
httpRequest.setHeader(HttpHeaders.AUTHORIZATION, "Bearer " + token);
} else {
String userPass = settings.getElasticAdminUser() + ":" + settings.getElasticAdminPassword();
httpRequest.setHeader(HttpHeaders.AUTHORIZATION, "Basic " + Base64.getEncoder().encodeToString(userPass.getBytes()));
}
}
HttpRetryableAction<JSONObject> retryableAction = new HttpRetryableAction<JSONObject>(backOffPolicy) {
@Override
public JSONObject performAction() throws ClientProtocolException, IOException {
return client.execute(httpRequest, httpResponse -> {
int statusCode = httpResponse.getStatusLine().getStatusCode();
if (statusCode / 100 == 2) {
String response = EntityUtils.toString(httpResponse.getEntity());
return Strings.isNullOrEmpty(response) ? new JSONObject() : new JSONObject(response);
} else if (statusCode / 100 == 4) {
if (statusCode == 404) {
throw new NotFoundClientProtocolException(httpResponse.toString());
} else {
throw new NotRetryableClientProtocolException(httpResponse.toString());
}
} else {
// Retry
throw new ClientProtocolException();
}
});
}
};
return retryableAction.tryAction();
} catch (IOException e) {
throw new ElasticException(RESTCodes.ElasticErrorCode.KIBANA_REQ_ERROR, Level.INFO, "Failed to execute a Kibana request. Reason: " + e.getMessage(), "url:" + url, e);
}
}
use of io.hops.hopsworks.exceptions.ElasticException in project hopsworks by logicalclocks.
the class ElasticClientController method mngIndexDelete.
public AcknowledgedResponse mngIndexDelete(DeleteIndexRequest request) throws ElasticException {
FailableSupplier<AcknowledgedResponse> query = () -> client.getClient().indices().delete(request, RequestOptions.DEFAULT);
AcknowledgedResponse response = executeElasticQuery(query, "elastic index delete", request.toString());
if (response.isAcknowledged()) {
return response;
} else {
String msg = "elastic index:" + request.indices()[0] + "deletion could not be acknowledged";
throw new ElasticException(RESTCodes.ElasticErrorCode.ELASTIC_QUERY_ERROR, Level.INFO, msg);
}
}
use of io.hops.hopsworks.exceptions.ElasticException in project hopsworks by logicalclocks.
the class ElasticClientController method aliasUpdate.
public AcknowledgedResponse aliasUpdate(IndicesAliasesRequest request) throws ElasticException {
FailableSupplier<AcknowledgedResponse> query = () -> client.getClient().indices().updateAliases(request, RequestOptions.DEFAULT);
AcknowledgedResponse response = executeElasticQuery(query, "elastic alias update", request.toString());
if (response.isAcknowledged()) {
return response;
} else {
throw new ElasticException(RESTCodes.ElasticErrorCode.ELASTIC_INTERNAL_REQ_ERROR, Level.INFO, "error during elastic alias update");
}
}
use of io.hops.hopsworks.exceptions.ElasticException in project hopsworks by logicalclocks.
the class ElasticClientController method aliasGet.
public GetAliasesResponse aliasGet(GetAliasesRequest request) throws ElasticException {
FailableSupplier<GetAliasesResponse> query = () -> client.getClient().indices().getAlias(request, RequestOptions.DEFAULT);
GetAliasesResponse response = executeElasticQuery(query, "elastic get alias", request.toString());
if (response.status().equals(RestStatus.OK) || response.status().equals(RestStatus.NOT_FOUND)) {
return response;
} else {
throw new ElasticException(RESTCodes.ElasticErrorCode.ELASTIC_QUERY_ERROR, Level.INFO, "error during elastic get alias");
}
}
use of io.hops.hopsworks.exceptions.ElasticException in project hopsworks by logicalclocks.
the class ElasticClientController method searchScrollingInt.
SearchResponse searchScrollingInt(SearchScrollRequest request) throws ElasticException {
FailableSupplier<SearchResponse> query = () -> client.getClient().scroll(request, RequestOptions.DEFAULT);
SearchResponse response = executeElasticQuery(query, "elastic scrolling search", request.toString());
if (response.status().getStatus() != 200) {
String msg = "searchBasic query - bad status response:" + response.status().getStatus();
throw new ElasticException(RESTCodes.ElasticErrorCode.ELASTIC_QUERY_ERROR, Level.INFO, msg);
}
return response;
}
Aggregations