use of io.hops.hopsworks.api.filter.AllowedProjectRoles in project hopsworks by logicalclocks.
the class DatasetResource method delete.
@DELETE
@Path("{path: .+}")
@Produces(MediaType.APPLICATION_JSON)
@AllowedProjectRoles({ AllowedProjectRoles.DATA_SCIENTIST, AllowedProjectRoles.DATA_OWNER })
@ApiOperation(value = "Delete/unshare dataset")
@JWTRequired(acceptedTokens = { Audience.API, Audience.JOB }, allowedUserRoles = { "HOPS_ADMIN", "HOPS_USER" })
@ApiKeyRequired(acceptedScopes = { ApiScope.DATASET_DELETE }, allowedUserRoles = { "HOPS_ADMIN", "HOPS_USER" })
public Response delete(@PathParam("path") String path, @QueryParam("type") DatasetType datasetType, @QueryParam("action") DatasetActions.Delete action, @QueryParam("target_project") String targetProject, @Context SecurityContext sc) throws DatasetException, ProjectException {
DatasetPath datasetPath = datasetHelper.getDatasetPath(this.getProject(), path, datasetType);
Users user = jwtHelper.getUserPrincipal(sc);
Project project = this.getProject();
if (action == null) {
datasetController.delete(project, user, datasetPath.getFullPath(), datasetPath.getDataset(), datasetPath.isTopLevelDataset());
} else {
switch(action) {
case UNSHARE:
checkIfDataOwner(project, user);
datasetController.unshare(project, user, datasetPath.getDataset(), targetProject);
break;
case CORRUPTED:
if (datasetPath.isTopLevelDataset()) {
throw new IllegalArgumentException("Use DELETE /{datasetName} to delete top level dataset)");
}
datasetController.deleteCorrupted(project, user, datasetPath.getFullPath(), datasetPath.getDataset());
break;
default:
throw new WebApplicationException("Action not valid.", Response.Status.NOT_FOUND);
}
}
return Response.noContent().build();
}
use of io.hops.hopsworks.api.filter.AllowedProjectRoles in project hopsworks by logicalclocks.
the class SilenceResource method getById.
@GET
@Path("{silenceId}")
@Produces(MediaType.APPLICATION_JSON)
@ApiOperation(value = "Find silence by Id.", response = SilenceDTO.class)
@AllowedProjectRoles({ AllowedProjectRoles.DATA_OWNER, AllowedProjectRoles.DATA_SCIENTIST })
@JWTRequired(acceptedTokens = { Audience.API }, allowedUserRoles = { "HOPS_ADMIN", "HOPS_USER" })
public Response getById(@PathParam("silenceId") String silenceId, @Context UriInfo uriInfo, @Context SecurityContext sc) throws AlertException, ProjectException {
ResourceRequest resourceRequest = new ResourceRequest(ResourceRequest.Name.SILENCES);
SilenceDTO dto = silenceBuilder.build(uriInfo, resourceRequest, silenceId, getProject());
return Response.ok().entity(dto).build();
}
use of io.hops.hopsworks.api.filter.AllowedProjectRoles in project hopsworks by logicalclocks.
the class SilenceResource method create.
@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@ApiOperation(value = "Create a silence.", response = SilenceDTO.class)
@AllowedProjectRoles({ AllowedProjectRoles.DATA_OWNER })
@JWTRequired(acceptedTokens = { Audience.API }, allowedUserRoles = { "HOPS_ADMIN", "HOPS_USER" })
public Response create(PostableSilenceDTO postableSilenceDTO, @Context UriInfo uriInfo, @Context SecurityContext sc) throws AlertException, ProjectException {
if (postableSilenceDTO == null) {
throw new AlertException(RESTCodes.AlertErrorCode.ILLEGAL_ARGUMENT, Level.FINE, "No payload.");
}
Users user = jWTHelper.getUserPrincipal(sc);
Project project = getProject();
postableSilenceDTO.setId(null);
SilenceID silenceID = postSilence(postableSilenceDTO, project, user);
SilenceDTO dto = silenceBuilder.build(uriInfo, new ResourceRequest(ResourceRequest.Name.SILENCES), silenceID.getSilenceID(), project);
dto.setHref(uriInfo.getAbsolutePathBuilder().path(silenceID.getSilenceID()).build());
return Response.created(dto.getHref()).entity(dto).build();
}
use of io.hops.hopsworks.api.filter.AllowedProjectRoles in project hopsworks by logicalclocks.
the class ModelsResource method bulkPutTags.
@ApiOperation(value = "Create or update tags(bulk) for a model", response = TagsDTO.class)
@PUT
@Path("/{id}/tags")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@AllowedProjectRoles({ AllowedProjectRoles.DATA_SCIENTIST, AllowedProjectRoles.DATA_OWNER })
@JWTRequired(acceptedTokens = { Audience.API, Audience.JOB }, allowedUserRoles = { "HOPS_ADMIN", "HOPS_USER" })
@ApiKeyRequired(acceptedScopes = { ApiScope.MODELREGISTRY }, allowedUserRoles = { "HOPS_ADMIN", "HOPS_USER" })
public Response bulkPutTags(@Context SecurityContext sc, @Context UriInfo uriInfo, @ApiParam(value = "Id of the model", required = true) @PathParam("id") String id, TagsDTO tags) throws MetadataException, SchematizedTagException, DatasetException, ProvenanceException, ModelRegistryException {
Users user = jwtHelper.getUserPrincipal(sc);
ProvStateDTO fileState = modelsController.getModel(modelRegistryProject, id);
ModelDTO model = modelUtils.convertProvenanceHitToModel(fileState);
AttachTagResult result;
if (tags.getItems().size() == 0) {
result = tagController.upsert(userProject, user, modelUtils.getModelFullPath(modelRegistryProject, model.getName(), model.getVersion()), tags.getName(), tags.getValue());
} else {
Map<String, String> newTags = new HashMap<>();
for (TagsDTO tag : tags.getItems()) {
newTags.put(tag.getName(), tag.getValue());
}
result = tagController.upsertAll(userProject, user, modelUtils.getModelFullPath(modelRegistryProject, model.getName(), model.getVersion()), newTags);
}
ResourceRequest resourceRequest = new ResourceRequest(ResourceRequest.Name.TAGS);
TagsDTO dto = tagBuilder.build(uriInfo, resourceRequest, userProject, modelRegistryProject, fileState.getMlId(), result.getItems());
UriBuilder builder = uriInfo.getAbsolutePathBuilder();
if (result.isCreated()) {
return Response.created(builder.build()).entity(dto).build();
} else {
return Response.ok(builder.build()).entity(dto).build();
}
}
use of io.hops.hopsworks.api.filter.AllowedProjectRoles in project hopsworks by logicalclocks.
the class ModelsResource method deleteTag.
@ApiOperation(value = "Delete tag attached to a model")
@DELETE
@Path("/{id}/tags/{name}")
@Produces(MediaType.APPLICATION_JSON)
@AllowedProjectRoles({ AllowedProjectRoles.DATA_SCIENTIST, AllowedProjectRoles.DATA_OWNER })
@JWTRequired(acceptedTokens = { Audience.API, Audience.JOB }, allowedUserRoles = { "HOPS_ADMIN", "HOPS_USER" })
@ApiKeyRequired(acceptedScopes = { ApiScope.MODELREGISTRY }, allowedUserRoles = { "HOPS_ADMIN", "HOPS_USER" })
public Response deleteTag(@Context SecurityContext sc, @ApiParam(value = "Id of the model", required = true) @PathParam("id") String id, @ApiParam(value = "Name of the tag", required = true) @PathParam("name") String name) throws DatasetException, MetadataException, ProvenanceException, ModelRegistryException {
Users user = jwtHelper.getUserPrincipal(sc);
ProvStateDTO fileState = modelsController.getModel(modelRegistryProject, id);
ModelDTO model = modelUtils.convertProvenanceHitToModel(fileState);
tagController.delete(userProject, user, modelUtils.getModelFullPath(modelRegistryProject, model.getName(), model.getVersion()), name);
return Response.noContent().build();
}
Aggregations