This is an automated email from the ASF dual-hosted git repository.
dyankiv pushed a commit to branch DATALAB-2809
in repository https://gitbox.apache.org/repos/asf/incubator-datalab.git
The following commit(s) were added to refs/heads/DATALAB-2809 by this push:
new d9e2c4dd3 add shared status check for images
d9e2c4dd3 is described below
commit d9e2c4dd32d499a23dfad5ab28adda9e81e3e0a2
Author: Denys Yankiv <[email protected]>
AuthorDate: Tue Jun 28 13:41:02 2022 +0300
add shared status check for images
---
.../datalab/backendapi/resources/dto/ImageInfoRecord.java | 2 +-
.../service/impl/ImageExploratoryServiceImpl.java | 15 +++++++++++++++
2 files changed, 16 insertions(+), 1 deletion(-)
diff --git
a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/dto/ImageInfoRecord.java
b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/dto/ImageInfoRecord.java
index 4417b211a..7292b83db 100644
---
a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/dto/ImageInfoRecord.java
+++
b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/dto/ImageInfoRecord.java
@@ -45,7 +45,7 @@ public class ImageInfoRecord {
private final String dockerImage;
private final String fullName;
private final ImageStatus status;
- private final boolean isShared;
+ private boolean isShared;
private final List<ClusterConfig> clusterConfig;
private final String exploratoryURL;
private final List<Library> libraries;
diff --git
a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/ImageExploratoryServiceImpl.java
b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/ImageExploratoryServiceImpl.java
index bbc8ad841..842e3b7ec 100644
---
a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/ImageExploratoryServiceImpl.java
+++
b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/ImageExploratoryServiceImpl.java
@@ -65,6 +65,7 @@ import java.time.LocalDateTime;
import java.util.*;
import java.util.function.Predicate;
import java.util.stream.Collectors;
+import java.util.stream.Stream;
import static com.epam.datalab.backendapi.domain.AuditActionEnum.CREATE;
import static com.epam.datalab.backendapi.domain.AuditResourceTypeEnum.IMAGE;
@@ -198,6 +199,7 @@ public class ImageExploratoryServiceImpl implements
ImageExploratoryService {
.stream()
.map(p -> {
List<ImageInfoRecord> images =
imageExploratoryDao.getImagesOfUser(user.getName(), p.getName());
+ images.forEach(img ->
img.setShared(isSharedImage(img.getFullName())));
images.addAll(getSharedImages(user, p.getName()));
return ProjectImagesInfo.builder()
.project(p.getName())
@@ -266,6 +268,7 @@ public class ImageExploratoryServiceImpl implements
ImageExploratoryService {
.filter(img -> !img.getUser().equals(userInfo.getName()))
.filter(img ->
UserRoles.checkAccess(userInfo, RoleType.IMAGE,
img.getFullName(), userInfo.getRoles()))
+ .peek(img -> img.setShared(true))
.collect(Collectors.toList());
log.info("Shared with user {} images : {}", userInfo.getName(),
sharedImages);
return sharedImages;
@@ -277,6 +280,7 @@ public class ImageExploratoryServiceImpl implements
ImageExploratoryService {
.filter(img -> !img.getUser().equals(userInfo.getName()))
.filter(img -> img.getDockerImage().equals(dockerImage) &&
img.getProject().equals(project) && img.getEndpoint().equals(endpoint))
.filter(img -> UserRoles.checkAccess(userInfo, RoleType.IMAGE,
img.getFullName(), userInfo.getRoles()))
+ .peek(img -> img.setShared(true))
.collect(Collectors.toList());
log.info("Found shared with user {} images {}", userInfo.getName(),
sharedImages);
return sharedImages;
@@ -288,8 +292,19 @@ public class ImageExploratoryServiceImpl implements
ImageExploratoryService {
.filter(img -> !img.getUser().equals(userInfo.getName()))
.filter(img -> img.getProject().equals(project) )
.filter(img -> UserRoles.checkAccess(userInfo, RoleType.IMAGE,
img.getFullName(), userInfo.getRoles()))
+ .peek(img -> img.setShared(true))
.collect(Collectors.toList());
log.info("Found shared with user {} images {}", userInfo.getName(),
sharedImages);
return sharedImages;
}
+
+ private boolean isSharedImage(String imageFullName){
+ String anyUser = "$anyuser";
+ List<UserRoleDTO> imageRoles = userRoleDAO.findAll().stream()
+ .filter(r -> r.getImages().contains(imageFullName))
+ .filter( r -> (r.getGroups().contains(anyUser) &&
r.getGroups().size() >= 2)
+ || (!r.getGroups().contains(anyUser) &&
!r.getGroups().isEmpty()))
+ .collect(Collectors.toList());
+ return !imageRoles.isEmpty();
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]