You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@datalab.apache.org by yk...@apache.org on 2021/10/19 12:58:31 UTC
[incubator-datalab] 02/02: [DATALAB-2544] -- * denied access for
users with "auto" in username * fixed bucket access.
This is an automated email from the ASF dual-hosted git repository.
ykinash pushed a commit to branch DATALAB-2544
in repository https://gitbox.apache.org/repos/asf/incubator-datalab.git
commit 30520309134d93354a05e0a7da5cb2e56655ed25
Author: KinashYurii <ur...@gmail.com>
AuthorDate: Tue Oct 19 15:58:00 2021 +0300
[DATALAB-2544] --
* denied access for users with "auto" in username
* fixed bucket access.
---
.../main/java/com/epam/datalab/dto/aws/edge/EdgeInfoAws.java | 7 +++----
.../java/com/epam/datalab/dto/azure/edge/EdgeInfoAzure.java | 7 +++----
.../main/java/com/epam/datalab/dto/base/edge/EdgeInfo.java | 12 ++++++++++++
.../main/java/com/epam/datalab/dto/gcp/edge/EdgeInfoGcp.java | 7 +++----
.../schedulers/CheckInfrastructureStatusScheduler.java | 12 +++++++++++-
.../epam/datalab/backendapi/service/KeycloakServiceImpl.java | 4 ----
.../service/impl/InfrastructureInfoServiceImpl.java | 1 +
7 files changed, 33 insertions(+), 17 deletions(-)
diff --git a/services/datalab-model/src/main/java/com/epam/datalab/dto/aws/edge/EdgeInfoAws.java b/services/datalab-model/src/main/java/com/epam/datalab/dto/aws/edge/EdgeInfoAws.java
index 813ad11..b117bb1 100644
--- a/services/datalab-model/src/main/java/com/epam/datalab/dto/aws/edge/EdgeInfoAws.java
+++ b/services/datalab-model/src/main/java/com/epam/datalab/dto/aws/edge/EdgeInfoAws.java
@@ -22,16 +22,15 @@ package com.epam.datalab.dto.aws.edge;
import com.epam.datalab.dto.base.edge.EdgeInfo;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
-import lombok.EqualsAndHashCode;
-import lombok.Getter;
-import lombok.Setter;
-import lombok.ToString;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import lombok.*;
@Getter
@Setter
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@JsonIgnoreProperties(ignoreUnknown = true)
+//@JsonTypeName("aws")
public class EdgeInfoAws extends EdgeInfo {
@JsonProperty("user_own_bicket_name")
private String userOwnBucketName;
diff --git a/services/datalab-model/src/main/java/com/epam/datalab/dto/azure/edge/EdgeInfoAzure.java b/services/datalab-model/src/main/java/com/epam/datalab/dto/azure/edge/EdgeInfoAzure.java
index c5bba7e..fe5ea88 100644
--- a/services/datalab-model/src/main/java/com/epam/datalab/dto/azure/edge/EdgeInfoAzure.java
+++ b/services/datalab-model/src/main/java/com/epam/datalab/dto/azure/edge/EdgeInfoAzure.java
@@ -22,16 +22,15 @@ package com.epam.datalab.dto.azure.edge;
import com.epam.datalab.dto.base.edge.EdgeInfo;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
-import lombok.EqualsAndHashCode;
-import lombok.Getter;
-import lombok.Setter;
-import lombok.ToString;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import lombok.*;
@Getter
@Setter
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@JsonIgnoreProperties(ignoreUnknown = true)
+//@JsonTypeName("azure")
public class EdgeInfoAzure extends EdgeInfo {
@JsonProperty("user_storage_account_name")
private String userStorageAccountName;
diff --git a/services/datalab-model/src/main/java/com/epam/datalab/dto/base/edge/EdgeInfo.java b/services/datalab-model/src/main/java/com/epam/datalab/dto/base/edge/EdgeInfo.java
index 46223a5..a7f1856 100644
--- a/services/datalab-model/src/main/java/com/epam/datalab/dto/base/edge/EdgeInfo.java
+++ b/services/datalab-model/src/main/java/com/epam/datalab/dto/base/edge/EdgeInfo.java
@@ -19,6 +19,8 @@
package com.epam.datalab.dto.base.edge;
+import com.epam.datalab.dto.aws.edge.EdgeInfoAws;
+import com.epam.datalab.dto.azure.edge.EdgeInfoAzure;
import com.epam.datalab.dto.gcp.edge.EdgeInfoGcp;
import com.fasterxml.jackson.annotation.*;
import lombok.Data;
@@ -27,6 +29,16 @@ import java.util.List;
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
+@JsonTypeInfo(
+ use = JsonTypeInfo.Id.CLASS,
+ include = JsonTypeInfo.As.PROPERTY,
+ property = "@class"
+)
+//@JsonSubTypes({
+// @JsonSubTypes.Type(value = EdgeInfoAws.class, name = "aws"),
+// @JsonSubTypes.Type(value = EdgeInfoAzure.class, name = "azure"),
+// @JsonSubTypes.Type(value = EdgeInfoGcp.class, name = "gcp")
+//})
public class EdgeInfo {
@JsonProperty("_id")
@JsonInclude(JsonInclude.Include.NON_EMPTY)
diff --git a/services/datalab-model/src/main/java/com/epam/datalab/dto/gcp/edge/EdgeInfoGcp.java b/services/datalab-model/src/main/java/com/epam/datalab/dto/gcp/edge/EdgeInfoGcp.java
index 490ce54..ed2789d 100644
--- a/services/datalab-model/src/main/java/com/epam/datalab/dto/gcp/edge/EdgeInfoGcp.java
+++ b/services/datalab-model/src/main/java/com/epam/datalab/dto/gcp/edge/EdgeInfoGcp.java
@@ -22,16 +22,15 @@ package com.epam.datalab.dto.gcp.edge;
import com.epam.datalab.dto.base.edge.EdgeInfo;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
-import lombok.EqualsAndHashCode;
-import lombok.Getter;
-import lombok.Setter;
-import lombok.ToString;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import lombok.*;
@Getter
@Setter
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@JsonIgnoreProperties(ignoreUnknown = true)
+//@JsonTypeName("gcp")
public class EdgeInfoGcp extends EdgeInfo {
@JsonProperty("user_own_bucket_name")
private String userOwnBucketName;
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/CheckInfrastructureStatusScheduler.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/CheckInfrastructureStatusScheduler.java
index ab5f7e0..00162f6 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/CheckInfrastructureStatusScheduler.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/schedulers/CheckInfrastructureStatusScheduler.java
@@ -32,6 +32,7 @@ import com.epam.datalab.backendapi.service.SecurityService;
import com.epam.datalab.dto.UserInstanceDTO;
import com.epam.datalab.dto.UserInstanceStatus;
import com.epam.datalab.dto.base.DataEngineType;
+import com.epam.datalab.dto.computational.UserComputationalResource;
import com.epam.datalab.dto.status.EnvResource;
import com.epam.datalab.model.ResourceType;
import com.google.inject.Inject;
@@ -50,13 +51,15 @@ import static com.epam.datalab.dto.UserInstanceStatus.*;
public class CheckInfrastructureStatusScheduler implements Job {
private static final List<UserInstanceStatus> statusesToCheck =
- Arrays.asList(RUNNING, STOPPING, RECONFIGURING, STOPPED, TERMINATING, TERMINATED);
+ Arrays.asList(CREATING, RUNNING, STOPPING, RECONFIGURING, STOPPED, TERMINATING, TERMINATED);
private final InfrastructureInfoService infrastructureInfoService;
private final SecurityService securityService;
private final EndpointService endpointService;
private final ExploratoryDAO exploratoryDAO;
private final ProjectService projectService;
+ private static final String AWS_EMR_CLUSTER = "AWS EMR cluster";
+
@Inject
public CheckInfrastructureStatusScheduler(InfrastructureInfoService infrastructureInfoService, SecurityService securityService,
@@ -107,6 +110,7 @@ public class CheckInfrastructureStatusScheduler implements Job {
.stream()
.filter(c -> DataEngineType.SPARK_STANDALONE == DataEngineType.fromDockerImageName(c.getImageName()))
.filter(c -> statusesToCheck.contains(UserInstanceStatus.of(c.getStatus())))
+ .filter(c -> c.getComputationalId() != null && c.getInstanceId() != null)
.map(r -> new EnvResource()
.withId(r.getInstanceId())
.withName(r.getComputationalName())
@@ -131,6 +135,8 @@ public class CheckInfrastructureStatusScheduler implements Job {
return userInstanceDTO.getResources().stream()
.filter(c -> DataEngineType.CLOUD_SERVICE == DataEngineType.fromDockerImageName(c.getImageName()))
.filter(c -> statusesToCheck.contains(UserInstanceStatus.of(c.getStatus())))
+ .filter(c -> c.getComputationalId() != null && c.getInstanceId() != null)
+ .filter(this::noEmrCreating)
.map(r -> new EnvResource()
.withId(r.getInstanceId())
.withName(r.getComputationalName())
@@ -141,6 +147,10 @@ public class CheckInfrastructureStatusScheduler implements Job {
.collect(Collectors.toList());
}
+ private boolean noEmrCreating(UserComputationalResource c) {
+ return !c.getStatus().equals(CREATING.name()) && !c.getTemplateName().contains(AWS_EMR_CLUSTER);
+ }
+
private List<EnvResource> getEdgeInstances(String endpoint) {
return projectService.getProjectsByEndpoint(endpoint)
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/KeycloakServiceImpl.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/KeycloakServiceImpl.java
index 518e14e..f418e65 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/KeycloakServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/KeycloakServiceImpl.java
@@ -80,14 +80,10 @@ public class KeycloakServiceImpl implements KeycloakService {
}
private AccessTokenResponse requestToken(Form requestForm) {
- log.info("TEST LOG!!!: access token form : {}", requestForm);
-
final String credentials = Base64.encodeAsString(String.join(":", conf.getResource(),
String.valueOf(conf.getCredentials().get("secret"))));
String url = conf.getAuthServerUrl() + String.format(URI, conf.getRealm());
String header = "Basic " + credentials;
- log.info("TEST LOG!!!: post with: url: {}, cred: {}, header: {} : {}", url, credentials, HttpHeaders.AUTHORIZATION, header);
-
final Response response =
httpClient.target(url)
.request()
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/InfrastructureInfoServiceImpl.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/InfrastructureInfoServiceImpl.java
index fe2f340..5ed48f6 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/InfrastructureInfoServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/InfrastructureInfoServiceImpl.java
@@ -191,6 +191,7 @@ public class InfrastructureInfoServiceImpl implements InfrastructureInfoService
shared.put("status", endpointDTO.getStatus().toString());
shared.put("edge_node_ip", edge.getPublicIp());
+
if (edge instanceof EdgeInfoAws) {
EdgeInfoAws edgeInfoAws = (EdgeInfoAws) edge;
shared.put("user_own_bicket_name", edgeInfoAws.getUserOwnBucketName());
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datalab.apache.org
For additional commands, e-mail: commits-help@datalab.apache.org