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/02/03 12:03:37 UTC

[incubator-dlab] branch DLAB-1357 updated: Added tags functionality for Odahu

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 16e0e1a  Added tags functionality for Odahu
16e0e1a is described below

commit 16e0e1ac04310454ffb67bce4161820b62d3b1d1
Author: Oleh Fuks <ol...@gmail.com>
AuthorDate: Mon Feb 3 14:03:20 2020 +0200

    Added tags functionality for Odahu
---
 .../{OdahuCreateDTO.java => CreateOdahuDTO.java}   |  2 +-
 .../dlab/backendapi/resources/OdahuResource.java   |  4 ++--
 .../epam/dlab/backendapi/service/OdahuService.java |  4 ++--
 .../backendapi/service/impl/OdahuServiceImpl.java  |  4 ++--
 .../domain/{OdahuDTO.java => OdahuCreateDTO.java}  | 16 ++++++-------
 .../com/epam/dlab/backendapi/domain/OdahuDTO.java  |  2 ++
 .../dlab/backendapi/resources/OdahuResource.java   |  7 +++---
 .../epam/dlab/backendapi/service/OdahuService.java |  4 ++--
 .../backendapi/service/impl/OdahuServiceImpl.java  | 28 +++++++++++++++-------
 .../epam/dlab/backendapi/util/RequestBuilder.java  | 11 +++++----
 10 files changed, 48 insertions(+), 34 deletions(-)

diff --git a/services/dlab-model/src/main/java/com/epam/dlab/dto/odahu/OdahuCreateDTO.java b/services/dlab-model/src/main/java/com/epam/dlab/dto/odahu/CreateOdahuDTO.java
similarity index 95%
rename from services/dlab-model/src/main/java/com/epam/dlab/dto/odahu/OdahuCreateDTO.java
rename to services/dlab-model/src/main/java/com/epam/dlab/dto/odahu/CreateOdahuDTO.java
index 9fae29a..3fea2d4 100644
--- a/services/dlab-model/src/main/java/com/epam/dlab/dto/odahu/OdahuCreateDTO.java
+++ b/services/dlab-model/src/main/java/com/epam/dlab/dto/odahu/CreateOdahuDTO.java
@@ -26,7 +26,7 @@ import lombok.Data;
 
 @Data
 @Builder
-public class OdahuCreateDTO extends ResourceBaseDTO<OdahuCreateDTO> {
+public class CreateOdahuDTO extends ResourceBaseDTO<CreateOdahuDTO> {
     @JsonProperty("odahu_cluster_name")
     private final String name;
     @JsonProperty("project_name")
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 7d0cb2a..670a653 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
@@ -22,7 +22,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.epam.dlab.dto.odahu.CreateOdahuDTO;
 import com.google.inject.Inject;
 import io.dropwizard.auth.Auth;
 
@@ -46,7 +46,7 @@ public class OdahuResource {
     }
 
     @POST
-    public Response createProject(@Auth UserInfo userInfo, OdahuCreateDTO dto) {
+    public Response createProject(@Auth UserInfo userInfo, CreateOdahuDTO dto) {
         return Response.ok(odahuService.create(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 6205301..286e2be 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
@@ -21,10 +21,10 @@ 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;
+import com.epam.dlab.dto.odahu.CreateOdahuDTO;
 
 public interface OdahuService {
-    String create(UserInfo userInfo, OdahuCreateDTO odahuCreateDTO);
+    String create(UserInfo userInfo, CreateOdahuDTO odahuCreateDTO);
 
     String start(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 97c24df..5d032e0 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
@@ -31,7 +31,7 @@ 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.dto.odahu.CreateOdahuDTO;
 import com.epam.dlab.rest.client.RESTService;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.google.inject.Inject;
@@ -60,7 +60,7 @@ public class OdahuServiceImpl implements OdahuService {
     }
 
     @Override
-    public String create(UserInfo userInfo, OdahuCreateDTO dto) {
+    public String create(UserInfo userInfo, CreateOdahuDTO dto) {
         return executeDocker(userInfo, dto, DockerAction.CREATE, ODAHU_RESOURCE_TYPE, ODAHU_IMAGE, dto.getName(),
                 dto.getProject(), dto.getEndpoint());
     }
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/OdahuDTO.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/OdahuCreateDTO.java
similarity index 80%
copy from services/self-service/src/main/java/com/epam/dlab/backendapi/domain/OdahuDTO.java
copy to services/self-service/src/main/java/com/epam/dlab/backendapi/domain/OdahuCreateDTO.java
index 7747b69..6c6cb27 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/OdahuDTO.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/OdahuCreateDTO.java
@@ -19,21 +19,21 @@
 
 package com.epam.dlab.backendapi.domain;
 
-import com.epam.dlab.dto.ResourceURL;
-import com.epam.dlab.dto.UserInstanceStatus;
 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.Data;
 
-import java.util.ArrayList;
-import java.util.List;
-
+import javax.validation.constraints.NotNull;
 
 @Data
 @JsonIgnoreProperties(ignoreUnknown = true)
-public class OdahuDTO {
+public class OdahuCreateDTO {
+    @NotNull
     private final String name;
+    @NotNull
     private final String project;
+    @NotNull
     private final String endpoint;
-    private final List<ResourceURL> urls = new ArrayList<>();
-    private final UserInstanceStatus status;
+    @JsonProperty("custom_tag")
+    private final String customTag;
 }
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/OdahuDTO.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/OdahuDTO.java
index 7747b69..2df13ac 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/OdahuDTO.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/OdahuDTO.java
@@ -26,6 +26,7 @@ import lombok.Data;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 
 @Data
@@ -36,4 +37,5 @@ public class OdahuDTO {
     private final String endpoint;
     private final List<ResourceURL> urls = new ArrayList<>();
     private final UserInstanceStatus status;
+    private final Map<String, String> tags;
 }
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 3c0ef58..a254b9b 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
@@ -21,6 +21,7 @@ package com.epam.dlab.backendapi.resources;
 
 import com.epam.dlab.auth.UserInfo;
 import com.epam.dlab.backendapi.domain.OdahuActionDTO;
+import com.epam.dlab.backendapi.domain.OdahuCreateDTO;
 import com.epam.dlab.backendapi.service.OdahuService;
 import com.google.inject.Inject;
 import io.dropwizard.auth.Auth;
@@ -61,9 +62,9 @@ public class OdahuResource {
     @RolesAllowed("/api/odahu")
     public Response createOdahuCluster(@Parameter(hidden = true) @Auth UserInfo userInfo,
                                        @Parameter(hidden = true) @Context UriInfo uriInfo,
-                                       @Valid OdahuActionDTO createOdahuDTO) {
-        odahuService.create(createOdahuDTO.getProject(), createOdahuDTO, userInfo);
-        final URI uri = uriInfo.getRequestUriBuilder().path(createOdahuDTO.getName()).build();
+                                       @Valid OdahuCreateDTO odahuCreateDTO) {
+        odahuService.create(odahuCreateDTO.getProject(), odahuCreateDTO, userInfo);
+        final URI uri = uriInfo.getRequestUriBuilder().path(odahuCreateDTO.getName()).build();
         return Response.created(uri).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 671af91..e787991 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.OdahuActionDTO;
+import com.epam.dlab.backendapi.domain.OdahuCreateDTO;
 import com.epam.dlab.backendapi.domain.OdahuDTO;
 import com.epam.dlab.dto.UserInstanceStatus;
 import com.epam.dlab.dto.base.odahu.OdahuResult;
@@ -33,7 +33,7 @@ public interface OdahuService {
 
     Optional<OdahuDTO> get(String project, String endpoint);
 
-    void create(String project, OdahuActionDTO createOdahuDTO, UserInfo userInfo);
+    void create(String project, OdahuCreateDTO createOdahuDTO, UserInfo userInfo);
 
     void start(String name, String project, String endpoint, UserInfo user);
 
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 f61c419..9ec868b 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.OdahuActionDTO;
+import com.epam.dlab.backendapi.domain.OdahuCreateDTO;
 import com.epam.dlab.backendapi.domain.OdahuDTO;
 import com.epam.dlab.backendapi.domain.ProjectDTO;
 import com.epam.dlab.backendapi.domain.RequestId;
@@ -41,7 +41,9 @@ import com.google.inject.name.Named;
 import lombok.extern.slf4j.Slf4j;
 
 import java.util.Arrays;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 import java.util.Optional;
 
@@ -85,27 +87,27 @@ public class OdahuServiceImpl implements OdahuService {
 
     @BudgetLimited
     @Override
-    public void create(@Project String project, OdahuActionDTO createOdahuDTO, UserInfo user) {
-        Optional<OdahuDTO> odahuDTO = odahuDAO.getByProjectEndpoint(createOdahuDTO.getProject(), createOdahuDTO.getEndpoint());
+    public void create(@Project String project, OdahuCreateDTO odahuCreateDTO, UserInfo user) {
+        Optional<OdahuDTO> odahuDTO = odahuDAO.getByProjectEndpoint(odahuCreateDTO.getProject(), odahuCreateDTO.getEndpoint());
         if (odahuDTO.isPresent()) {
             throw new ResourceConflictException(String.format("Odahu cluster already exist in system for project %s " +
-                    "and endpoint %s", createOdahuDTO.getProject(), createOdahuDTO.getEndpoint()));
+                    "and endpoint %s", odahuCreateDTO.getProject(), odahuCreateDTO.getEndpoint()));
         }
         ProjectDTO projectDTO = projectService.get(project);
-        boolean isAdded = odahuDAO.create(new OdahuDTO(createOdahuDTO.getName(), createOdahuDTO.getProject(),
-                createOdahuDTO.getEndpoint(), UserInstanceStatus.CREATING));
+        boolean isAdded = odahuDAO.create(new OdahuDTO(odahuCreateDTO.getName(), odahuCreateDTO.getProject(),
+                        odahuCreateDTO.getEndpoint(), UserInstanceStatus.CREATING, getTags(odahuCreateDTO)));
 
         if (isAdded) {
             String url = null;
             try {
-                url = endpointService.get(createOdahuDTO.getEndpoint()).getUrl() + CREATE_ODAHU_API;
+                url = endpointService.get(odahuCreateDTO.getEndpoint()).getUrl() + CREATE_ODAHU_API;
                 String uuid =
                         provisioningService.post(url, user.getAccessToken(),
-                                requestBuilder.newOdahuCreate(user, createOdahuDTO, projectDTO), String.class);
+                                requestBuilder.newOdahuCreate(user, odahuCreateDTO, 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(),
+                odahuDAO.updateStatus(odahuCreateDTO.getName(), odahuCreateDTO.getProject(), odahuCreateDTO.getEndpoint(),
                         UserInstanceStatus.FAILED);
             }
         }
@@ -161,4 +163,12 @@ public class OdahuServiceImpl implements OdahuService {
             odahuDAO.updateStatus(name, project, project, UserInstanceStatus.FAILED);
         }
     }
+
+    private Map<String, String> getTags(OdahuCreateDTO odahuCreateDTO) {
+        Map<String, String> tags = new HashMap<>();
+        tags.put("custom_tag", odahuCreateDTO.getCustomTag());
+        tags.put("project_tag", odahuCreateDTO.getProject());
+        tags.put("endpoint_tag", odahuCreateDTO.getEndpoint());
+        return tags;
+    }
 }
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 5c00b99..b2683dc 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
@@ -24,6 +24,7 @@ import com.epam.dlab.backendapi.conf.SelfServiceApplicationConfiguration;
 import com.epam.dlab.backendapi.dao.SettingsDAO;
 import com.epam.dlab.backendapi.domain.ExploratoryLibCache;
 import com.epam.dlab.backendapi.domain.OdahuActionDTO;
+import com.epam.dlab.backendapi.domain.OdahuCreateDTO;
 import com.epam.dlab.backendapi.domain.ProjectDTO;
 import com.epam.dlab.backendapi.resources.dto.BackupFormDTO;
 import com.epam.dlab.backendapi.resources.dto.ComputationalCreateFormDTO;
@@ -79,7 +80,7 @@ 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.odahu.CreateOdahuDTO;
 import com.epam.dlab.dto.project.ProjectActionDTO;
 import com.epam.dlab.dto.project.ProjectCreateDTO;
 import com.epam.dlab.dto.reuploadkey.ReuploadKeyDTO;
@@ -663,11 +664,11 @@ public class RequestBuilder {
 				.withCloudSettings(cloudSettings(userInfo));
 	}
 
-	public OdahuCreateDTO newOdahuCreate(UserInfo user, OdahuActionDTO createOdahuDTO, ProjectDTO projectDTO) {
-		return OdahuCreateDTO.builder()
-				.name(createOdahuDTO.getName())
+	public CreateOdahuDTO newOdahuCreate(UserInfo user, OdahuCreateDTO odahuCreateDTO, ProjectDTO projectDTO) {
+		return CreateOdahuDTO.builder()
+				.name(odahuCreateDTO.getName())
 				.project(projectDTO.getName())
-				.endpoint(createOdahuDTO.getEndpoint())
+				.endpoint(odahuCreateDTO.getEndpoint())
 				.key(projectDTO.getKey().replace("\n", ""))
 				.build()
 				.withEdgeUserName(getEdgeUserName(user))


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@dlab.apache.org
For additional commands, e-mail: commits-help@dlab.apache.org