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 11:45:55 UTC

[incubator-dlab] branch DLAB-1293 created (now 91bcf85)

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

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


      at 91bcf85  [DLAB-1293] Fixed bug with status of custom image

This branch includes the following new commits:

     new 91bcf85  [DLAB-1293] Fixed bug with status of custom image

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



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


[incubator-dlab] 01/01: [DLAB-1293] Fixed bug with status of custom image

Posted by of...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 91bcf85c23c27805b61de885700c4d9b18f058fa
Author: Oleh Fuks <ol...@gmail.com>
AuthorDate: Tue Nov 26 13:45:33 2019 +0200

    [DLAB-1293] Fixed bug with status of custom image
---
 .../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