From 2a558642e63720361aded80f8f7aa60da793e239 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8C=E1=85=A1=E1=86=BC=E1=84=89=E1=85=A5=E1=86=AB?= =?UTF-8?q?=E1=84=8B=E1=85=A2?= Date: Mon, 11 Sep 2023 17:55:54 +0900 Subject: [PATCH] =?UTF-8?q?1.=20Tube=20on/off=20=EC=A0=9C=EC=96=B4=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=20=EC=88=98=EC=A0=95=202.=20=EB=B2=84?= =?UTF-8?q?=EC=A0=84=20=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 2 +- k8s/command/docker-build-push.sh | 4 +- .../application/DefaultTubeService.java | 69 ++++++++----------- .../domain/DeployRequest.java | 17 ++++- .../presentation/TubeController.java | 4 +- 5 files changed, 50 insertions(+), 46 deletions(-) diff --git a/build.gradle b/build.gradle index 61510e6..2dfad4b 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ plugins { } group = 'inc.sdt.controlcentermanagement' -version = '0.0.4' +version = '0.0.5' java { sourceCompatibility = '17' diff --git a/k8s/command/docker-build-push.sh b/k8s/command/docker-build-push.sh index a267960..b7eacbd 100644 --- a/k8s/command/docker-build-push.sh +++ b/k8s/command/docker-build-push.sh @@ -1,4 +1,4 @@ aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin 003960268191.dkr.ecr.ap-northeast-2.amazonaws.com docker build --platform linux/amd64 -t control-center-management ../../ -docker tag control-center-management:latest 003960268191.dkr.ecr.ap-northeast-2.amazonaws.com/sdt-cloud/control-center-management:0.0.4 -docker push 003960268191.dkr.ecr.ap-northeast-2.amazonaws.com/sdt-cloud/control-center-management:0.0.4 \ No newline at end of file +docker tag control-center-management:latest 003960268191.dkr.ecr.ap-northeast-2.amazonaws.com/sdt-cloud/control-center-management:0.0.5 +docker push 003960268191.dkr.ecr.ap-northeast-2.amazonaws.com/sdt-cloud/control-center-management:0.0.5 \ No newline at end of file diff --git a/src/main/java/inc/sdt/controlcentermanagement/application/DefaultTubeService.java b/src/main/java/inc/sdt/controlcentermanagement/application/DefaultTubeService.java index 8fc5963..d7be73b 100644 --- a/src/main/java/inc/sdt/controlcentermanagement/application/DefaultTubeService.java +++ b/src/main/java/inc/sdt/controlcentermanagement/application/DefaultTubeService.java @@ -9,10 +9,7 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.web.util.UriComponentsBuilder; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** * @author sunae.jang (sa.jang@sdt.inc) @@ -44,57 +41,51 @@ class DefaultTubeService implements TubeService { } @Override - public void controlByTubeCode(String authorization, Slot request) { - log.info("[controlByTubeCode] request: {}", request); + public void controlByTubeCode(String authorization, Slot slot) { + log.info("[controlByTubeCode] slot: {}", slot); Map tubeMap = new LinkedHashMap<>(); - for (Tube tube : request.getTube()) { + Slot request = this.get(slot.getChamberNumber(), slot.getTube().get(0).getSlotNumber()); // TODO: 현재 단건 컨트롤, 추후 변경 필요 + for (Tube tube : slot.getTube()) { Map tubeOffsetMap = this.tubeOffset(); - int tubeOffset = tubeOffsetMap.getOrDefault(tube.getSlotNumber(), 1); - int tubeKey = Integer.parseInt(tube.getCode()) + tubeOffset; - tubeMap.put(String.valueOf(tubeKey), String.valueOf(request.getCommand().ordinal())); + int tubeOffset = tubeOffsetMap.getOrDefault(request.getSlotNumber(), 1); + int tubeKey = Integer.parseInt(request.getTube().get(Integer.parseInt(tube.getCode())).getCode()) + tubeOffset; + tubeMap.put(String.valueOf(tubeKey), String.valueOf(slot.getCommand().ordinal())); } DeployRequest deployRequest = DeployRequest.builder() - .assetCode(request.getAssetCode()) - .appName("awx_collector") + .assetCode(slot.getAssetCode()) + .appName("awx_collector") // TODO: appName 픽스되면 수정 필요 .commandType(CommandType.JSON) + .fileName("config.json") .parameters(tubeMap) .build(); - this.invokeDeployer(request.getAssetCode(), authorization, deployRequest); + log.info("deployRequest: {}", deployRequest); + this.invokeDeployer(slot.getAssetCode(), authorization, deployRequest); } @Override public void controlAll(String authorization, List slots, Command command) { log.info("[controlAll] chamberNumber: {}, command: {}", slots.get(0).getChamberNumber(), command); - - Map>> resultMap = new LinkedHashMap<>(); + Set assets = new HashSet<>(); for (Slot slot : slots) { - String assetCode = slot.getAssetCode(); - String slotNumber = slot.getSlotNumber(); - List tubes = slot.getTube(); - - Map> assetMap = resultMap.computeIfAbsent(assetCode, k -> new HashMap<>()); - Map slotMap = assetMap.computeIfAbsent(slotNumber, k -> new HashMap<>()); - - for (Tube tube : tubes) { - Map tubeOffsetMap = this.tubeOffset(); - int tubeOffset = tubeOffsetMap.getOrDefault(slotNumber, 1); - int offsetResult = Integer.parseInt(tube.getCode()) + tubeOffset; - slotMap.put(String.valueOf(offsetResult), String.valueOf(command.ordinal())); - } + assets.add(slot.getAssetCode()); } - - resultMap.forEach((assetCode, slot) -> slot.forEach((slotNumber, tube) -> { - DeployRequest deployRequest = DeployRequest.builder() - .assetCode(assetCode) - .appName("awx_collector") - .commandType(CommandType.JSON) - .parameters(tube) - .build(); - - this.invokeDeployer(assetCode, authorization, deployRequest); - })); + assets.forEach(assetCode -> { + Map parameterMap = new LinkedHashMap<>(); + parameterMap.put("total", String.valueOf(command.ordinal())); + for (int i = 1; i <= 2; i++) { + DeployRequest deployRequest = DeployRequest.builder() + .assetCode(assetCode) + .appName("awx_collector") // TODO + .commandType(CommandType.JSON) + .fileName("config.json") + .parameters(parameterMap) + .build(); + log.info("deployRequest: {}", deployRequest); + this.invokeDeployer(assetCode, authorization, deployRequest); + } + }); } @Override diff --git a/src/main/java/inc/sdt/controlcentermanagement/domain/DeployRequest.java b/src/main/java/inc/sdt/controlcentermanagement/domain/DeployRequest.java index 89d80fb..33cfb31 100644 --- a/src/main/java/inc/sdt/controlcentermanagement/domain/DeployRequest.java +++ b/src/main/java/inc/sdt/controlcentermanagement/domain/DeployRequest.java @@ -9,13 +9,15 @@ public class DeployRequest { private String assetCode; private String appName; private String commandType; + private String fileName; private String name; private Map parameters; - public DeployRequest(String assetCode, String appName, String commandType, String name, Map parameters) { + public DeployRequest(String assetCode, String appName, String commandType, String fileName, String name, Map parameters) { this.assetCode = assetCode; this.appName = appName; this.commandType = commandType; + this.fileName = fileName; this.name = name; this.parameters = parameters; } @@ -37,6 +39,10 @@ public class DeployRequest { return commandType; } + public String getFileName() { + return fileName; + } + public String getName() { return name; } @@ -51,6 +57,7 @@ public class DeployRequest { "assetCode='" + assetCode + '\'' + ", appName='" + appName + '\'' + ", commandType='" + commandType + '\'' + + ", fileName='" + fileName + '\'' + ", name='" + name + '\'' + ", parameters=" + parameters + '}'; @@ -61,6 +68,7 @@ public class DeployRequest { private String appName; private String commandType; private String name; + private String fileName; private Map parameters; private Builder() { @@ -86,13 +94,18 @@ public class DeployRequest { return this; } + public Builder fileName(String fileName) { + this.fileName = fileName; + return this; + } + public Builder parameters(Map parameters) { this.parameters = parameters; return this; } public DeployRequest build() { - return new DeployRequest(assetCode, appName, commandType, name, parameters); + return new DeployRequest(assetCode, appName, commandType, name, fileName, parameters); } } } diff --git a/src/main/java/inc/sdt/controlcentermanagement/presentation/TubeController.java b/src/main/java/inc/sdt/controlcentermanagement/presentation/TubeController.java index 2f2eab0..e038d04 100644 --- a/src/main/java/inc/sdt/controlcentermanagement/presentation/TubeController.java +++ b/src/main/java/inc/sdt/controlcentermanagement/presentation/TubeController.java @@ -30,12 +30,12 @@ public class TubeController { @PatchMapping("/chambers/{chamberNumber}/tube/toggle") public void toggle(@RequestHeader("Authorization") String authorization, @PathVariable String chamberNumber, @RequestBody Slot slot) { log.info("[toggle] chamberNumber: {}, slot: {}", chamberNumber, slot); - List slots = tubeService.get(chamberNumber); - if (slots.isEmpty()) throw new NoSuchElementException(chamberNumber); slot.setChamberNumber(chamberNumber); if (slot.getTube() != null) { tubeService.controlByTubeCode(authorization, slot); } else { + List slots = tubeService.get(chamberNumber); + if (slots.isEmpty()) throw new NoSuchElementException(chamberNumber); tubeService.controlAll(authorization, slots, slot.getCommand()); } }