diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..ea2fe3a --- /dev/null +++ b/Dockerfile @@ -0,0 +1,4 @@ +FROM amazoncorretto:17.0.6-al2023 +EXPOSE 8081 +ADD ./build/libs/*.jar device-deployer.jar +ENTRYPOINT ["java", "-jar", "/device-deployer.jar"] \ No newline at end of file diff --git a/src/main/java/inc/sdt/blokworks/devicedeployer/application/DefaultDeployerService.java b/src/main/java/inc/sdt/blokworks/devicedeployer/application/DefaultDeployerService.java index ad41bfd..54c5894 100644 --- a/src/main/java/inc/sdt/blokworks/devicedeployer/application/DefaultDeployerService.java +++ b/src/main/java/inc/sdt/blokworks/devicedeployer/application/DefaultDeployerService.java @@ -40,7 +40,7 @@ public class DefaultDeployerService implements DeployerService{ log.info("[publish]"); try { OutboundMessagePayload payload = new OutboundMessagePayload( - deployMessage.getUrl(), + deployMessage.getFileId(), deployMessage.getName(), deployMessage.getCommand(), deployMessage.getEnv(), diff --git a/src/main/java/inc/sdt/blokworks/devicedeployer/domain/OutboundMessage.java b/src/main/java/inc/sdt/blokworks/devicedeployer/domain/OutboundMessage.java index 113ec55..9fdd335 100644 --- a/src/main/java/inc/sdt/blokworks/devicedeployer/domain/OutboundMessage.java +++ b/src/main/java/inc/sdt/blokworks/devicedeployer/domain/OutboundMessage.java @@ -4,7 +4,7 @@ import java.util.HashMap; import java.util.Set; public class OutboundMessage { - private String url; + private String fileId; private String name; private HashMap env; private String command; @@ -13,8 +13,8 @@ public class OutboundMessage { protected OutboundMessage() {} - public String getUrl() { - return url; + public String getFileId() { + return fileId; } public String getName() { @@ -44,7 +44,7 @@ public class OutboundMessage { @Override public String toString() { return "AssetApp{" + - "url='" + url + '\'' + + "fileId='" + fileId + '\'' + ", name='" + name + '\'' + ", env=" + env + ", command='" + command + '\'' + @@ -58,15 +58,15 @@ public class OutboundMessage { } public static final class Builder { - private String url; + private String fileId; private String name; private HashMap env; private String command; private OperationType operationType; private String requestId; - public Builder url(String url) { - this.url = url; + public Builder fileId(String fileId) { + this.fileId = fileId; return this; } @@ -97,7 +97,7 @@ public class OutboundMessage { public OutboundMessage build() { OutboundMessage deployMessage = new OutboundMessage(); - deployMessage.url = this.url; + deployMessage.fileId = this.fileId; deployMessage.name = this.name; deployMessage.env = this.env; deployMessage.command = this.command; diff --git a/src/main/java/inc/sdt/blokworks/devicedeployer/presentation/DeployerController.java b/src/main/java/inc/sdt/blokworks/devicedeployer/presentation/DeployerController.java index da4c4de..9636826 100644 --- a/src/main/java/inc/sdt/blokworks/devicedeployer/presentation/DeployerController.java +++ b/src/main/java/inc/sdt/blokworks/devicedeployer/presentation/DeployerController.java @@ -6,6 +6,7 @@ import inc.sdt.blokworks.devicedeployer.domain.AssetApp; import inc.sdt.blokworks.devicedeployer.domain.OperationType; import inc.sdt.blokworks.devicedeployer.domain.OutboundMessage; import inc.sdt.blokworks.devicedeployer.domain.Process; +import inc.sdt.blokworks.devicedeployer.infrastructure.amqp.ResourceMapping; import jakarta.servlet.http.HttpSession; import jakarta.validation.Valid; import org.slf4j.Logger; @@ -37,6 +38,7 @@ public class DeployerController { * @param assetCode 자산 코드 * @param assetAppResource 배포하려는 앱의 정보 */ + @ResourceMapping(name = "Deploy_App", method = "POST", uri = "/assets/{code}/apps", description = "앱 배포 명령") @ResponseStatus(HttpStatus.CREATED) @PostMapping("/assets/{assetCode}/apps") public void deploy(@PathVariable String assetCode, @@ -52,6 +54,7 @@ public class DeployerController { * 배포된 앱 정보 조회 (페이지 조회) * @param assetCode 자산 코드 */ + @ResourceMapping(name = "Get_Asset_App", method = "GET", uri = "/assets/{code}/apps", description = "배포된 앱 정보 조회") @ResponseStatus(HttpStatus.OK) @GetMapping("/assets/{assetCode}/apps") public PageableResponse get(@PathVariable String assetCode, diff --git a/src/main/java/inc/sdt/blokworks/devicedeployer/presentation/OutboundMessageResource.java b/src/main/java/inc/sdt/blokworks/devicedeployer/presentation/OutboundMessageResource.java index 26418d3..6b95598 100644 --- a/src/main/java/inc/sdt/blokworks/devicedeployer/presentation/OutboundMessageResource.java +++ b/src/main/java/inc/sdt/blokworks/devicedeployer/presentation/OutboundMessageResource.java @@ -6,7 +6,7 @@ import java.util.HashMap; record OutboundMessageResource( @NotNull - String url, + String fileId, @NotNull String name, String command, diff --git a/src/main/java/inc/sdt/blokworks/devicedeployer/presentation/OutboundMessageResourceConverter.java b/src/main/java/inc/sdt/blokworks/devicedeployer/presentation/OutboundMessageResourceConverter.java index 109f661..fd2a371 100644 --- a/src/main/java/inc/sdt/blokworks/devicedeployer/presentation/OutboundMessageResourceConverter.java +++ b/src/main/java/inc/sdt/blokworks/devicedeployer/presentation/OutboundMessageResourceConverter.java @@ -8,7 +8,7 @@ public class OutboundMessageResourceConverter { public OutboundMessageResource toResource(OutboundMessage outboundMessage) { return new OutboundMessageResource( - outboundMessage.getUrl(), + outboundMessage.getFileId(), outboundMessage.getName(), outboundMessage.getCommand(), outboundMessage.getEnv() @@ -17,7 +17,7 @@ public class OutboundMessageResourceConverter { public OutboundMessage fromResource(OutboundMessageResource resource) { return OutboundMessage.builder() - .url(resource.url()) + .fileId(resource.fileId()) .name(resource.name()) .command(resource.command()) .env(resource.env()) diff --git a/src/main/java/inc/sdt/blokworks/devicedeployer/presentation/ProcessController.java b/src/main/java/inc/sdt/blokworks/devicedeployer/presentation/ProcessController.java index e686e5b..2fee347 100644 --- a/src/main/java/inc/sdt/blokworks/devicedeployer/presentation/ProcessController.java +++ b/src/main/java/inc/sdt/blokworks/devicedeployer/presentation/ProcessController.java @@ -2,6 +2,7 @@ package inc.sdt.blokworks.devicedeployer.presentation; import inc.sdt.blokworks.devicedeployer.application.ProcessService; import inc.sdt.blokworks.devicedeployer.domain.Process; +import inc.sdt.blokworks.devicedeployer.infrastructure.amqp.ResourceMapping; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.data.domain.Page; @@ -27,6 +28,7 @@ public class ProcessController { * 배포된 앱 내의 프로세스 정보 조회 (페이지 조회) * @param assetCode 자산 코드 */ + @ResourceMapping(name = "Get_App_Process", method = "GET", uri = "/assets/{code}/apps/process", description = "배포된 앱의 프로세스 정보 조회") @ResponseStatus(HttpStatus.OK) @GetMapping("/assets/{assetCode}/apps/process") public PageableResponse get(@PathVariable String assetCode, diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 32ba08d..f68aaf5 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -1,3 +1,24 @@ +spring: + datasource: + url: ${POSTGRES_URL} + username: ${POSTGRES_CREDENTIALS_USERNAME} + password: ${POSTGRES_CREDENTIALS_PASSWORD} + hikari: + maximum-pool-size: 3 + jpa: + hibernate: + ddl-auto: update + show-sql: false + +inbound: + mqtt: + url: ${INBOUND_MQTT_URL} + username: ${INBOUND_MQTT_CREDENTIALS_USERNAME} + password: ${INBOUND_MQTT_CREDENTIALS_PASSWORD} + topics: + - /assets/+/command-req/+ + - /assets/+/apps/process + iam: enabled: ${IAM_REGISTER_ENABLED} amqp: