From e6a80f2e467f3df25023682b4f27b110856378f1 Mon Sep 17 00:00:00 2001
From: Martin Weise <martin.weise@tuwien.ac.at>
Date: Sat, 20 May 2023 00:47:55 +0200
Subject: [PATCH] Revert interface

---
 .../java/at/tuwien/endpoints/ContainerEndpoint.java |  7 ++++---
 .../endpoint/ContainerEndpointIntegrationTest.java  |  9 ++++-----
 .../service/ContainerServiceIntegrationTest.java    |  6 +++---
 .../java/at/tuwien/service/ContainerService.java    |  4 ++--
 .../tuwien/service/impl/ContainerServiceImpl.java   | 13 +++++++------
 .../test/src/main/java/at/tuwien/test/BaseTest.java |  5 +++++
 6 files changed, 25 insertions(+), 19 deletions(-)

diff --git a/dbrepo-container-service/rest-service/src/main/java/at/tuwien/endpoints/ContainerEndpoint.java b/dbrepo-container-service/rest-service/src/main/java/at/tuwien/endpoints/ContainerEndpoint.java
index 207fb9778d..f20a5bf5e4 100644
--- a/dbrepo-container-service/rest-service/src/main/java/at/tuwien/endpoints/ContainerEndpoint.java
+++ b/dbrepo-container-service/rest-service/src/main/java/at/tuwien/endpoints/ContainerEndpoint.java
@@ -26,6 +26,7 @@ import org.springframework.web.bind.annotation.*;
 
 import jakarta.validation.Valid;
 import jakarta.validation.constraints.NotNull;
+
 import java.security.Principal;
 import java.util.List;
 import java.util.Optional;
