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 2019/12/18 14:08:36 UTC

[incubator-dlab] branch develop updated: [DLAB-1401] Created endpoint for endpoint resources

This is an automated email from the ASF dual-hosted git repository.

ofuks pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/incubator-dlab.git


The following commit(s) were added to refs/heads/develop by this push:
     new f650f54  [DLAB-1401] Created endpoint for endpoint resources
f650f54 is described below

commit f650f543a52f8f468104fcd1a141cd0577f09f50
Author: Oleh Fuks <ol...@gmail.com>
AuthorDate: Wed Dec 18 16:08:05 2019 +0200

    [DLAB-1401] Created endpoint for endpoint resources
---
 .../epam/dlab/backendapi/dao/ExploratoryDAO.java   | 12 ++++++++
 .../backendapi/domain/EndpointResourcesDTO.java    | 33 ++++++++++++++++++++++
 .../backendapi/resources/EndpointResource.java     | 15 ++++++++++
 .../dlab/backendapi/service/EndpointService.java   |  3 ++
 .../service/impl/EndpointServiceImpl.java          | 17 ++++++++++-
 .../service/impl/ProjectServiceImpl.java           |  3 +-
 6 files changed, 81 insertions(+), 2 deletions(-)

diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ExploratoryDAO.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ExploratoryDAO.java
index cba6b74..9993171 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ExploratoryDAO.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ExploratoryDAO.java
@@ -231,6 +231,18 @@ public class ExploratoryDAO extends BaseDAO {
 				false);
 	}
 
