From 5401b6687ff40fea280c4ed4ee12ebee1dee15e5 Mon Sep 17 00:00:00 2001 From: hyunjujeong Date: Mon, 4 Sep 2023 10:27:07 +0900 Subject: [PATCH] =?UTF-8?q?-=20Config=20=ED=8C=8C=EC=9D=BC=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD=20command=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/BashCommand.java | 10 ++ .../application/CommandInfo.java | 7 ++ .../application/DefaultDeployerService.java | 70 +++++++------- .../devicedeployer/domain/CommandType.java | 3 +- .../devicedeployer/domain/DeployRequest.java | 46 +++++++++- .../devicedeployer/domain/DeviceType.java | 6 ++ .../domain/OutboundMessage.java | 91 ++++++++++++++++--- .../devicedeployer/domain/SubCommandType.java | 6 ++ .../mqtt/OutboundMessagePayload.java | 10 +- .../relational/DeployRequestEntity.java | 29 +++++- .../DeployRequestRelationalRepository.java | 8 +- .../presentation/DeployerController.java | 11 ++- .../presentation/MqttMessageHandler.java | 14 ++- .../presentation/OutboundMessageResource.java | 13 ++- .../OutboundMessageResourceConverter.java | 29 ++---- 15 files changed, 264 insertions(+), 89 deletions(-) create mode 100644 src/main/java/inc/sdt/blokworks/devicedeployer/application/BashCommand.java create mode 100644 src/main/java/inc/sdt/blokworks/devicedeployer/application/CommandInfo.java create mode 100644 src/main/java/inc/sdt/blokworks/devicedeployer/domain/DeviceType.java create mode 100644 src/main/java/inc/sdt/blokworks/devicedeployer/domain/SubCommandType.java diff --git a/src/main/java/inc/sdt/blokworks/devicedeployer/application/BashCommand.java b/src/main/java/inc/sdt/blokworks/devicedeployer/application/BashCommand.java new file mode 100644 index 0000000..31efdfc --- /dev/null +++ b/src/main/java/inc/sdt/blokworks/devicedeployer/application/BashCommand.java @@ -0,0 +1,10 @@ +package inc.sdt.blokworks.devicedeployer.application; + +import java.util.LinkedHashMap; + +public class BashCommand implements CommandInfo{ + @Override + public LinkedHashMap put() { + return null; + } +} diff --git a/src/main/java/inc/sdt/blokworks/devicedeployer/application/CommandInfo.java b/src/main/java/inc/sdt/blokworks/devicedeployer/application/CommandInfo.java new file mode 100644 index 0000000..8a04e40 --- /dev/null +++ b/src/main/java/inc/sdt/blokworks/devicedeployer/application/CommandInfo.java @@ -0,0 +1,7 @@ +package inc.sdt.blokworks.devicedeployer.application; + +import java.util.LinkedHashMap; + +public interface CommandInfo { + LinkedHashMap put(); +} 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 4289f59..cf241df 100644 --- a/src/main/java/inc/sdt/blokworks/devicedeployer/application/DefaultDeployerService.java +++ b/src/main/java/inc/sdt/blokworks/devicedeployer/application/DefaultDeployerService.java @@ -15,7 +15,6 @@ import org.springframework.data.domain.Page; import org.springframework.stereotype.Service; import reactor.core.publisher.Mono; -import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Optional; @@ -42,46 +41,47 @@ public class DefaultDeployerService implements DeployerService{ } @Override - public void publish(OutboundMessage deployMessage, String assetCode) { - log.info("[publish] deployMessage = {}, assetCode = {}", deployMessage, assetCode); - final String url = filePath + deployMessage.getFileId(); - final String deviceType = "ecn"; - HashMap cmdInfo = new HashMap<>(); - String cmdType = ""; + public void publish(OutboundMessage outboundMessage, String assetCode) { + log.info("[publish] deployMessage = {}, assetCode = {}", outboundMessage, assetCode); + final String url = filePath + outboundMessage.getFileId(); + final DeviceType deviceType = outboundMessage.getDeviceType(); + LinkedHashMap commandInfo = new LinkedHashMap<>(); + try { - /*switch (deployMessage.getCommandType()) { - case bash: - break; - case systemd: - break; - case docker: - break; - case deploy: - break; - }*/ - - if(!deployMessage.getCommand().isEmpty()) { - cmdInfo.put("cmd", deployMessage.getCommand()); - cmdInfo.put("fileUrl", url); - cmdInfo.put("fileType", "python"); - cmdType = String.valueOf(CommandType.deploy); - } - - if(!deployMessage.getEnv().isEmpty()) { - cmdInfo.put("cmd", "run"); - cmdInfo.put("image", url); - cmdInfo.put("name", deployMessage.getName()); - cmdInfo.put("options", deployMessage.getEnv()); - cmdType = String.valueOf(CommandType.docker); + switch (outboundMessage.getCommandType()) { + case bash -> commandInfo.put("cmd", outboundMessage.getCommand()); + case systemd -> { + commandInfo.put("cmd", outboundMessage.getCommand()); + commandInfo.put("service", outboundMessage.getName()); + } + case docker -> { + commandInfo.put("cmd", "run"); + commandInfo.put("appName", ""); + commandInfo.put("name", outboundMessage.getName()); + commandInfo.put("image", outboundMessage.getImage()); + commandInfo.put("options", outboundMessage.getOptions()); + } + case deploy -> { + commandInfo.put("cmd", outboundMessage.getCommand()); + commandInfo.put("appName", outboundMessage.getName()); + commandInfo.put("fileUrl", url); + commandInfo.put("fileType", outboundMessage.getFileType()); + } + case json -> { + commandInfo.put("cmd", String.valueOf(outboundMessage.getCommandType())); + commandInfo.put("appName", outboundMessage.getName()); + commandInfo.put("parameter", outboundMessage.getParameters()); + } } OutboundMessagePayload payload = new OutboundMessagePayload( - cmdInfo, - cmdType, - assetCode, + commandInfo, + outboundMessage.getCommandType(), + outboundMessage.getSubCommandType(), deviceType, - deployMessage.getRequestId() + assetCode, + outboundMessage.getRequestId() ); byte[] bytes = objectMapper.writeValueAsBytes(payload); diff --git a/src/main/java/inc/sdt/blokworks/devicedeployer/domain/CommandType.java b/src/main/java/inc/sdt/blokworks/devicedeployer/domain/CommandType.java index ee4306b..84e4fc1 100644 --- a/src/main/java/inc/sdt/blokworks/devicedeployer/domain/CommandType.java +++ b/src/main/java/inc/sdt/blokworks/devicedeployer/domain/CommandType.java @@ -4,5 +4,6 @@ public enum CommandType { bash, systemd, docker, - deploy + deploy, + json } diff --git a/src/main/java/inc/sdt/blokworks/devicedeployer/domain/DeployRequest.java b/src/main/java/inc/sdt/blokworks/devicedeployer/domain/DeployRequest.java index 59ef682..da0a0fc 100644 --- a/src/main/java/inc/sdt/blokworks/devicedeployer/domain/DeployRequest.java +++ b/src/main/java/inc/sdt/blokworks/devicedeployer/domain/DeployRequest.java @@ -5,14 +5,20 @@ public class DeployRequest { private String assetCode; private String appName; private OperationType operationType; + private DeviceType deviceType; + private CommandType commandType; + private SubCommandType subCommandType; protected DeployRequest() {} - public DeployRequest(String requestId, String assetCode, String appName, OperationType operationType) { + public DeployRequest(String requestId, String assetCode, String appName, OperationType operationType, DeviceType deviceType, CommandType commandType, SubCommandType subCommandType) { this.requestId = requestId; this.assetCode = assetCode; this.appName = appName; this.operationType = operationType; + this.deviceType = deviceType; + this.commandType = commandType; + this.subCommandType = subCommandType; } public String getRequestId() { @@ -31,13 +37,28 @@ public class DeployRequest { return operationType; } + public DeviceType getDeviceType() { + return deviceType; + } + + public CommandType getCommandType() { + return commandType; + } + + public SubCommandType getSubCommandType() { + return subCommandType; + } + @Override public String toString() { return "DeployRequest{" + "requestId='" + requestId + '\'' + ", assetCode='" + assetCode + '\'' + ", appName='" + appName + '\'' + - ", operationType='" + operationType + '\'' + + ", operationType=" + operationType + + ", deviceType=" + deviceType + + ", commandType=" + commandType + + ", subCommandType=" + subCommandType + '}'; } @@ -50,6 +71,9 @@ public class DeployRequest { private String assetCode; private String appName; private OperationType operationType; + private DeviceType deviceType; + private CommandType commandType; + private SubCommandType subCommandType; public Builder requestId(String requestId) { this.requestId = requestId; @@ -71,12 +95,30 @@ public class DeployRequest { return this; } + public Builder deviceType(DeviceType deviceType) { + this.deviceType = deviceType; + return this; + } + + public Builder commandType(CommandType commandType) { + this.commandType = commandType; + return this; + } + + public Builder subCommandType(SubCommandType subCommandType) { + this.subCommandType = subCommandType; + return this; + } + public DeployRequest build() { DeployRequest deployRequest = new DeployRequest(); deployRequest.requestId = this.requestId; deployRequest.assetCode = this.assetCode; deployRequest.appName = this.appName; deployRequest.operationType = this.operationType; + deployRequest.deviceType = this.deviceType; + deployRequest.commandType = this.commandType; + deployRequest.subCommandType = this.subCommandType; return deployRequest; } } diff --git a/src/main/java/inc/sdt/blokworks/devicedeployer/domain/DeviceType.java b/src/main/java/inc/sdt/blokworks/devicedeployer/domain/DeviceType.java new file mode 100644 index 0000000..7d4684f --- /dev/null +++ b/src/main/java/inc/sdt/blokworks/devicedeployer/domain/DeviceType.java @@ -0,0 +1,6 @@ +package inc.sdt.blokworks.devicedeployer.domain; + +public enum DeviceType { + ecn, + nodeq +} 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 617912a..a4266c6 100644 --- a/src/main/java/inc/sdt/blokworks/devicedeployer/domain/OutboundMessage.java +++ b/src/main/java/inc/sdt/blokworks/devicedeployer/domain/OutboundMessage.java @@ -4,12 +4,17 @@ import java.util.LinkedHashMap; public class OutboundMessage { private String fileId; + private String fileType; + private String appName; private String name; - private LinkedHashMap env; + private String image; + private LinkedHashMap options; private String command; private String requestId; - private String deviceType; + private DeviceType deviceType; private CommandType commandType; + private SubCommandType subCommandType; + private LinkedHashMap parameters; protected OutboundMessage() {} @@ -17,12 +22,24 @@ public class OutboundMessage { return fileId; } + public String getFileType() { + return fileType; + } + + public String getAppName() { + return appName; + } + public String getName() { return name; } - public LinkedHashMap getEnv() { - return env; + public String getImage() { + return image; + } + + public LinkedHashMap getOptions() { + return options; } public String getCommand() { @@ -37,7 +54,7 @@ public class OutboundMessage { return requestId; } - public String getDeviceType() { + public DeviceType getDeviceType() { return deviceType; } @@ -45,16 +62,29 @@ public class OutboundMessage { return commandType; } + public SubCommandType getSubCommandType() { + return subCommandType; + } + + public LinkedHashMap getParameters() { + return parameters; + } + @Override public String toString() { return "OutboundMessage{" + "fileId='" + fileId + '\'' + + ", fileType='" + fileType + '\'' + + ", appName='" + appName + '\'' + ", name='" + name + '\'' + - ", env=" + env + + ", image='" + image + '\'' + + ", options=" + options + ", command='" + command + '\'' + ", requestId='" + requestId + '\'' + - ", deviceType='" + deviceType + '\'' + + ", deviceType=" + deviceType + ", commandType=" + commandType + + ", subCommandType=" + subCommandType + + ", parameters=" + parameters + '}'; } @@ -64,25 +94,45 @@ public class OutboundMessage { public static final class Builder { private String fileId; + private String fileType; + private String appName; private String name; - private LinkedHashMap env; + private String image; + private LinkedHashMap options; private String command; private String requestId; - private String deviceType; + private DeviceType deviceType; private CommandType commandType; + private SubCommandType subCommandType; + private LinkedHashMap parameters; public Builder fileId(String fileId) { this.fileId = fileId; return this; } + public Builder fileType(String fileType) { + this.fileType = fileType; + return this; + } + + public Builder appName(String appName) { + this.appName = appName; + return this; + } + public Builder name(String name) { this.name = name; return this; } - public Builder env(LinkedHashMap env) { - this.env = env; + public Builder image(String image) { + this.image = image; + return this; + } + + public Builder options(LinkedHashMap options) { + this.options = options; return this; } @@ -96,7 +146,7 @@ public class OutboundMessage { return this; } - public Builder deviceType(String deviceType) { + public Builder deviceType(DeviceType deviceType) { this.deviceType = deviceType; return this; } @@ -106,15 +156,30 @@ public class OutboundMessage { return this; } + public Builder subCommandType(SubCommandType subCommandType) { + this.subCommandType = subCommandType; + return this; + } + + public Builder parameters(LinkedHashMap parameters) { + this.parameters = parameters; + return this; + } + public OutboundMessage build() { OutboundMessage deployMessage = new OutboundMessage(); deployMessage.fileId = this.fileId; + deployMessage.fileType = this.fileType; + deployMessage.appName = this.appName; deployMessage.name = this.name; - deployMessage.env = this.env; + deployMessage.image = this.image; + deployMessage.options = this.options; deployMessage.command = this.command; deployMessage.requestId = this.requestId; deployMessage.deviceType = this.deviceType; deployMessage.commandType = this.commandType; + deployMessage.subCommandType = this.subCommandType; + deployMessage.parameters = this.parameters; return deployMessage; } } diff --git a/src/main/java/inc/sdt/blokworks/devicedeployer/domain/SubCommandType.java b/src/main/java/inc/sdt/blokworks/devicedeployer/domain/SubCommandType.java new file mode 100644 index 0000000..cc8305f --- /dev/null +++ b/src/main/java/inc/sdt/blokworks/devicedeployer/domain/SubCommandType.java @@ -0,0 +1,6 @@ +package inc.sdt.blokworks.devicedeployer.domain; + +public enum SubCommandType { + systemd, + docker +} diff --git a/src/main/java/inc/sdt/blokworks/devicedeployer/infrastructure/mqtt/OutboundMessagePayload.java b/src/main/java/inc/sdt/blokworks/devicedeployer/infrastructure/mqtt/OutboundMessagePayload.java index dd9b02a..6650c91 100644 --- a/src/main/java/inc/sdt/blokworks/devicedeployer/infrastructure/mqtt/OutboundMessagePayload.java +++ b/src/main/java/inc/sdt/blokworks/devicedeployer/infrastructure/mqtt/OutboundMessagePayload.java @@ -1,13 +1,17 @@ package inc.sdt.blokworks.devicedeployer.infrastructure.mqtt; +import inc.sdt.blokworks.devicedeployer.domain.CommandType; +import inc.sdt.blokworks.devicedeployer.domain.DeviceType; +import inc.sdt.blokworks.devicedeployer.domain.SubCommandType; + import java.util.HashMap; public record OutboundMessagePayload( HashMap cmdInfo, - String cmdType, - + CommandType cmdType, + SubCommandType subCmdType, + DeviceType deviceType, String assetCode, - String deviceType, String requestId ) { } diff --git a/src/main/java/inc/sdt/blokworks/devicedeployer/infrastructure/relational/DeployRequestEntity.java b/src/main/java/inc/sdt/blokworks/devicedeployer/infrastructure/relational/DeployRequestEntity.java index 8359da7..f95066b 100644 --- a/src/main/java/inc/sdt/blokworks/devicedeployer/infrastructure/relational/DeployRequestEntity.java +++ b/src/main/java/inc/sdt/blokworks/devicedeployer/infrastructure/relational/DeployRequestEntity.java @@ -1,6 +1,9 @@ package inc.sdt.blokworks.devicedeployer.infrastructure.relational; +import inc.sdt.blokworks.devicedeployer.domain.CommandType; +import inc.sdt.blokworks.devicedeployer.domain.DeviceType; import inc.sdt.blokworks.devicedeployer.domain.OperationType; +import inc.sdt.blokworks.devicedeployer.domain.SubCommandType; import jakarta.persistence.*; @Entity(name = "deploy_request") @@ -18,14 +21,26 @@ public class DeployRequestEntity { @Enumerated(EnumType.STRING) @Column(name = "operation_type", length = 255) private OperationType operationType; + @Enumerated(EnumType.STRING) + @Column(name = "device_type", length = 255) + private DeviceType deviceType; + @Enumerated(EnumType.STRING) + @Column(name = "command_type", length = 255) + private CommandType commandType; + @Enumerated(EnumType.STRING) + @Column(name = "sub_command_type", length = 255) + private SubCommandType subCommandType; protected DeployRequestEntity() {} - public DeployRequestEntity(String requestId, String assetCode, String appName, OperationType operationType) { + public DeployRequestEntity(String requestId, String assetCode, String appName, OperationType operationType, DeviceType deviceType, CommandType commandType, SubCommandType subCommandType) { this.requestId = requestId; this.assetCode = assetCode; this.appName = appName; this.operationType = operationType; + this.deviceType = deviceType; + this.commandType = commandType; + this.subCommandType = subCommandType; } public String getId() { @@ -47,4 +62,16 @@ public class DeployRequestEntity { public OperationType getOperationType() { return operationType; } + + public DeviceType getDeviceType() { + return deviceType; + } + + public CommandType getCommandType() { + return commandType; + } + + public SubCommandType getSubCommandType() { + return subCommandType; + } } diff --git a/src/main/java/inc/sdt/blokworks/devicedeployer/infrastructure/relational/DeployRequestRelationalRepository.java b/src/main/java/inc/sdt/blokworks/devicedeployer/infrastructure/relational/DeployRequestRelationalRepository.java index 7db3027..c9c956d 100644 --- a/src/main/java/inc/sdt/blokworks/devicedeployer/infrastructure/relational/DeployRequestRelationalRepository.java +++ b/src/main/java/inc/sdt/blokworks/devicedeployer/infrastructure/relational/DeployRequestRelationalRepository.java @@ -39,7 +39,10 @@ public class DeployRequestRelationalRepository implements DeployRequestRepositor deployRequest.getRequestId(), deployRequest.getAssetCode(), deployRequest.getAppName(), - deployRequest.getOperationType() + deployRequest.getOperationType(), + deployRequest.getDeviceType(), + deployRequest.getCommandType(), + deployRequest.getSubCommandType() ); } @@ -49,6 +52,9 @@ public class DeployRequestRelationalRepository implements DeployRequestRepositor .assetCode(entity.getAssetCode()) .appName(entity.getAppName()) .operationType(entity.getOperationType()) + .deviceType(entity.getDeviceType()) + .commandType(entity.getCommandType()) + .subCommandType(entity.getSubCommandType()) .build(); } } 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 bd7b868..d9868eb 100644 --- a/src/main/java/inc/sdt/blokworks/devicedeployer/presentation/DeployerController.java +++ b/src/main/java/inc/sdt/blokworks/devicedeployer/presentation/DeployerController.java @@ -33,16 +33,16 @@ public class DeployerController { /** * 앱 배포 명령 * @param assetCode 자산 코드 - * @param assetAppResource 배포하려는 앱의 정보 + * @param resource 배포하려는 앱의 정보 */ @ResourceMapping(name = "Deploy_App", method = "POST", uri = "/assets/{code}/apps", description = "앱 배포 명령") @ResponseStatus(HttpStatus.CREATED) @PostMapping("/assets/{assetCode}/apps") public void deploy(@PathVariable String assetCode, - @Valid @RequestBody OutboundMessageResource assetAppResource) { - log.info("[deploy] assetCode = {}, assetAppResource = {}", assetCode, assetAppResource); + @Valid @RequestBody OutboundMessageResource resource) { + log.info("[deploy] assetCode = {}, resource = {}", assetCode, resource); String requestId = UUID.randomUUID().toString(); - OutboundMessage outboundMessage = outboundMessageResourceConverter.fromResource(assetAppResource); + OutboundMessage outboundMessage = outboundMessageResourceConverter.fromResource(resource); outboundMessage.setRequestId(requestId); DeployRequest deployRequest = DeployRequest.builder() @@ -50,6 +50,9 @@ public class DeployerController { .assetCode(assetCode) .appName(outboundMessage.getName()) .operationType(OperationType.DEPLOY) + .deviceType(resource.deviceType()) + .commandType(resource.commandType()) + .subCommandType(resource.subCommandType()) .build(); DeployRequest request = deployerService.save(deployRequest); diff --git a/src/main/java/inc/sdt/blokworks/devicedeployer/presentation/MqttMessageHandler.java b/src/main/java/inc/sdt/blokworks/devicedeployer/presentation/MqttMessageHandler.java index c929a43..b5cc8e5 100644 --- a/src/main/java/inc/sdt/blokworks/devicedeployer/presentation/MqttMessageHandler.java +++ b/src/main/java/inc/sdt/blokworks/devicedeployer/presentation/MqttMessageHandler.java @@ -34,7 +34,7 @@ public class MqttMessageHandler { void handleMessage(Message message) { log.info("[handleMessage] message={}", message); - if(!message.getPayload().contains("pid")) { + /*if(!message.getPayload().contains("pid")) { //String topic = String.valueOf(message.getHeaders().get(MqttHeaders.RECEIVED_TOPIC)); //String id = topic.split("/")[4]; @@ -54,8 +54,18 @@ public class MqttMessageHandler { processMessagePayloadConverter.convertFromByte(message.getPayload(), InboundProcessMessagePayload.class) .flatMap(processService) .subscribe(); - } + }*/ + deployMessagePayloadConverter.convertFromByte(message.getPayload(), InboundDeployMessagePayload.class) + .map(p -> new InboundDeployMessagePayload( + p.assetCode(), + p.deviceType(), + p.status(), + p.result(), + p.requestId() + )) + .flatMap(deployerService) + .subscribe(); } } 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 fc21776..4d71997 100644 --- a/src/main/java/inc/sdt/blokworks/devicedeployer/presentation/OutboundMessageResource.java +++ b/src/main/java/inc/sdt/blokworks/devicedeployer/presentation/OutboundMessageResource.java @@ -1,20 +1,25 @@ package inc.sdt.blokworks.devicedeployer.presentation; import inc.sdt.blokworks.devicedeployer.domain.CommandType; +import inc.sdt.blokworks.devicedeployer.domain.DeviceType; +import inc.sdt.blokworks.devicedeployer.domain.SubCommandType; import org.wildfly.common.annotation.NotNull; -import java.util.HashMap; import java.util.LinkedHashMap; record OutboundMessageResource( @NotNull String fileId, + String fileType, @NotNull String name, + String image, String command, - LinkedHashMap env, - String deviceType, - CommandType commandType + DeviceType deviceType, + CommandType commandType, + SubCommandType subCommandType, + LinkedHashMap options, + LinkedHashMap parameters ) { } 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 6fb77f2..243eff8 100644 --- a/src/main/java/inc/sdt/blokworks/devicedeployer/presentation/OutboundMessageResourceConverter.java +++ b/src/main/java/inc/sdt/blokworks/devicedeployer/presentation/OutboundMessageResourceConverter.java @@ -1,44 +1,27 @@ package inc.sdt.blokworks.devicedeployer.presentation; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; import inc.sdt.blokworks.devicedeployer.domain.CommandType; +import inc.sdt.blokworks.devicedeployer.domain.DeviceType; import inc.sdt.blokworks.devicedeployer.domain.OutboundMessage; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; -import java.io.IOException; import java.util.*; @Component public class OutboundMessageResourceConverter { - private final ObjectMapper objectMapper; - - public OutboundMessageResourceConverter() { - this.objectMapper = new ObjectMapper(); - } - public OutboundMessage fromResource(OutboundMessageResource resource) { - //final Map cmdInfo = resource.env().isEmpty() ? new HashMap<>() : convertToMap(resource.env()); - return OutboundMessage.builder() .fileId(resource.fileId()) + .fileType(resource.fileType()) .name(resource.name()) + .image(resource.image() == null ? "" : resource.image()) .command(resource.command()) - .env(resource.env() != null ? resource.env() : new LinkedHashMap<>()) - .deviceType(resource.deviceType()) + .options(resource.options() == null ? new LinkedHashMap<>() : resource.options()) + .deviceType(resource.deviceType() == null ? DeviceType.ecn : resource.deviceType()) .commandType(resource.commandType() == null ? CommandType.deploy : resource.commandType()) + .parameters(resource.parameters() == null ? new LinkedHashMap<>() : resource.parameters()) .build(); } - private Map convertToMap(String env) { - try { - return objectMapper.readValue(env, new TypeReference<>() {}); - }catch (IOException e) { - throw new IllegalArgumentException(); - } - } - }