@@ -152,14 +153,14 @@ public class ContainerEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<ContainerDto> findById(@NotNull @PathVariable("id") Long containerId) throws DockerClientException,
-            ContainerNotFoundException {
+    public ResponseEntity<ContainerDto> findById(@NotNull @PathVariable("id") Long containerId)
+            throws DockerClientException, ContainerNotFoundException {
         log.debug("endpoint find container, id={}", containerId);
         final Container container = containerService.find(containerId);
         final ContainerDto dto = containerMapper.containerToContainerDto(container);
         final ContainerDto inspect;
         try {
-            inspect = containerService.inspect(container.getHash());
+            inspect = containerService.inspect(containerId);
             dto.setIpAddress(inspect.getIpAddress());
             dto.setRunning(inspect.getRunning());
             dto.setState(inspect.getState());
diff --git a/dbrepo-container-service/rest-service/src/test/java/at/tuwien/endpoint/ContainerEndpointIntegrationTest.java b/dbrepo-container-service/rest-service/src/test/java/at/tuwien/endpoint/ContainerEndpointIntegrationTest.java
index a1a199c00e..180297063b 100644
--- a/dbrepo-container-service/rest-service/src/test/java/at/tuwien/endpoint/ContainerEndpointIntegrationTest.java
+++ b/dbrepo-container-service/rest-service/src/test/java/at/tuwien/endpoint/ContainerEndpointIntegrationTest.java
@@ -107,7 +107,7 @@ public class ContainerEndpointIntegrationTest extends BaseUnitTest {
     @Test
     @WithMockUser(username = USER_2_USERNAME, authorities = {"delete-container"})
     public void delete_hasRole_succeeds() throws ContainerStillRunningException, ContainerAlreadyRemovedException,
-            ContainerNotFoundException, DockerClientException {
+            ContainerNotFoundException {
 
         /* mock */
         when(userRepository.findByUsername(USER_2_USERNAME))
@@ -214,8 +214,7 @@ public class ContainerEndpointIntegrationTest extends BaseUnitTest {
     @Test
     @WithMockUser(username = USER_1_USERNAME, authorities = {"modify-container-state"})
     public void modify_hasRole_succeeds() throws ContainerAlreadyRunningException,
-            ContainerAlreadyStoppedException, ContainerNotFoundException, UserNotFoundException, NotAllowedException,
-            DockerClientException {
+            ContainerAlreadyStoppedException, ContainerNotFoundException, UserNotFoundException, NotAllowedException {
 
         /* mock */
         when(userRepository.findByUsername(USER_1_USERNAME))
@@ -242,7 +241,7 @@ public class ContainerEndpointIntegrationTest extends BaseUnitTest {
     @Test
     @WithMockUser(username = USER_2_USERNAME, authorities = {"modify-foreign-container-state"})
     public void modify_hasRoleForeign_succeeds() throws UserNotFoundException, ContainerAlreadyRunningException,
-            NotAllowedException, ContainerAlreadyStoppedException, ContainerNotFoundException, DockerClientException {
+            NotAllowedException, ContainerAlreadyStoppedException, ContainerNotFoundException {
 
         /* mock */
         when(userRepository.findByUsername(USER_2_USERNAME))
@@ -276,7 +275,7 @@ public class ContainerEndpointIntegrationTest extends BaseUnitTest {
         /* mock */
         when(containerService.find(containerId))
                 .thenReturn(container);
-        when(containerService.inspect(containerHash))
+        when(containerService.inspect(containerId))
                 .thenReturn(containerDto);
 
         /* test */
diff --git a/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java b/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java
index 23e8ed7532..04cd7b7dc1 100644
--- a/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java
+++ b/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java
@@ -319,7 +319,7 @@ public class ContainerServiceIntegrationTest extends BaseUnitTest {
         containerRepository.save(CONTAINER_1_SIMPLE);
 
         /* test */
-        final ContainerDto response = containerService.inspect(CONTAINER_1_HASH);
+        final ContainerDto response = containerService.inspect(CONTAINER_1_ID);
         assertEquals(CONTAINER_1_ID, response.getId());
         assertEquals(CONTAINER_1_NAME, response.getName());
         assertEquals(CONTAINER_1_INTERNALNAME, response.getInternalName());
@@ -331,7 +331,7 @@ public class ContainerServiceIntegrationTest extends BaseUnitTest {
 
         /* test */
         assertThrows(ContainerNotFoundException.class, () -> {
-            containerService.inspect(CONTAINER_2_HASH);
+            containerService.inspect(CONTAINER_2_ID);
         });
     }
 
@@ -344,7 +344,7 @@ public class ContainerServiceIntegrationTest extends BaseUnitTest {
 
         /* test */
         assertThrows(ContainerNotRunningException.class, () -> {
-            containerService.inspect(CONTAINER_1_HASH);
+            containerService.inspect(CONTAINER_1_ID);
         });
     }
 }
diff --git a/dbrepo-container-service/services/src/main/java/at/tuwien/service/ContainerService.java b/dbrepo-container-service/services/src/main/java/at/tuwien/service/ContainerService.java
index c66cd56e5b..62318ffcef 100644
--- a/dbrepo-container-service/services/src/main/java/at/tuwien/service/ContainerService.java
+++ b/dbrepo-container-service/services/src/main/java/at/tuwien/service/ContainerService.java
@@ -48,12 +48,12 @@ public interface ContainerService {
     Container find(Long id) throws ContainerNotFoundException;
 
     /**
-     * @param hash
+     * @param id
      * @return
      * @throws DockerClientException
      * @throws ContainerNotRunningException
      */
-    ContainerDto inspect(String hash) throws DockerClientException, ContainerNotRunningException;
+    ContainerDto inspect(Long id) throws DockerClientException, ContainerNotRunningException, ContainerNotFoundException;
 
     /**
      * Retrieve a list of all containers from the metadata database
diff --git a/dbrepo-container-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java b/dbrepo-container-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java
index bed82910ca..74d4f07a64 100644
--- a/dbrepo-container-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java
+++ b/dbrepo-container-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java
@@ -186,10 +186,11 @@ public class ContainerServiceImpl implements ContainerService {
 
     @Override
     @Transactional
-    public ContainerDto inspect(String hash) throws DockerClientException, ContainerNotRunningException {
+    public ContainerDto inspect(Long id) throws DockerClientException, ContainerNotRunningException, ContainerNotFoundException {
+        final Container container = find(id);
         final InspectContainerResponse response;
         try {
-            response = dockerClient.inspectContainerCmd(hash)
+            response = dockerClient.inspectContainerCmd(container.getHash())
                     .withSize(true)
                     .exec();
         } catch (NotFoundException e) {
@@ -207,8 +208,8 @@ public class ContainerServiceImpl implements ContainerService {
             log.error("Failed to inspect container state: container is not running");
             throw new ContainerNotRunningException("Failed to inspect container state");
         }
-        final ContainerDto container = ContainerDto.builder()
-                .hash(hash)
+        final ContainerDto entity = ContainerDto.builder()
+                .hash(container.getHash())
                 .running(response.getState().getRunning())
                 .state(containerMapper.containerStateToContainerStateDto(response.getState()))
                 .build();
@@ -219,8 +220,8 @@ public class ContainerServiceImpl implements ContainerService {
                     log.trace("key {} network {}", key, network);
                     container.setIpAddress(network.getIpAddress());
                 });
-        log.info("Inspected container with hash {}", hash);
-        return container;
+        log.info("Inspected container with hash {}", container.getHash());
+        return entity;
     }
 
     @Override
diff --git a/dbrepo-metadata-db/test/src/main/java/at/tuwien/test/BaseTest.java b/dbrepo-metadata-db/test/src/main/java/at/tuwien/test/BaseTest.java
index e0135a0715..38bdd44dc4 100644
--- a/dbrepo-metadata-db/test/src/main/java/at/tuwien/test/BaseTest.java
+++ b/dbrepo-metadata-db/test/src/main/java/at/tuwien/test/BaseTest.java
@@ -4,6 +4,7 @@ import at.tuwien.api.amqp.CreateVirtualHostDto;
 import at.tuwien.api.amqp.GrantVirtualHostPermissionsDto;
 import at.tuwien.api.auth.SignupRequestDto;
 import at.tuwien.api.container.ContainerDto;
+import at.tuwien.api.container.ContainerStateDto;
 import at.tuwien.api.container.image.*;
 import at.tuwien.api.database.DatabaseCreateDto;
 import at.tuwien.api.database.DatabaseDto;
@@ -885,6 +886,8 @@ public abstract class BaseTest {
     public final static HealthCheck CONTAINER_1_HEALTHCHECK = new HealthCheck()
             .withTest(List.of("CMD", "mysqladmin", "ping", "--host=127.0.0.1", "--password=mariadb"));
     public final static String[] CONTAINER_1_ENV = new String[]{"MARIADB_ROOT_PASSWORD=mariadb", "MARIADB_DATABASE=weather"};
+    public final static ContainerStateDto CONTAINER_1_STATE = ContainerStateDto.RUNNING;
+    public final static Boolean CONTAINER_1_RUNNING = true;
 
     public final static Container CONTAINER_1 = Container.builder()
             .id(CONTAINER_1_ID)
@@ -925,6 +928,8 @@ public abstract class BaseTest {
             .created(CONTAINER_1_CREATED)
             .ipAddress(CONTAINER_1_IP)
             .owner(USER_1_BRIEF_DTO)
+            .state(CONTAINER_1_STATE)
+            .running(CONTAINER_1_RUNNING)
             .build();
 
     public final static Long CONTAINER_2_ID = 2L;
-- 
GitLab