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/01/28 14:24:19 UTC
[incubator-dlab] branch DLAB-1357 updated: Added
start/stop/terminate features
This is an automated email from the ASF dual-hosted git repository.
ofuks pushed a commit to branch DLAB-1357
in repository https://gitbox.apache.org/repos/asf/incubator-dlab.git
The following commit(s) were added to refs/heads/DLAB-1357 by this push:
new acdf862 Added start/stop/terminate features
acdf862 is described below
commit acdf86222995be6679c441b7279548318e33bef2
Author: Oleh Fuks <ol...@gmail.com>
AuthorDate: Tue Jan 28 16:23:56 2020 +0200
Added start/stop/terminate features
---
.../com/epam/dlab/dto/base/odahu/OdahuResult.java | 1 -
.../com/epam/dlab/dto/odahu/ActionOdahuDTO.java} | 18 +++---
.../response/handlers/OdahuCallbackHandler.java | 7 ++-
.../dlab/backendapi/resources/OdahuResource.java | 23 ++++++-
.../epam/dlab/backendapi/service/OdahuService.java | 7 +++
.../backendapi/service/impl/OdahuServiceImpl.java | 19 ++++++
.../resources/mock_response/gcp/odahu_start.json | 9 +++
.../resources/mock_response/gcp/odahu_stop.json | 9 +++
.../mock_response/gcp/odahu_terminate.json | 9 +++
.../{CreateOdahuDTO.java => OdahuActionDTO.java} | 2 +-
.../dlab/backendapi/resources/OdahuResource.java | 37 +++++++++--
.../epam/dlab/backendapi/service/OdahuService.java | 10 ++-
.../backendapi/service/impl/OdahuServiceImpl.java | 73 ++++++++++++++++++----
.../epam/dlab/backendapi/util/RequestBuilder.java | 15 ++++-
14 files changed, 203 insertions(+), 36 deletions(-)
diff --git a/services/dlab-model/src/main/java/com/epam/dlab/dto/base/odahu/OdahuResult.java b/services/dlab-model/src/main/java/com/epam/dlab/dto/base/odahu/OdahuResult.java
index 2991392..3398101 100644
--- a/services/dlab-model/src/main/java/com/epam/dlab/dto/base/odahu/OdahuResult.java
+++ b/services/dlab-model/src/main/java/com/epam/dlab/dto/base/odahu/OdahuResult.java
@@ -23,7 +23,6 @@ import com.epam.dlab.dto.ResourceURL;
import com.epam.dlab.dto.StatusBaseDTO;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
-import lombok.Builder;
import lombok.Data;
import java.util.List;
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/CreateOdahuDTO.java b/services/dlab-model/src/main/java/com/epam/dlab/dto/odahu/ActionOdahuDTO.java
similarity index 73%
copy from services/self-service/src/main/java/com/epam/dlab/backendapi/domain/CreateOdahuDTO.java
copy to services/dlab-model/src/main/java/com/epam/dlab/dto/odahu/ActionOdahuDTO.java
index 4d5d1ed..bf9bf1e 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/CreateOdahuDTO.java
+++ b/services/dlab-model/src/main/java/com/epam/dlab/dto/odahu/ActionOdahuDTO.java
@@ -17,20 +17,20 @@
* under the License.
*/
-package com.epam.dlab.backendapi.domain;
+package com.epam.dlab.dto.odahu;
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.epam.dlab.dto.ResourceBaseDTO;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Builder;
import lombok.Data;
-import javax.validation.constraints.NotNull;
-
@Data
-@JsonIgnoreProperties(ignoreUnknown = true)
-public class CreateOdahuDTO {
- @NotNull
+@Builder
+public class ActionOdahuDTO extends ResourceBaseDTO<ActionOdahuDTO> {
+ @JsonProperty("odahu_cluster_name")
private final String name;
- @NotNull
+ @JsonProperty("project_name")
private final String project;
- @NotNull
+ @JsonProperty("endpoint_name")
private final String endpoint;
}
diff --git a/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/core/response/handlers/OdahuCallbackHandler.java b/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/core/response/handlers/OdahuCallbackHandler.java
index d9027b1..4e4fd52 100644
--- a/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/core/response/handlers/OdahuCallbackHandler.java
+++ b/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/core/response/handlers/OdahuCallbackHandler.java
@@ -29,6 +29,7 @@ import lombok.extern.slf4j.Slf4j;
import java.io.IOException;
import java.util.List;
+import java.util.Objects;
@Slf4j
public class OdahuCallbackHandler extends ResourceCallbackHandler<OdahuResult> {
@@ -63,7 +64,7 @@ public class OdahuCallbackHandler extends ResourceCallbackHandler<OdahuResult> {
return result;
}
final JsonNode nodeUrl = resultNode.get(ODAHU_URLS_FIELD);
- List<ResourceURL> urls;
+ List<ResourceURL> urls = null;
if (nodeUrl != null) {
try {
urls = mapper.readValue(nodeUrl.toString(), new TypeReference<List<ResourceURL>>() {
@@ -75,6 +76,10 @@ public class OdahuCallbackHandler extends ResourceCallbackHandler<OdahuResult> {
}
}
+ if (getAction() == DockerAction.CREATE && Objects.isNull(urls)) {
+ log.warn("There are no odahu urls in response file while creating {}", result);
+ }
+
return result;
}
}
diff --git a/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/resources/OdahuResource.java b/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/resources/OdahuResource.java
index 8e701c3..7d0cb2a 100644
--- a/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/resources/OdahuResource.java
+++ b/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/resources/OdahuResource.java
@@ -21,6 +21,7 @@ package com.epam.dlab.backendapi.resources;
import com.epam.dlab.auth.UserInfo;
import com.epam.dlab.backendapi.service.OdahuService;
+import com.epam.dlab.dto.odahu.ActionOdahuDTO;
import com.epam.dlab.dto.odahu.OdahuCreateDTO;
import com.google.inject.Inject;
import io.dropwizard.auth.Auth;
@@ -33,6 +34,8 @@ import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
@Path("infrastructure/odahu")
+@Consumes(MediaType.APPLICATION_JSON)
+@Produces(MediaType.APPLICATION_JSON)
public class OdahuResource {
private final OdahuService odahuService;
@@ -43,9 +46,25 @@ public class OdahuResource {
}
@POST
- @Consumes(MediaType.APPLICATION_JSON)
- @Produces(MediaType.APPLICATION_JSON)
public Response createProject(@Auth UserInfo userInfo, OdahuCreateDTO dto) {
return Response.ok(odahuService.create(userInfo, dto)).build();
}
+
+ @Path("start")
+ @POST
+ public Response startProject(@Auth UserInfo userInfo, ActionOdahuDTO dto) {
+ return Response.ok(odahuService.start(userInfo, dto)).build();
+ }
+
+ @Path("stop")
+ @POST
+ public Response stopProject(@Auth UserInfo userInfo, ActionOdahuDTO dto) {
+ return Response.ok(odahuService.stop(userInfo, dto)).build();
+ }
+
+ @Path("terminate")
+ @POST
+ public Response terminateProject(@Auth UserInfo userInfo, ActionOdahuDTO dto) {
+ return Response.ok(odahuService.terminate(userInfo, dto)).build();
+ }
}
diff --git a/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/service/OdahuService.java b/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/service/OdahuService.java
index f74d17c..6205301 100644
--- a/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/service/OdahuService.java
+++ b/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/service/OdahuService.java
@@ -20,8 +20,15 @@
package com.epam.dlab.backendapi.service;
import com.epam.dlab.auth.UserInfo;
+import com.epam.dlab.dto.odahu.ActionOdahuDTO;
import com.epam.dlab.dto.odahu.OdahuCreateDTO;
public interface OdahuService {
String create(UserInfo userInfo, OdahuCreateDTO odahuCreateDTO);
+
+ String start(UserInfo userInfo, ActionOdahuDTO dto);
+
+ String stop(UserInfo userInfo, ActionOdahuDTO dto);
+
+ String terminate(UserInfo userInfo, ActionOdahuDTO dto);
}
diff --git a/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/service/impl/OdahuServiceImpl.java b/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/service/impl/OdahuServiceImpl.java
index 5b58e77..97c24df 100644
--- a/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/service/impl/OdahuServiceImpl.java
+++ b/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/service/impl/OdahuServiceImpl.java
@@ -30,6 +30,7 @@ import com.epam.dlab.backendapi.core.response.folderlistener.FolderListenerExecu
import com.epam.dlab.backendapi.core.response.handlers.OdahuCallbackHandler;
import com.epam.dlab.backendapi.service.OdahuService;
import com.epam.dlab.dto.ResourceBaseDTO;
+import com.epam.dlab.dto.odahu.ActionOdahuDTO;
import com.epam.dlab.dto.odahu.OdahuCreateDTO;
import com.epam.dlab.rest.client.RESTService;
import com.fasterxml.jackson.core.JsonProcessingException;
@@ -64,6 +65,24 @@ public class OdahuServiceImpl implements OdahuService {
dto.getProject(), dto.getEndpoint());
}
+ @Override
+ public String start(UserInfo userInfo, ActionOdahuDTO dto) {
+ return executeDocker(userInfo, dto, DockerAction.START, ODAHU_RESOURCE_TYPE, ODAHU_IMAGE, dto.getName(),
+ dto.getProject(), dto.getEndpoint());
+ }
+
+ @Override
+ public String stop(UserInfo userInfo, ActionOdahuDTO dto) {
+ return executeDocker(userInfo, dto, DockerAction.STOP, ODAHU_RESOURCE_TYPE, ODAHU_IMAGE, dto.getName(),
+ dto.getProject(), dto.getEndpoint());
+ }
+
+ @Override
+ public String terminate(UserInfo userInfo, ActionOdahuDTO dto) {
+ return executeDocker(userInfo, dto, DockerAction.TERMINATE, ODAHU_RESOURCE_TYPE, ODAHU_IMAGE, dto.getName(),
+ dto.getProject(), dto.getEndpoint());
+ }
+
private String executeDocker(UserInfo userInfo, ResourceBaseDTO dto, DockerAction action, String resourceType,
String image, String name, String project, String endpoint) {
diff --git a/services/provisioning-service/src/main/resources/mock_response/gcp/odahu_start.json b/services/provisioning-service/src/main/resources/mock_response/gcp/odahu_start.json
new file mode 100644
index 0000000..99433bd
--- /dev/null
+++ b/services/provisioning-service/src/main/resources/mock_response/gcp/odahu_start.json
@@ -0,0 +1,9 @@
+{
+ "status": "ok",
+ "response": {
+ "result": {
+ },
+ "log": "/var/log/dlab/odahu/odahu_${EDGE_USER_NAME}_${REQUEST_ID}.log"
+ },
+ "request_id": "${REQUEST_ID}"
+}
diff --git a/services/provisioning-service/src/main/resources/mock_response/gcp/odahu_stop.json b/services/provisioning-service/src/main/resources/mock_response/gcp/odahu_stop.json
new file mode 100644
index 0000000..99433bd
--- /dev/null
+++ b/services/provisioning-service/src/main/resources/mock_response/gcp/odahu_stop.json
@@ -0,0 +1,9 @@
+{
+ "status": "ok",
+ "response": {
+ "result": {
+ },
+ "log": "/var/log/dlab/odahu/odahu_${EDGE_USER_NAME}_${REQUEST_ID}.log"
+ },
+ "request_id": "${REQUEST_ID}"
+}
diff --git a/services/provisioning-service/src/main/resources/mock_response/gcp/odahu_terminate.json b/services/provisioning-service/src/main/resources/mock_response/gcp/odahu_terminate.json
new file mode 100644
index 0000000..99433bd
--- /dev/null
+++ b/services/provisioning-service/src/main/resources/mock_response/gcp/odahu_terminate.json
@@ -0,0 +1,9 @@
+{
+ "status": "ok",
+ "response": {
+ "result": {
+ },
+ "log": "/var/log/dlab/odahu/odahu_${EDGE_USER_NAME}_${REQUEST_ID}.log"
+ },
+ "request_id": "${REQUEST_ID}"
+}
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/CreateOdahuDTO.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/OdahuActionDTO.java
similarity index 97%
rename from services/self-service/src/main/java/com/epam/dlab/backendapi/domain/CreateOdahuDTO.java
rename to services/self-service/src/main/java/com/epam/dlab/backendapi/domain/OdahuActionDTO.java
index 4d5d1ed..fa86750 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/CreateOdahuDTO.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/OdahuActionDTO.java
@@ -26,7 +26,7 @@ import javax.validation.constraints.NotNull;
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
-public class CreateOdahuDTO {
+public class OdahuActionDTO {
@NotNull
private final String name;
@NotNull
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/OdahuResource.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/OdahuResource.java
index ce5d829..38835fc 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/OdahuResource.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/OdahuResource.java
@@ -20,7 +20,7 @@
package com.epam.dlab.backendapi.resources;
import com.epam.dlab.auth.UserInfo;
-import com.epam.dlab.backendapi.domain.CreateOdahuDTO;
+import com.epam.dlab.backendapi.domain.OdahuActionDTO;
import com.epam.dlab.backendapi.service.OdahuService;
import com.google.inject.Inject;
import io.dropwizard.auth.Auth;
@@ -28,6 +28,7 @@ import io.swagger.v3.oas.annotations.Parameter;
import javax.validation.Valid;
import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
@@ -49,18 +50,42 @@ public class OdahuResource {
this.odahuService = odahuService;
}
+ @GET
+ @Produces(MediaType.APPLICATION_JSON)
+ public Response getOdahuClusters(@Parameter(hidden = true) @Auth UserInfo userInfo) {
+ return Response.ok(odahuService.findOdahu()).build();
+ }
+
@POST
public Response createOdahuCluster(@Parameter(hidden = true) @Auth UserInfo userInfo,
@Parameter(hidden = true) @Context UriInfo uriInfo,
- @Valid CreateOdahuDTO createOdahuDTO) {
+ @Valid OdahuActionDTO createOdahuDTO) {
odahuService.create(createOdahuDTO.getProject(), createOdahuDTO, userInfo);
final URI uri = uriInfo.getRequestUriBuilder().path(createOdahuDTO.getName()).build();
return Response.created(uri).build();
}
- @GET
- @Produces(MediaType.APPLICATION_JSON)
- public Response getOdahuClusters(@Parameter(hidden = true) @Auth UserInfo userInfo) {
- return Response.ok(odahuService.findOdahu()).build();
+ @Path("start")
+ @POST
+ public Response startOdahuCluster(@Parameter(hidden = true) @Auth UserInfo userInfo,
+ @Valid OdahuActionDTO startOdahuDTO) {
+ odahuService.start(startOdahuDTO.getProject(), startOdahuDTO, userInfo);
+ return Response.accepted().build();
+ }
+
+ @Path("stop")
+ @POST
+ public Response stopOdahuCluster(@Parameter(hidden = true) @Auth UserInfo userInfo,
+ @Valid OdahuActionDTO stopOdahuDTO) {
+ odahuService.stop(stopOdahuDTO.getProject(), stopOdahuDTO, userInfo);
+ return Response.accepted().build();
+ }
+
+ @Path("terminate")
+ @DELETE
+ public Response terminateOdahuCluster(@Parameter(hidden = true) @Auth UserInfo userInfo,
+ @Valid OdahuActionDTO terminateOdahuDTO) {
+ odahuService.terminate(terminateOdahuDTO.getProject(), terminateOdahuDTO, userInfo);
+ return Response.accepted().build();
}
}
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/OdahuService.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/OdahuService.java
index dd72c13..4ad0d95 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/OdahuService.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/OdahuService.java
@@ -20,7 +20,7 @@
package com.epam.dlab.backendapi.service;
import com.epam.dlab.auth.UserInfo;
-import com.epam.dlab.backendapi.domain.CreateOdahuDTO;
+import com.epam.dlab.backendapi.domain.OdahuActionDTO;
import com.epam.dlab.backendapi.domain.OdahuDTO;
import com.epam.dlab.dto.UserInstanceStatus;
import com.epam.dlab.dto.base.odahu.OdahuResult;
@@ -30,7 +30,13 @@ import java.util.List;
public interface OdahuService {
List<OdahuDTO> findOdahu();
- void create(String project, CreateOdahuDTO createOdahuDTO, UserInfo userInfo);
+ void create(String project, OdahuActionDTO createOdahuDTO, UserInfo userInfo);
+
+ void start(String project, OdahuActionDTO startOdahuDTO, UserInfo userInfo);
+
+ void stop(String project, OdahuActionDTO stopOdahuDTO, UserInfo userInfo);
+
+ void terminate(String project, OdahuActionDTO terminateOdahuDTO, UserInfo userInfo);
void updateStatus(OdahuResult odahuResult, UserInstanceStatus status);
}
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/OdahuServiceImpl.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/OdahuServiceImpl.java
index 4123481..4d728b2 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/OdahuServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/OdahuServiceImpl.java
@@ -23,7 +23,7 @@ import com.epam.dlab.auth.UserInfo;
import com.epam.dlab.backendapi.annotation.BudgetLimited;
import com.epam.dlab.backendapi.annotation.Project;
import com.epam.dlab.backendapi.dao.OdahuDAO;
-import com.epam.dlab.backendapi.domain.CreateOdahuDTO;
+import com.epam.dlab.backendapi.domain.OdahuActionDTO;
import com.epam.dlab.backendapi.domain.OdahuDTO;
import com.epam.dlab.backendapi.domain.ProjectDTO;
import com.epam.dlab.backendapi.domain.RequestId;
@@ -38,13 +38,19 @@ import com.epam.dlab.exceptions.ResourceConflictException;
import com.epam.dlab.rest.client.RESTService;
import com.google.inject.Inject;
import com.google.inject.name.Named;
+import lombok.extern.slf4j.Slf4j;
import java.util.List;
+import java.util.Objects;
import java.util.Optional;
+@Slf4j
public class OdahuServiceImpl implements OdahuService {
private static final String CREATE_ODAHU_API = "infrastructure/odahu";
+ private static final String START_ODAHU_API = "infrastructure/odahu/start";
+ private static final String STOP_ODAHU_API = "infrastructure/odahu/stop";
+ private static final String TERMINATE_ODAHU_API = "infrastructure/odahu/terminate";
private final ProjectService projectService;
private final EndpointService endpointService;
@@ -73,7 +79,7 @@ public class OdahuServiceImpl implements OdahuService {
@BudgetLimited
@Override
- public void create(@Project String project, CreateOdahuDTO createOdahuDTO, UserInfo userInfo) {
+ public void create(@Project String project, OdahuActionDTO createOdahuDTO, UserInfo user) {
Optional<OdahuDTO> odahuDTO = odahuDAO.getByProjectEndpoint(createOdahuDTO.getProject(), createOdahuDTO.getEndpoint());
if (odahuDTO.isPresent()) {
throw new ResourceConflictException(String.format("Odahu cluster already exist in system for project %s " +
@@ -84,25 +90,68 @@ public class OdahuServiceImpl implements OdahuService {
createOdahuDTO.getEndpoint(), UserInstanceStatus.CREATING));
if (isAdded) {
- createOnCloud(userInfo, createOdahuDTO, projectDTO);
+ String url = null;
+ try {
+ url = endpointService.get(createOdahuDTO.getEndpoint()).getUrl() + CREATE_ODAHU_API;
+ String uuid =
+ provisioningService.post(url, user.getAccessToken(),
+ requestBuilder.newOdahuCreate(user, createOdahuDTO, projectDTO), String.class);
+ requestId.put(user.getName(), uuid);
+ } catch (Exception e) {
+ log.error("Can not perform {} due to: {}, {}", url, e.getMessage(), e);
+ odahuDAO.updateStatus(createOdahuDTO.getName(), createOdahuDTO.getProject(), createOdahuDTO.getEndpoint(),
+ UserInstanceStatus.FAILED);
+ }
}
}
+ @BudgetLimited
+ @Override
+ public void start(@Project String project, OdahuActionDTO startOdahuDTO, UserInfo user) {
+ ProjectDTO projectDTO = projectService.get(project);
+ odahuDAO.updateStatus(startOdahuDTO.getName(), startOdahuDTO.getProject(), startOdahuDTO.getEndpoint(),
+ UserInstanceStatus.STARTING);
+ actionOnCloud(user, startOdahuDTO, projectDTO, START_ODAHU_API);
+ }
+
+ @Override
+ public void stop(String project, OdahuActionDTO stopOdahuDTO, UserInfo user) {
+ ProjectDTO projectDTO = projectService.get(project);
+ odahuDAO.updateStatus(stopOdahuDTO.getName(), stopOdahuDTO.getProject(), stopOdahuDTO.getEndpoint(),
+ UserInstanceStatus.STOPPING);
+ actionOnCloud(user, stopOdahuDTO, projectDTO, STOP_ODAHU_API);
+ }
+
+ @Override
+ public void terminate(String project, OdahuActionDTO terminateOdahuDTO, UserInfo user) {
+ ProjectDTO projectDTO = projectService.get(project);
+ odahuDAO.updateStatus(terminateOdahuDTO.getName(), terminateOdahuDTO.getProject(), terminateOdahuDTO.getEndpoint(),
+ UserInstanceStatus.TERMINATING);
+ actionOnCloud(user, terminateOdahuDTO, projectDTO, TERMINATE_ODAHU_API);
+ }
+
@Override
public void updateStatus(OdahuResult result, UserInstanceStatus status) {
- if (result.getResourceUrls().isEmpty()) {
- odahuDAO.updateStatus(result.getName(), result.getProjectName(), result.getEndpointName(), status);
- } else {
+ if (Objects.nonNull(result.getResourceUrls()) && !result.getResourceUrls().isEmpty()) {
odahuDAO.updateStatusAndUrls(result.getName(), result.getProjectName(), result.getEndpointName(),
result.getResourceUrls(), status);
+ } else {
+ odahuDAO.updateStatus(result.getName(), result.getProjectName(), result.getEndpointName(), status);
}
}
- private void createOnCloud(UserInfo user, CreateOdahuDTO createOdahuDTO, ProjectDTO projectDTO) {
- String uuid =
- provisioningService.post(endpointService.get(createOdahuDTO.getEndpoint()).getUrl() + CREATE_ODAHU_API,
- user.getAccessToken(),
- requestBuilder.newOdahuCreate(user, createOdahuDTO, projectDTO), String.class);
- requestId.put(user.getName(), uuid);
+ private void actionOnCloud(UserInfo user, OdahuActionDTO odahuActionDTO, ProjectDTO projectDTO, String uri) {
+ String url = null;
+ try {
+ url = endpointService.get(odahuActionDTO.getEndpoint()).getUrl() + uri;
+ String uuid =
+ provisioningService.post(url, user.getAccessToken(),
+ requestBuilder.newOdahuAction(user, odahuActionDTO, projectDTO), String.class);
+ requestId.put(user.getName(), uuid);
+ } catch (Exception e) {
+ log.error("Can not perform {} due to: {}, {}", url, e.getMessage(), e);
+ odahuDAO.updateStatus(odahuActionDTO.getName(), odahuActionDTO.getProject(), odahuActionDTO.getEndpoint(),
+ UserInstanceStatus.FAILED);
+ }
}
}
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/util/RequestBuilder.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/util/RequestBuilder.java
index fd1a3f1..ea3c211 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/util/RequestBuilder.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/util/RequestBuilder.java
@@ -22,8 +22,8 @@ package com.epam.dlab.backendapi.util;
import com.epam.dlab.auth.UserInfo;
import com.epam.dlab.backendapi.conf.SelfServiceApplicationConfiguration;
import com.epam.dlab.backendapi.dao.SettingsDAO;
-import com.epam.dlab.backendapi.domain.CreateOdahuDTO;
import com.epam.dlab.backendapi.domain.ExploratoryLibCache;
+import com.epam.dlab.backendapi.domain.OdahuActionDTO;
import com.epam.dlab.backendapi.domain.ProjectDTO;
import com.epam.dlab.backendapi.resources.dto.BackupFormDTO;
import com.epam.dlab.backendapi.resources.dto.ComputationalCreateFormDTO;
@@ -78,6 +78,7 @@ import com.epam.dlab.dto.gcp.computational.SparkComputationalCreateGcp;
import com.epam.dlab.dto.gcp.edge.EdgeCreateGcp;
import com.epam.dlab.dto.gcp.exploratory.ExploratoryCreateGcp;
import com.epam.dlab.dto.gcp.keyload.UploadFileGcp;
+import com.epam.dlab.dto.odahu.ActionOdahuDTO;
import com.epam.dlab.dto.odahu.OdahuCreateDTO;
import com.epam.dlab.dto.project.ProjectActionDTO;
import com.epam.dlab.dto.project.ProjectCreateDTO;
@@ -662,7 +663,7 @@ public class RequestBuilder {
.withCloudSettings(cloudSettings(userInfo));
}
- public OdahuCreateDTO newOdahuCreate(UserInfo user, CreateOdahuDTO createOdahuDTO, ProjectDTO projectDTO) {
+ public OdahuCreateDTO newOdahuCreate(UserInfo user, OdahuActionDTO createOdahuDTO, ProjectDTO projectDTO) {
return OdahuCreateDTO.builder()
.name(createOdahuDTO.getName())
.project(projectDTO.getName())
@@ -673,6 +674,16 @@ public class RequestBuilder {
.withCloudSettings(cloudSettings(user));
}
+ public ActionOdahuDTO newOdahuAction(UserInfo user, OdahuActionDTO actionDTO, ProjectDTO projectDTO) {
+ return ActionOdahuDTO.builder()
+ .name(actionDTO.getName())
+ .project(projectDTO.getName())
+ .endpoint(actionDTO.getEndpoint())
+ .build()
+ .withEdgeUserName(getEdgeUserName(user))
+ .withCloudSettings(cloudSettings(user));
+ }
+
private CloudProvider cloudProvider() {
return configuration.getCloudProvider();
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@dlab.apache.org
For additional commands, e-mail: commits-help@dlab.apache.org