use of io.cdap.cdap.api.artifact.ArtifactSummary in project cdap by caskdata.
the class ValidationHandler method validatePipeline.
@POST
@Path("v1/contexts/{context}/validations/pipeline")
public void validatePipeline(HttpServiceRequest request, HttpServiceResponder responder, @PathParam("context") String namespace) throws IOException {
if (!getContext().getAdmin().namespaceExists(namespace)) {
responder.sendError(HttpURLConnection.HTTP_NOT_FOUND, String.format("Namespace '%s' does not exist", namespace));
return;
}
AppRequest<JsonObject> appRequest;
try {
appRequest = GSON.fromJson(StandardCharsets.UTF_8.decode(request.getContent()).toString(), APP_REQUEST_TYPE);
appRequest.validate();
} catch (JsonSyntaxException e) {
responder.sendError(HttpURLConnection.HTTP_BAD_REQUEST, "Unable to decode request body: " + e.getMessage());
return;
} catch (IllegalArgumentException e) {
responder.sendError(HttpURLConnection.HTTP_BAD_REQUEST, "Invalid artifact in pipeline request: " + e.getMessage());
return;
}
ArtifactSummary artifactSummary = appRequest.getArtifact();
if (StudioUtil.isBatchPipeline(artifactSummary)) {
responder.sendJson(validateBatchPipeline(appRequest));
} else if (StudioUtil.isStreamingPipeline(artifactSummary)) {
responder.sendJson(validateStreamingPipeline(appRequest));
} else {
responder.sendError(HttpURLConnection.HTTP_BAD_REQUEST, String.format("Invalid artifact '%s'. Must be '%s' or '%s'.", artifactSummary.getName(), StudioUtil.ARTIFACT_BATCH_NAME, StudioUtil.ARTIFACT_STREAMING_NAME));
}
}
use of io.cdap.cdap.api.artifact.ArtifactSummary in project cdap by caskdata.
the class DataPipelineServiceTest method testValidatePipelineChecksNamespaceExistence.
@Test
public void testValidatePipelineChecksNamespaceExistence() throws IOException {
ETLBatchConfig config = ETLBatchConfig.builder().addStage(new ETLStage("src", MockSource.getPlugin("dummy1"))).addStage(new ETLStage("sink", MockSink.getPlugin("dummy2"))).addConnection("src", "sink").build();
ArtifactSummary badArtifact = new ArtifactSummary("ghost", "1.0.0");
AppRequest<ETLBatchConfig> appRequest = new AppRequest<>(badArtifact, config);
URL validatePipelineURL = serviceURI.resolve("v1/contexts/ghost/validations/pipeline").toURL();
HttpRequest request = HttpRequest.builder(HttpMethod.POST, validatePipelineURL).withBody(GSON.toJson(appRequest)).build();
HttpResponse response = HttpRequests.execute(request, new DefaultHttpRequestConfig(false));
Assert.assertEquals(404, response.getResponseCode());
}
use of io.cdap.cdap.api.artifact.ArtifactSummary in project cdap by caskdata.
the class DraftServiceTest method createBatchPipelineDraft.
private Draft createBatchPipelineDraft(DraftId draftId, String name, String description) throws IOException {
ArtifactSummary artifact = new ArtifactSummary("cdap-data-pipeline", "1.0.0");
ETLBatchConfig config = ETLBatchConfig.builder().addStage(new ETLStage("src", MockSource.getPlugin("dummy1"))).addStage(new ETLStage("sink", MockSink.getPlugin("dummy2"))).addConnection("src", "sink").setEngine(Engine.SPARK).build();
DraftStoreRequest<ETLBatchConfig> batchDraftStoreRequest = new DraftStoreRequest<>(config, "", name, description, 0, artifact);
long now = System.currentTimeMillis();
Draft expectedDraft = new Draft(config, name, description, artifact, draftId.getId(), now, now);
createPipelineDraft(draftId, batchDraftStoreRequest);
return expectedDraft;
}
use of io.cdap.cdap.api.artifact.ArtifactSummary in project cdap by caskdata.
the class ListArtifactVersionsCommand method perform.
@Override
public void perform(Arguments arguments, PrintStream output) throws Exception {
String scopeStr = arguments.getOptional(ArgumentName.SCOPE.toString());
String artifactName = arguments.get(ArgumentName.ARTIFACT_NAME.toString());
List<ArtifactSummary> artifactSummaries;
if (scopeStr == null) {
artifactSummaries = artifactClient.listVersions(cliConfig.getCurrentNamespace(), artifactName);
} else {
ArtifactScope scope = ArtifactScope.valueOf(scopeStr.toUpperCase());
artifactSummaries = artifactClient.listVersions(cliConfig.getCurrentNamespace(), artifactName, scope);
}
Table table = Table.builder().setHeader("name", "version", "scope").setRows(artifactSummaries, new RowMaker<ArtifactSummary>() {
@Override
public List<?> makeRow(ArtifactSummary object) {
return Lists.newArrayList(object.getName(), object.getVersion(), object.getScope().name());
}
}).build();
cliConfig.getTableRenderer().render(cliConfig, output, table);
}
use of io.cdap.cdap.api.artifact.ArtifactSummary in project cdap by caskdata.
the class ListArtifactsCommand method perform.
@Override
public void perform(Arguments arguments, PrintStream output) throws Exception {
List<ArtifactSummary> artifactSummaries;
String artifactScope = arguments.getOptional(ArgumentName.SCOPE.toString());
if (artifactScope == null) {
artifactSummaries = artifactClient.list(cliConfig.getCurrentNamespace());
} else {
artifactSummaries = artifactClient.list(cliConfig.getCurrentNamespace(), ArtifactScope.valueOf(artifactScope.toUpperCase()));
}
Table table = Table.builder().setHeader("name", "version", "scope").setRows(artifactSummaries, new RowMaker<ArtifactSummary>() {
@Override
public List<?> makeRow(ArtifactSummary object) {
return Lists.newArrayList(object.getName(), object.getVersion(), object.getScope().name());
}
}).build();
cliConfig.getTableRenderer().render(cliConfig, output, table);
}
Aggregations