@Override public void upgrade(DatasetId datasetInstanceId) throws Exception { executeAdminOp(datasetInstanceId, "upgrade"); }
@Override public void drop(DatasetId datasetInstanceId, DatasetTypeMeta typeMeta, DatasetSpecification spec) throws Exception { InternalDatasetDropParams dropParams = new InternalDatasetDropParams(typeMeta, spec); doRequest(datasetInstanceId, "drop", GSON.toJson(dropParams)); }
private HttpResponse doRequest(DatasetId datasetInstanceId, String opName, @Nullable String body) throws IOException, ConflictException { String path = String.format("namespaces/%s/data/datasets/%s/admin/%s", datasetInstanceId.getNamespace(), datasetInstanceId.getEntityName(), opName); LOG.trace("executing POST on {} with body {}", path, body); try { HttpRequest.Builder builder = remoteClient.requestBuilder(HttpMethod.POST, path); if (body != null) { builder.withBody(body); } String userId = authenticationContext.getPrincipal().getName(); if (userId != null) { builder.addHeader(Constants.Security.Headers.USER_ID, userId); } HttpResponse httpResponse = remoteClient.execute(builder.build()); LOG.trace("executed POST on {} with body {}: {}", path, body, httpResponse.getResponseCode()); verifyResponse(httpResponse); return httpResponse; } catch (Exception e) { LOG.trace("Caught exception for POST on {} with body {}", path, body, e); throw e; } }
@Override public void drop(DatasetId datasetInstanceId, DatasetTypeMeta typeMeta, DatasetSpecification spec) throws Exception { InternalDatasetDropParams dropParams = new InternalDatasetDropParams(typeMeta, spec); doRequest(datasetInstanceId, "drop", GSON.toJson(dropParams)); }
private HttpResponse doRequest(DatasetId datasetInstanceId, String opName, @Nullable String body) throws IOException, ConflictException { String path = String.format("namespaces/%s/data/datasets/%s/admin/%s", datasetInstanceId.getNamespace(), datasetInstanceId.getEntityName(), opName); LOG.trace("executing POST on {} with body {}", path, body); try { HttpRequest.Builder builder = remoteClient.requestBuilder(HttpMethod.POST, path); if (body != null) { builder.withBody(body); } String userId = authenticationContext.getPrincipal().getName(); if (userId != null) { builder.addHeader(Constants.Security.Headers.USER_ID, userId); } HttpResponse httpResponse = remoteClient.execute(builder.build()); LOG.trace("executed POST on {} with body {}: {}", path, body, httpResponse.getResponseCode()); verifyResponse(httpResponse); return httpResponse; } catch (Exception e) { LOG.trace("Caught exception for POST on {} with body {}", path, body, e); throw e; } }
private DatasetAdminOpResponse executeAdminOp(DatasetId datasetInstanceId, String opName) throws IOException, HandlerException, ConflictException { HttpResponse httpResponse = doRequest(datasetInstanceId, opName, null); return GSON.fromJson(Bytes.toString(httpResponse.getResponseBody()), DatasetAdminOpResponse.class); }
@Override public void truncate(DatasetId datasetInstanceId) throws Exception { executeAdminOp(datasetInstanceId, "truncate"); }
private DatasetAdminOpResponse executeAdminOp(DatasetId datasetInstanceId, String opName) throws IOException, HandlerException, ConflictException { HttpResponse httpResponse = doRequest(datasetInstanceId, opName, null); return GSON.fromJson(Bytes.toString(httpResponse.getResponseBody()), DatasetAdminOpResponse.class); }
@Override public void truncate(DatasetId datasetInstanceId) throws Exception { executeAdminOp(datasetInstanceId, "truncate"); }
@Override public DatasetCreationResponse create(DatasetId datasetInstanceId, DatasetTypeMeta typeMeta, DatasetProperties props) throws Exception { InternalDatasetCreationParams creationParams = new InternalDatasetCreationParams(typeMeta, props); HttpResponse response = doRequest(datasetInstanceId, "create", GSON.toJson(creationParams)); return ObjectResponse.fromJsonBody(response, DatasetCreationResponse.class).getResponseObject(); }
@Override public void upgrade(DatasetId datasetInstanceId) throws Exception { executeAdminOp(datasetInstanceId, "upgrade"); }
@Override public DatasetCreationResponse update(DatasetId datasetInstanceId, DatasetTypeMeta typeMeta, DatasetProperties props, DatasetSpecification existing) throws Exception { InternalDatasetCreationParams updateParams = new InternalDatasetUpdateParams(typeMeta, existing, props); HttpResponse response = doRequest(datasetInstanceId, "update", GSON.toJson(updateParams)); return ObjectResponse.fromJsonBody(response, DatasetCreationResponse.class).getResponseObject(); }
@Override public boolean exists(DatasetId datasetInstanceId) throws Exception { return (Boolean) executeAdminOp(datasetInstanceId, "exists").getResult(); }
@Override public DatasetCreationResponse create(DatasetId datasetInstanceId, DatasetTypeMeta typeMeta, DatasetProperties props) throws Exception { InternalDatasetCreationParams creationParams = new InternalDatasetCreationParams(typeMeta, props); HttpResponse response = doRequest(datasetInstanceId, "create", GSON.toJson(creationParams)); return ObjectResponse.fromJsonBody(response, DatasetCreationResponse.class).getResponseObject(); }
@Override public boolean exists(DatasetId datasetInstanceId) throws Exception { return (Boolean) executeAdminOp(datasetInstanceId, "exists").getResult(); }
@Override public DatasetCreationResponse update(DatasetId datasetInstanceId, DatasetTypeMeta typeMeta, DatasetProperties props, DatasetSpecification existing) throws Exception { InternalDatasetCreationParams updateParams = new InternalDatasetUpdateParams(typeMeta, existing, props); HttpResponse response = doRequest(datasetInstanceId, "update", GSON.toJson(updateParams)); return ObjectResponse.fromJsonBody(response, DatasetCreationResponse.class).getResponseObject(); }