+	public List<UserInstanceDTO> fetchExploratoriesByEndpointWhereStatusNotIn(String endpoint,
+																			  List<UserInstanceStatus> statuses) {
+		final List<String> exploratoryStatusList = statusList(statuses);
+
+		return getUserInstances(
+				and(
+						eq(ENDPOINT, endpoint),
+						not(in(STATUS, exploratoryStatusList))
+				),
+				false);
+	}
+
 	private List<UserInstanceDTO> getUserInstances(Bson condition, boolean computationalFieldsRequired) {
 		return stream(getCollection(USER_INSTANCES)
 				.find(condition)
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/EndpointResourcesDTO.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/EndpointResourcesDTO.java
new file mode 100644
index 0000000..85f4418
--- /dev/null
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/EndpointResourcesDTO.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.epam.dlab.backendapi.domain;
+
+import com.epam.dlab.dto.UserInstanceDTO;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@AllArgsConstructor
+public class EndpointResourcesDTO {
+    private List<UserInstanceDTO> exploratories;
+    private List<ProjectDTO> projects;
+}
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/EndpointResource.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/EndpointResource.java
index 9aebfc4..3a6d9de 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/EndpointResource.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/EndpointResource.java
@@ -2,6 +2,7 @@ package com.epam.dlab.backendapi.resources;
 
 import com.epam.dlab.auth.UserInfo;
 import com.epam.dlab.backendapi.domain.EndpointDTO;
+import com.epam.dlab.backendapi.domain.EndpointResourcesDTO;
 import com.epam.dlab.backendapi.service.EndpointService;
 import com.epam.dlab.rest.dto.ErrorDTO;
 import com.google.inject.Inject;
@@ -89,6 +90,20 @@ public class EndpointResource {
 		return Response.ok(endpointService.getEndpoints()).build();
 	}
 
+	@Operation(summary = "Get resources related to the endpoint", tags = "endpoint")
+	@ApiResponses({
+			@ApiResponse(responseCode = "200", description = "Return information about resources of endpoint",
+					content = @Content(mediaType = MediaType.APPLICATION_JSON, schema =
+					@Schema(implementation = EndpointResourcesDTO.class)))
+	})
+	@GET
+	@Path("{name}/resources")
+	@Produces(MediaType.APPLICATION_JSON)
+	public Response getEndpointResources(@Parameter(hidden = true) @Auth UserInfo userInfo,
+										 @Parameter(description = "Endpoint name")
+										 @PathParam("name") String name) {
+		return Response.ok(endpointService.getEndpointResources(name)).build();
+	}
 
 	@Operation(summary = "Remove endpoint", tags = "endpoint")
 	@ApiResponses({
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/EndpointService.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/EndpointService.java
index 61f663e..4f5d6b1 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/EndpointService.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/EndpointService.java
@@ -2,12 +2,15 @@ package com.epam.dlab.backendapi.service;
 
 import com.epam.dlab.auth.UserInfo;
 import com.epam.dlab.backendapi.domain.EndpointDTO;
+import com.epam.dlab.backendapi.domain.EndpointResourcesDTO;
 
 import java.util.List;
 
 public interface EndpointService {
 	List<EndpointDTO> getEndpoints();
 
+	EndpointResourcesDTO getEndpointResources(String endpoint);
+
 	EndpointDTO get(String name);
 
 	void create(EndpointDTO endpointDTO);
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/EndpointServiceImpl.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/EndpointServiceImpl.java
index 2414c9f..16f2154 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/EndpointServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/EndpointServiceImpl.java
@@ -2,10 +2,13 @@ package com.epam.dlab.backendapi.service.impl;
 
 import com.epam.dlab.auth.UserInfo;
 import com.epam.dlab.backendapi.dao.EndpointDAO;
+import com.epam.dlab.backendapi.dao.ExploratoryDAO;
 import com.epam.dlab.backendapi.domain.EndpointDTO;
+import com.epam.dlab.backendapi.domain.EndpointResourcesDTO;
 import com.epam.dlab.backendapi.domain.ProjectDTO;
 import com.epam.dlab.backendapi.service.EndpointService;
 import com.epam.dlab.backendapi.service.ProjectService;
+import com.epam.dlab.dto.UserInstanceDTO;
 import com.epam.dlab.dto.UserInstanceStatus;
 import com.epam.dlab.exceptions.ResourceConflictException;
 import com.epam.dlab.exceptions.ResourceNotFoundException;
@@ -18,11 +21,13 @@ import java.util.List;
 public class EndpointServiceImpl implements EndpointService {
 	private final EndpointDAO endpointDAO;
 	private final ProjectService projectService;
+	private final ExploratoryDAO exploratoryDAO;
 
 	@Inject
-	public EndpointServiceImpl(EndpointDAO endpointDAO, ProjectService projectService) {
+	public EndpointServiceImpl(EndpointDAO endpointDAO, ProjectService projectService, ExploratoryDAO exploratoryDAO) {
 		this.endpointDAO = endpointDAO;
 		this.projectService = projectService;
+		this.exploratoryDAO = exploratoryDAO;
 	}
 
 	@Override
@@ -31,6 +36,16 @@ public class EndpointServiceImpl implements EndpointService {
 	}
 
 	@Override
+	public EndpointResourcesDTO getEndpointResources(String endpoint) {
+		List<UserInstanceDTO> exploratories = exploratoryDAO.fetchExploratoriesByEndpointWhereStatusNotIn(endpoint,
+				Arrays.asList(UserInstanceStatus.TERMINATED, UserInstanceStatus.FAILED));
+
+		List<ProjectDTO> projects = projectService.getProjectsByEndpoint(endpoint);
+
+		return new EndpointResourcesDTO(exploratories, projects);
+	}
+
+	@Override
 	public EndpointDTO get(String name) {
 		return endpointDAO.get(name)
 				.orElseThrow(() -> new ResourceNotFoundException("Endpoint with name " + name + " not found"));
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ProjectServiceImpl.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ProjectServiceImpl.java
index 788fafa..976cf68 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ProjectServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ProjectServiceImpl.java
@@ -200,7 +200,8 @@ public class ProjectServiceImpl implements ProjectService {
 	public boolean checkExploratoriesAndComputationalProgress(String projectName, List<String> endpoints) {
 		return exploratoryDAO.fetchProjectEndpointExploratoriesWhereStatusIn(projectName, endpoints, Arrays.asList(
 				UserInstanceStatus.CREATING, UserInstanceStatus.STARTING, UserInstanceStatus.CREATING_IMAGE,
-				UserInstanceStatus.RECONFIGURING, UserInstanceStatus.STOPPING, UserInstanceStatus.TERMINATING),
+				UserInstanceStatus.CONFIGURING, UserInstanceStatus.RECONFIGURING, UserInstanceStatus.STOPPING,
+				UserInstanceStatus.TERMINATING),
 				UserInstanceStatus.CREATING, UserInstanceStatus.CONFIGURING, UserInstanceStatus.STARTING,
 				UserInstanceStatus.RECONFIGURING, UserInstanceStatus.CREATING_IMAGE, UserInstanceStatus.STOPPING,
 				UserInstanceStatus.TERMINATING).isEmpty();


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