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/11/26 13:56:30 UTC

[incubator-dlab] branch develop updated: [DLAB-1293] Fixed bug with status of custom image (#446)

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 b69e91e  [DLAB-1293] Fixed bug with status of custom image (#446)
b69e91e is described below

commit b69e91edb88b94739d3a7ea26bb0a9c7fbf2f0ce
Author: ofuks <54...@users.noreply.github.com>
AuthorDate: Tue Nov 26 15:56:24 2019 +0200

    [DLAB-1293] Fixed bug with status of custom image (#446)
---
 .../dlab/dto/exploratory/ImageCreateStatusDTO.java     |  3 ++-
 .../response/handlers/ImageCreateCallbackHandler.java  | 17 ++++++++++++++---
 .../epam/dlab/backendapi/dao/ImageExploratoryDao.java  |  2 +-
 .../dlab/backendapi/dao/ImageExploratoryDaoImpl.java   | 10 +++++-----
 .../backendapi/resources/ImageExploratoryResource.java |  6 ++++--
 .../backendapi/resources/callback/ImageCallback.java   |  7 ++-----
 .../backendapi/service/ImageExploratoryService.java    |  2 +-
 .../service/impl/ImageExploratoryServiceImpl.java      |  4 ++--
 .../resources/ImageExploratoryResourceTest.java        | 18 ++++++++++++------
 .../service/impl/ImageExploratoryServiceImplTest.java  | 11 ++++++-----
 10 files changed, 49 insertions(+), 31 deletions(-)

diff --git a/services/dlab-model/src/main/java/com/epam/dlab/dto/exploratory/ImageCreateStatusDTO.java b/services/dlab-model/src/main/java/com/epam/dlab/dto/exploratory/ImageCreateStatusDTO.java
index 23da13a..44556a7 100644
--- a/services/dlab-model/src/main/java/com/epam/dlab/dto/exploratory/ImageCreateStatusDTO.java
+++ b/services/dlab-model/src/main/java/com/epam/dlab/dto/exploratory/ImageCreateStatusDTO.java
@@ -33,7 +33,8 @@ public class ImageCreateStatusDTO extends StatusBaseDTO<ImageCreateStatusDTO> {
 	private ImageCreateDTO imageCreateDTO;
 	private String name;
 	private String exploratoryName;
-
+	private String project;
+	private String endpoint;
 
 	public ImageCreateStatusDTO withImageCreateDto(ImageCreateDTO imageCreateDto) {
 		setImageCreateDTO(imageCreateDto);
diff --git a/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/core/response/handlers/ImageCreateCallbackHandler.java b/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/core/response/handlers/ImageCreateCallbackHandler.java
index 8f185a6..dbbc535 100644
--- a/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/core/response/handlers/ImageCreateCallbackHandler.java
+++ b/services/provisioning-service/src/main/java/com/epam/dlab/backendapi/core/response/handlers/ImageCreateCallbackHandler.java
@@ -40,13 +40,18 @@ public class ImageCreateCallbackHandler extends ResourceCallbackHandler<ImageCre
 	private final String imageName;
 	@JsonProperty
 	private final String exploratoryName;
+	@JsonProperty
+	private final String project;
+	@JsonProperty
+	private final String endpoint;
 
-	public ImageCreateCallbackHandler(
-			RESTService selfService, String uuid, DockerAction action,
+	public ImageCreateCallbackHandler(RESTService selfService, String uuid, DockerAction action,
 			ExploratoryImageDTO image) {
 		super(selfService, image.getCloudSettings().getIamUser(), uuid, action);
 		this.imageName = image.getImageName();
 		this.exploratoryName = image.getExploratoryName();
+		this.project = image.getProject();
+		this.endpoint = image.getEndpoint();
 	}
 
 	@JsonCreator
@@ -55,10 +60,14 @@ public class ImageCreateCallbackHandler extends ResourceCallbackHandler<ImageCre
 			@JsonProperty("action") DockerAction action,
 			@JsonProperty("user") String user,
 			@JsonProperty("imageName") String imageName,
-			@JsonProperty("exploratoryName") String exploratoryName) {
+			@JsonProperty("exploratoryName") String exploratoryName,
+			@JsonProperty("project") String projectName,
+			@JsonProperty("endpoint") String endpoint) {
 		super(selfService, user, uuid, action);
 		this.imageName = imageName;
 		this.exploratoryName = exploratoryName;
+		this.project = projectName;
+		this.endpoint = endpoint;
 	}
 
 	@Override
@@ -79,6 +88,8 @@ public class ImageCreateCallbackHandler extends ResourceCallbackHandler<ImageCre
 		final ImageCreateStatusDTO statusDTO = super.getBaseStatusDTO(status);
 		statusDTO.setExploratoryName(exploratoryName);
 		statusDTO.setName(imageName);
+		statusDTO.setProject(project);
+		statusDTO.setEndpoint(endpoint);
 		statusDTO.withoutImageCreateDto();
 		return statusDTO;
 	}
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ImageExploratoryDao.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ImageExploratoryDao.java
index 0eb86c0..56a329f 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ImageExploratoryDao.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ImageExploratoryDao.java
@@ -41,7 +41,7 @@ public interface ImageExploratoryDao {
 
 	List<ImageInfoRecord> getImagesForProject(String project);
 
-	Optional<ImageInfoRecord> getImage(String user, String name);
+	Optional<ImageInfoRecord> getImage(String user, String name, String project, String endpoint);
 
 	List<Library> getLibraries(String user, String imageFullName, ResourceType resourceType, LibStatus status);
 }
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ImageExploratoryDaoImpl.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ImageExploratoryDaoImpl.java
index c3e0ee1..36ef069 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ImageExploratoryDaoImpl.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ImageExploratoryDaoImpl.java
@@ -60,7 +60,7 @@ public class ImageExploratoryDaoImpl extends BaseDAO implements ImageExploratory
 
 	@Override
 	public void updateImageFields(Image image) {
-		final Bson condition = userImageCondition(image.getUser(), image.getName());
+		final Bson condition = userImageCondition(image.getUser(), image.getName(), image.getProject(), image.getEndpoint());
 		final Document updatedFields = getUpdatedFields(image);
 		updateOne(MongoCollections.IMAGES, condition, new Document(SET, updatedFields));
 	}
@@ -80,8 +80,8 @@ public class ImageExploratoryDaoImpl extends BaseDAO implements ImageExploratory
 	}
 
 	@Override
-	public Optional<ImageInfoRecord> getImage(String user, String name) {
-		return findOne(MongoCollections.IMAGES, userImageCondition(user, name), ImageInfoRecord.class);
+	public Optional<ImageInfoRecord> getImage(String user, String name, String project, String endpoint) {
+		return findOne(MongoCollections.IMAGES, userImageCondition(user, name, project, endpoint), ImageInfoRecord.class);
 	}
 
 	@Override
@@ -130,8 +130,8 @@ public class ImageExploratoryDaoImpl extends BaseDAO implements ImageExploratory
 	}
 
 
-	private Bson userImageCondition(String user, String imageName) {
-		return and(eq(USER, user), eq(IMAGE_NAME, imageName));
+	private Bson userImageCondition(String user, String imageName, String project, String endpoint) {
+		return and(eq(USER, user), eq(IMAGE_NAME, imageName), eq(PROJECT, project), eq(ENDPOINT, endpoint));
 	}
 
 	private Bson imageProjectCondition(String image, String project) {
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/ImageExploratoryResource.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/ImageExploratoryResource.java
index fdc15fd..a39a468 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/ImageExploratoryResource.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/ImageExploratoryResource.java
@@ -90,8 +90,10 @@ public class ImageExploratoryResource {
 	@GET
 	@Path("{name}")
 	public Response getImage(@Auth UserInfo ui,
-							 @PathParam("name") String name) {
+							 @PathParam("name") String name,
+							 @QueryParam("project") String project,
+							 @QueryParam("endpoint") String endpoint) {
 		log.debug("Getting image with name {} for user {}", name, ui.getName());
-		return Response.ok(imageExploratoryService.getImage(ui.getName(), name)).build();
+		return Response.ok(imageExploratoryService.getImage(ui.getName(), name, project, endpoint)).build();
 	}
 }
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/callback/ImageCallback.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/callback/ImageCallback.java
index a3357f6..66b54b6 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/callback/ImageCallback.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/callback/ImageCallback.java
@@ -19,7 +19,6 @@
 
 package com.epam.dlab.backendapi.resources.callback;
 
-import com.epam.dlab.auth.UserInfo;
 import com.epam.dlab.backendapi.domain.RequestId;
 import com.epam.dlab.backendapi.service.ImageExploratoryService;
 import com.epam.dlab.dto.UserInstanceStatus;
@@ -27,7 +26,6 @@ import com.epam.dlab.dto.exploratory.ImageCreateStatusDTO;
 import com.epam.dlab.dto.exploratory.ImageStatus;
 import com.epam.dlab.model.exploratory.Image;
 import com.google.inject.Inject;
-import io.dropwizard.auth.Auth;
 import lombok.extern.slf4j.Slf4j;
 
 import javax.ws.rs.Consumes;
@@ -45,11 +43,9 @@ public class ImageCallback {
 
 	@Inject
 	private ImageExploratoryService imageExploratoryService;
-
 	@Inject
 	private RequestId requestId;
 
-
 	@POST
 	@Path("/image_status")
 	public Response imageCreateStatus(ImageCreateStatusDTO dto) {
@@ -60,11 +56,12 @@ public class ImageCallback {
 		return Response.status(Response.Status.CREATED).build();
 	}
 
-
 	private Image getImage(ImageCreateStatusDTO dto) {
 		return Image.builder()
 				.name(dto.getName())
 				.user(dto.getUser())
+				.project(dto.getProject())
+				.endpoint(dto.getEndpoint())
 				.externalName(dto.getImageCreateDTO().getExternalName())
 				.fullName(dto.getImageCreateDTO().getFullName())
 				.status(UserInstanceStatus.FAILED == UserInstanceStatus.of(dto.getStatus()) ?
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/ImageExploratoryService.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/ImageExploratoryService.java
index 791cd05..5091c97 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/ImageExploratoryService.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/ImageExploratoryService.java
@@ -33,7 +33,7 @@ public interface ImageExploratoryService {
 
 	List<ImageInfoRecord> getNotFailedImages(String user, String dockerImage, String project, String endpoint);
 
-	ImageInfoRecord getImage(String user, String name);
+	ImageInfoRecord getImage(String user, String name, String project, String endpoint);
 
 	List<ImageInfoRecord> getImagesForProject(String project);
 }
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ImageExploratoryServiceImpl.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ImageExploratoryServiceImpl.java
index 905b504..467dcf4 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ImageExploratoryServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ImageExploratoryServiceImpl.java
@@ -127,8 +127,8 @@ public class ImageExploratoryServiceImpl implements ImageExploratoryService {
 	}
 
 	@Override
-	public ImageInfoRecord getImage(String user, String name) {
-		return imageExploratoryDao.getImage(user, name).orElseThrow(() ->
+	public ImageInfoRecord getImage(String user, String name, String project, String endpoint) {
+		return imageExploratoryDao.getImage(user, name, project, endpoint).orElseThrow(() ->
 				new ResourceNotFoundException(String.format(IMAGE_NOT_FOUND_MSG, name, user)));
 	}
 
diff --git a/services/self-service/src/test/java/com/epam/dlab/backendapi/resources/ImageExploratoryResourceTest.java b/services/self-service/src/test/java/com/epam/dlab/backendapi/resources/ImageExploratoryResourceTest.java
index be35816..2a7e4c0 100644
--- a/services/self-service/src/test/java/com/epam/dlab/backendapi/resources/ImageExploratoryResourceTest.java
+++ b/services/self-service/src/test/java/com/epam/dlab/backendapi/resources/ImageExploratoryResourceTest.java
@@ -168,10 +168,12 @@ public class ImageExploratoryResourceTest extends TestBase {
 
 	@Test
 	public void getImage() {
-		when(imageExploratoryService.getImage(anyString(), anyString()))
+		when(imageExploratoryService.getImage(anyString(), anyString(), anyString(), anyString()))
 				.thenReturn(getImageList().get(0));
 		final Response response = resources.getJerseyTest()
 				.target("/infrastructure_provision/exploratory_environment/image/someName")
+				.queryParam("project", "someProject")
+				.queryParam("endpoint", "someEndpoint")
 				.request()
 				.header("Authorization", "Bearer " + TOKEN)
 				.get();
@@ -180,17 +182,19 @@ public class ImageExploratoryResourceTest extends TestBase {
 		assertEquals(getImageList().get(0), response.readEntity(ImageInfoRecord.class));
 		assertEquals(MediaType.APPLICATION_JSON, response.getHeaderString(HttpHeaders.CONTENT_TYPE));
 
-		verify(imageExploratoryService).getImage(USER.toLowerCase(), "someName");
+		verify(imageExploratoryService).getImage(USER.toLowerCase(), "someName", "someProject", "someEndpoint");
 		verifyNoMoreInteractions(imageExploratoryService);
 	}
 
 	@Test
 	public void getImageWithFailedAuth() throws AuthenticationException {
 		authFailSetup();
-		when(imageExploratoryService.getImage(anyString(), anyString()))
+		when(imageExploratoryService.getImage(anyString(), anyString(), anyString(), anyString()))
 				.thenReturn(getImageList().get(0));
 		final Response response = resources.getJerseyTest()
 				.target("/infrastructure_provision/exploratory_environment/image/someName")
+				.queryParam("project", "someProject")
+				.queryParam("endpoint", "someEndpoint")
 				.request()
 				.header("Authorization", "Bearer " + TOKEN)
 				.get();
@@ -199,7 +203,7 @@ public class ImageExploratoryResourceTest extends TestBase {
 		assertEquals(getImageList().get(0), response.readEntity(ImageInfoRecord.class));
 		assertEquals(MediaType.APPLICATION_JSON, response.getHeaderString(HttpHeaders.CONTENT_TYPE));
 
-		verify(imageExploratoryService).getImage(USER.toLowerCase(), "someName");
+		verify(imageExploratoryService).getImage(USER.toLowerCase(), "someName", "someProject", "someEndpoint");
 		verifyNoMoreInteractions(imageExploratoryService);
 	}
 
@@ -240,9 +244,11 @@ public class ImageExploratoryResourceTest extends TestBase {
 	@Test
 	public void getImageWithException() {
 		doThrow(new ResourceNotFoundException("Image with name was not found for user"))
-				.when(imageExploratoryService).getImage(anyString(), anyString());
+				.when(imageExploratoryService).getImage(anyString(), anyString(), anyString(), anyString());
 		final Response response = resources.getJerseyTest()
 				.target("/infrastructure_provision/exploratory_environment/image/someName")
+				.queryParam("project", "someProject")
+				.queryParam("endpoint", "someEndpoint")
 				.request()
 				.header("Authorization", "Bearer " + TOKEN)
 				.get();
@@ -250,7 +256,7 @@ public class ImageExploratoryResourceTest extends TestBase {
 		assertEquals(HttpStatus.SC_NOT_FOUND, response.getStatus());
 		assertEquals(MediaType.APPLICATION_JSON, response.getHeaderString(HttpHeaders.CONTENT_TYPE));
 
-		verify(imageExploratoryService).getImage(USER.toLowerCase(), "someName");
+		verify(imageExploratoryService).getImage(USER.toLowerCase(), "someName", "someProject", "someEndpoint");
 		verifyNoMoreInteractions(imageExploratoryService);
 	}
 
diff --git a/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/ImageExploratoryServiceImplTest.java b/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/ImageExploratoryServiceImplTest.java
index 39ff670..51eeeee 100644
--- a/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/ImageExploratoryServiceImplTest.java
+++ b/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/ImageExploratoryServiceImplTest.java
@@ -259,23 +259,24 @@ public class ImageExploratoryServiceImplTest {
 	@Test
 	public void getImage() {
 		ImageInfoRecord expectedImageInfoRecord = getImageInfoRecord();
-		when(imageExploratoryDao.getImage(anyString(), anyString())).thenReturn(Optional.of(expectedImageInfoRecord));
+		when(imageExploratoryDao.getImage(anyString(), anyString(), anyString(), anyString()))
+				.thenReturn(Optional.of(expectedImageInfoRecord));
 
-		ImageInfoRecord actualImageInfoRecord = imageExploratoryService.getImage(USER, "someName");
+		ImageInfoRecord actualImageInfoRecord = imageExploratoryService.getImage(USER, "someName", "someProject", "someEndpoint");
 		assertNotNull(actualImageInfoRecord);
 		assertEquals(expectedImageInfoRecord, actualImageInfoRecord);
 
-		verify(imageExploratoryDao).getImage(USER, "someName");
+		verify(imageExploratoryDao).getImage(USER, "someName", "someProject", "someEndpoint");
 		verifyNoMoreInteractions(imageExploratoryDao);
 	}
 
 	@Test
 	public void getImageWhenMethodGetImageReturnsOptionalEmpty() {
-		when(imageExploratoryDao.getImage(anyString(), anyString())).thenReturn(Optional.empty());
+		when(imageExploratoryDao.getImage(anyString(), anyString(), anyString(), anyString())).thenReturn(Optional.empty());
 		expectedException.expect(ResourceNotFoundException.class);
 		expectedException.expectMessage(String.format("Image with name %s was not found for user %s",
 				"someImageName", USER));
-		imageExploratoryService.getImage(USER, "someImageName");
+		imageExploratoryService.getImage(USER, "someImageName", "someProject", "someEndpoint");
 	}
 
 	@Test


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