use of io.hops.hopsworks.persistence.entity.user.Users in project hopsworks by logicalclocks.
the class KafkaController method getTopicAclsByDto.
public Optional<TopicAcls> getTopicAclsByDto(String topicName, AclDTO dto) throws UserException {
Users user = Optional.ofNullable(userFacade.findByEmail(dto.getUserEmail())).orElseThrow(() -> new UserException(RESTCodes.UserErrorCode.USER_WAS_NOT_FOUND, Level.FINE, "user: " + dto.getUserEmail()));
String principalName = KafkaConst.buildPrincipalName(dto.getProjectName(), user.getUsername());
return topicAclsFacade.getTopicAcls(topicName, dto, principalName);
}
use of io.hops.hopsworks.persistence.entity.user.Users in project hopsworks by logicalclocks.
the class JupyterNotebookCleaner method execute.
@Timeout
@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
public void execute(Timer timer) {
try {
LOGGER.log(Level.INFO, "Running JupyterNotebookCleaner.");
// 1. Get all Running Jupyter Notebook Servers
List<JupyterProject> servers = jupyterFacade.getAllNotebookServers();
if (servers != null && !servers.isEmpty()) {
Date currentDate = Calendar.getInstance().getTime();
for (JupyterProject jp : servers) {
// If the notebook is expired
if (!jp.isNoLimit() && jp.getExpires().before(currentDate)) {
try {
HdfsUsers hdfsUser = hdfsUsersFacade.find(jp.getHdfsUserId());
Users user = usersFacade.findByUsername(hdfsUser.getUsername());
LOGGER.log(Level.FINE, "Shutting down expired notebook for hdfs user " + hdfsUser.getName());
jupyterController.shutdown(jp.getProjectId(), hdfsUser.getName(), user, jp.getSecret(), jp.getCid(), jp.getPort());
} catch (Exception e) {
LOGGER.log(Level.SEVERE, "Failed to cleanup notebook with port " + jp.getPort(), e);
}
}
}
}
} catch (Exception e) {
LOGGER.log(Level.SEVERE, "Got an exception while cleaning up jupyter notebooks");
}
}
use of io.hops.hopsworks.persistence.entity.user.Users in project hopsworks by logicalclocks.
the class KafkaController method addAclsToTopic.
private Pair<TopicAcls, Response.Status> addAclsToTopic(String topicName, Integer projectId, String selectedProjectName, String userEmail, String permissionType, String operationType, String host, String role) throws ProjectException, KafkaException, UserException {
if (Strings.isNullOrEmpty(topicName) || userEmail == null) {
throw new IllegalArgumentException("Topic and userEmail must be provided.");
}
// get the project id
Project topicOwnerProject = Optional.ofNullable(projectFacade.find(projectId)).orElseThrow(() -> new ProjectException(RESTCodes.ProjectErrorCode.PROJECT_NOT_FOUND, Level.FINE, "projectId: " + projectId));
if (!topicOwnerProject.getName().equals(selectedProjectName)) {
if (projectFacade.findByName(selectedProjectName) == null) {
throw new ProjectException(RESTCodes.ProjectErrorCode.PROJECT_NOT_FOUND, Level.FINE, "The specified project " + "for the topic" + topicName + " was not found");
}
}
ProjectTopics pt = projectTopicsFacade.findTopicByNameAndProject(topicOwnerProject, topicName).orElseThrow(() -> new KafkaException(RESTCodes.KafkaErrorCode.TOPIC_NOT_FOUND, Level.FINE, "Topic: " + topicName));
// should not be able to create multiple ACLs at the same time
if (userEmail.equals("*")) {
throw new KafkaException(RESTCodes.KafkaErrorCode.ACL_FOR_ANY_USER, Level.FINE, "topic: " + topicName);
}
// fetch the user name from database
Users user = Optional.ofNullable(userFacade.findByEmail(userEmail)).orElseThrow(() -> new UserException(RESTCodes.UserErrorCode.USER_WAS_NOT_FOUND, Level.FINE, "user: " + userEmail));
String principalName = KafkaConst.buildPrincipalName(selectedProjectName, user.getUsername());
Optional<TopicAcls> optionalAcl = topicAclsFacade.getTopicAcls(topicName, principalName, permissionType, operationType, host, role);
if (optionalAcl.isPresent()) {
return Pair.of(optionalAcl.get(), Response.Status.OK);
}
TopicAcls acl = topicAclsFacade.addAclsToTopic(pt, user, permissionType, operationType, host, role, principalName);
return Pair.of(acl, Response.Status.CREATED);
}
use of io.hops.hopsworks.persistence.entity.user.Users in project hopsworks by logicalclocks.
the class ProjectController method addMember.
public void addMember(Users user, String role, Project project) throws KafkaException, ProjectException, UserException, FeaturestoreException, IOException {
if (user == null || project == null) {
throw new IllegalArgumentException("User and project can not be null.");
}
ProjectTeam projectTeam = new ProjectTeam(new ProjectTeamPK(project.getId(), user.getEmail()));
projectTeam.setTeamRole(role);
Users owner = project.getOwner();
boolean added;
DistributedFileSystemOps dfso = null;
try {
dfso = dfs.getDfsOps();
added = addMember(projectTeam, project, user, owner, dfso);
} finally {
dfs.closeDfsClient(dfso);
}
if (!added) {
LOGGER.log(Level.FINE, "User {0} is already a member in this project {1}.", new Object[] { user.getUsername(), project.getName() });
}
}
use of io.hops.hopsworks.persistence.entity.user.Users in project hopsworks by logicalclocks.
the class ProjectController method removeMemberFromTeam.
public void removeMemberFromTeam(Project project, Users user, String toRemoveEmail) throws UserException, ProjectException, ServiceException, IOException, GenericException, JobException, HopsSecurityException, TensorBoardException, FeaturestoreException {
Users userToBeRemoved = userFacade.findByEmail(toRemoveEmail);
if (userToBeRemoved == null) {
throw new UserException(RESTCodes.UserErrorCode.USER_WAS_NOT_FOUND, Level.FINE, "user: " + userToBeRemoved.getEmail());
}
removeMemberFromTeam(project, userToBeRemoved);
logActivity(ActivityFacade.REMOVED_MEMBER + userToBeRemoved.getEmail(), user, project, ActivityFlag.MEMBER);
}
Aggregations