You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dlab.apache.org by of...@apache.org on 2020/03/25 12:37:54 UTC
[incubator-dlab] branch DLAB-1590 updated: Admin per project
This is an automated email from the ASF dual-hosted git repository.
ofuks pushed a commit to branch DLAB-1590
in repository https://gitbox.apache.org/repos/asf/incubator-dlab.git
The following commit(s) were added to refs/heads/DLAB-1590 by this push:
new 555a485 Admin per project
555a485 is described below
commit 555a485c934810173e0435396010e6169c8fae11
Author: Oleh Fuks <ol...@gmail.com>
AuthorDate: Wed Mar 25 14:37:23 2020 +0200
Admin per project
---
.../service/impl/EnvironmentServiceImpl.java | 28 +++++++++++++++-------
.../src/main/resources/mongo/aws/mongo_roles.json | 17 +++++++++++++
.../main/resources/mongo/azure/mongo_roles.json | 17 +++++++++++++
.../src/main/resources/mongo/gcp/mongo_roles.json | 1 +
4 files changed, 54 insertions(+), 9 deletions(-)
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/EnvironmentServiceImpl.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/EnvironmentServiceImpl.java
index 15607d3..0bab2d6 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/EnvironmentServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/EnvironmentServiceImpl.java
@@ -20,6 +20,9 @@
package com.epam.dlab.backendapi.service.impl;
import com.epam.dlab.auth.UserInfo;
+import com.epam.dlab.backendapi.annotation.Project;
+import com.epam.dlab.backendapi.annotation.ProjectAdmin;
+import com.epam.dlab.backendapi.annotation.User;
import com.epam.dlab.backendapi.dao.EnvDAO;
import com.epam.dlab.backendapi.dao.ExploratoryDAO;
import com.epam.dlab.backendapi.dao.UserSettingsDAO;
@@ -90,7 +93,7 @@ public class EnvironmentServiceImpl implements EnvironmentService {
public List<UserResourceInfo> getAllEnv(UserInfo user) {
log.debug("Getting all user's environment...");
List<UserInstanceDTO> expList = exploratoryDAO.getInstances();
- return projectService.getProjects(user)
+ return projectService.getProjects()
.stream()
.map(projectDTO -> getProjectEnv(projectDTO, expList))
.flatMap(Collection::stream)
@@ -135,24 +138,30 @@ public class EnvironmentServiceImpl implements EnvironmentService {
endpoint.getName(), project));
}
+ @ProjectAdmin
@Override
- public void stopExploratory(UserInfo userInfo, String user, String project, String exploratoryName) {
+ public void stopExploratory(@User UserInfo userInfo, String user, @Project String project, String exploratoryName) {
exploratoryService.stop(new UserInfo(user, userInfo.getAccessToken()), project, exploratoryName);
}
+ @ProjectAdmin
@Override
- public void stopComputational(UserInfo userInfo, String user, String project, String exploratoryName, String computationalName) {
+ public void stopComputational(@User UserInfo userInfo, String user, @Project String project, String exploratoryName,
+ String computationalName) {
computationalService.stopSparkCluster(new UserInfo(user, userInfo.getAccessToken()), project, exploratoryName,
computationalName);
}
+ @ProjectAdmin
@Override
- public void terminateExploratory(UserInfo userInfo, String user, String project, String exploratoryName) {
+ public void terminateExploratory(@User UserInfo userInfo, String user, @Project String project, String exploratoryName) {
exploratoryService.terminate(new UserInfo(user, userInfo.getAccessToken()), project, exploratoryName);
}
+ @ProjectAdmin
@Override
- public void terminateComputational(UserInfo userInfo, String user, String project, String exploratoryName, String computationalName) {
+ public void terminateComputational(@User UserInfo userInfo, String user, @Project String project,
+ String exploratoryName, String computationalName) {
computationalService.terminateComputational(new UserInfo(user, userInfo.getAccessToken()), project, exploratoryName,
computationalName);
}
@@ -180,8 +189,10 @@ public class EnvironmentServiceImpl implements EnvironmentService {
}
private List<UserResourceInfo> getProjectEnv(ProjectDTO projectDTO, List<UserInstanceDTO> allInstances) {
- final Stream<UserResourceInfo> userResources = allInstances.stream()
- .filter(instance -> instance.getProject().equals(projectDTO.getName())).map(this::toUserResourceInfo);
+ final Stream<UserResourceInfo> userResources = allInstances
+ .stream()
+ .filter(instance -> instance.getProject().equals(projectDTO.getName()))
+ .map(this::toUserResourceInfo);
if (projectDTO.getEndpoints() != null) {
final Stream<UserResourceInfo> edges = projectDTO.getEndpoints()
.stream()
@@ -189,8 +200,7 @@ public class EnvironmentServiceImpl implements EnvironmentService {
.withResourceStatus(e.getStatus().toString())
.withProject(projectDTO.getName())
.withIp(e.getEdgeInfo() != null ? e.getEdgeInfo().getPublicIp() : null));
- return Stream.concat(edges, userResources)
- .collect(toList());
+ return Stream.concat(edges, userResources).collect(toList());
} else {
return userResources.collect(toList());
}
diff --git a/services/self-service/src/main/resources/mongo/aws/mongo_roles.json b/services/self-service/src/main/resources/mongo/aws/mongo_roles.json
index 9998d84..e7649e6 100644
--- a/services/self-service/src/main/resources/mongo/aws/mongo_roles.json
+++ b/services/self-service/src/main/resources/mongo/aws/mongo_roles.json
@@ -324,6 +324,23 @@
]
},
{
+ "_id": "projectAdmin",
+ "description": "Allow to execute administration operation per project",
+ "type": "ADMINISTRATION",
+ "cloud": "AWS",
+ "pages": [
+ "environment/*",
+ "/roleManagement",
+ "/api/settings",
+ "/user/settings",
+ "/api/project",
+ "/api/endpoint"
+ ],
+ "groups": [
+ "$anyuser"
+ ]
+ },
+ {
"_id": "admin",
"description": "Allow to execute administration operation",
"type": "ADMINISTRATION",
diff --git a/services/self-service/src/main/resources/mongo/azure/mongo_roles.json b/services/self-service/src/main/resources/mongo/azure/mongo_roles.json
index 113a705..bb0c7d1 100644
--- a/services/self-service/src/main/resources/mongo/azure/mongo_roles.json
+++ b/services/self-service/src/main/resources/mongo/azure/mongo_roles.json
@@ -264,6 +264,23 @@
]
},
{
+ "_id": "projectAdmin",
+ "description": "Allow to execute administration operation per project",
+ "type": "ADMINISTRATION",
+ "cloud": "AZURE",
+ "pages": [
+ "environment/*",
+ "/roleManagement",
+ "/api/settings",
+ "/user/settings",
+ "/api/project",
+ "/api/endpoint"
+ ],
+ "groups": [
+ "$anyuser"
+ ]
+ },
+ {
"_id": "admin",
"description": "Allow to execute administration operation",
"type": "ADMINISTRATION",
diff --git a/services/self-service/src/main/resources/mongo/gcp/mongo_roles.json b/services/self-service/src/main/resources/mongo/gcp/mongo_roles.json
index 8f4ec0b..3f7327e 100644
--- a/services/self-service/src/main/resources/mongo/gcp/mongo_roles.json
+++ b/services/self-service/src/main/resources/mongo/gcp/mongo_roles.json
@@ -303,6 +303,7 @@
"_id": "projectAdmin",
"description": "Allow to execute administration operation per project",
"type": "ADMINISTRATION",
+ "cloud": "GCP",
"pages": [
"environment/*",
"/roleManagement",
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@dlab.apache.org
For additional commands, e-mail: commits-help@dlab.apache.org