From 047adc8358048267aab77a12041077ab40a0a1dd Mon Sep 17 00:00:00 2001 From: "semin.baek" Date: Thu, 5 Jun 2025 14:41:31 +0900 Subject: [PATCH] =?UTF-8?q?DfxAgent=20=EC=84=A4=EC=A0=95=20=EB=B0=8F=20?= =?UTF-8?q?=ED=99=98=EA=B2=BD=20=EC=A0=90=EA=B2=80=20=20-=20postman,=20dro?= =?UTF-8?q?pbox=20=EC=84=A4=EC=A0=95=20=EC=A0=90=EA=B2=80=20=EA=B0=95?= =?UTF-8?q?=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/bsmlab/dfx/agent/DfxAgentRunner.java | 73 ++++++++++++++++++- 1 file changed, 69 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/bsmlab/dfx/agent/DfxAgentRunner.java b/src/main/java/com/bsmlab/dfx/agent/DfxAgentRunner.java index b75ae9f..9024007 100644 --- a/src/main/java/com/bsmlab/dfx/agent/DfxAgentRunner.java +++ b/src/main/java/com/bsmlab/dfx/agent/DfxAgentRunner.java @@ -22,6 +22,7 @@ import org.springframework.web.client.RestTemplate; import javax.sql.DataSource; import java.sql.Connection; import java.sql.SQLException; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; @@ -83,7 +84,9 @@ public class DfxAgentRunner implements ApplicationRunner { this.print("상대 agent 설정 점검"); List knownAgentList = agentConfigReader.getAgentConfigDto().getKnownAgentList(); if(knownAgentList != null && !knownAgentList.isEmpty()) { + Map knownAgentMap = new HashMap<>(); for(AgentConfigDto.KnownAgent knownAgent : knownAgentList) { + knownAgentMap.put(knownAgent.getHostId(), knownAgent); try { String messageUuid = UUID.randomUUID().toString(); CommandDto commandDto = CommandDto.builder().commandType(CommandDto.CommandType.ALIVE).messageUuid(messageUuid).build(); @@ -99,25 +102,87 @@ public class DfxAgentRunner implements ApplicationRunner { ackDto = objectMapper.readValue(response, new TypeReference() {}); if(AckDto.ResultType.PROCESS_SUCCESS == ackDto.getResult()) { this.print("상대 agent " + knownAgent.getHostId() + "(" + knownAgent.getHostName() + "가 정상 동작합니다."); + commandDto.setCommandType(CommandDto.CommandType.INFORMATION); + bodyEntity = new HttpEntity<>(commandDto, httpHeaders); + this.print("상대 agent " + knownAgent.getHostId() + "(" + knownAgent.getHostName() + ":" + knownAgent.getListenPort() + ") DropBox 점검"); + response = restTemplate.postForObject(url, bodyEntity, String.class); + ackDto = objectMapper.readValue(response, new TypeReference() {}); + AgentConfigDto knownAgentConfigDto = objectMapper.readValue(ackDto.getResultText(), new TypeReference() {}); + List knownAgentDropBoxList = knownAgentConfigDto.getDropBoxConfig().getDropBoxList(); + if(knownAgent.getDropBoxIdList() != null) { + if(knownAgentDropBoxList != null) { + for(String dropBoxId : knownAgent.getDropBoxIdList()) { + boolean isHasDropBoxId = false; + for(AgentConfigDto.DropBox knwonAgentDropBox : knownAgentDropBoxList) { + if(dropBoxId.equals(knwonAgentDropBox.getDropBoxId())) { + isHasDropBoxId = true; + } + } + if(!isHasDropBoxId) { + this.print("DropBoxId " + dropBoxId + "에 해당하는 상대 agent " + knownAgent.getHostId() + "(" + knownAgent.getHostName() + ")의 DropBoxId가 존재하지 않습니다."); + isValid = false; + } + } + } + else { + this.print("상대 agent " + knownAgent.getHostId() + "(" + knownAgent.getHostName() + ")의 DropBox 설정이 존재하지 않습니다."); + isValid = false; + } + } } else { - this.print("상대 agent " + knownAgent.getHostId() + "(" + knownAgent.getHostName() + "가 응답하였으나 정상 동작하지 않습니다."); + this.print("상대 agent " + knownAgent.getHostId() + "(" + knownAgent.getHostName() + ")가 응답하였으나 정상 동작하지 않습니다."); isValid = false; } } catch (JsonProcessingException e) { - this.print("상대 agent " + knownAgent.getHostId() + "(" + knownAgent.getHostName() + "가 응답메시지가 정상적이지 않습니다. (" + e.getLocalizedMessage() + ")"); + this.print("상대 agent " + knownAgent.getHostId() + "(" + knownAgent.getHostName() + ")가 응답메시지가 정상적이지 않습니다. (" + e.getLocalizedMessage() + ")"); isValid = false; } catch (ResourceAccessException e) { - this.print("상대 agent " + knownAgent.getHostId() + "(" + knownAgent.getHostName() + "가 응답하지 않습니다. (" + e.getLocalizedMessage() + ")"); + this.print("상대 agent " + knownAgent.getHostId() + "(" + knownAgent.getHostName() + ")가 응답하지 않습니다. (" + e.getLocalizedMessage() + ")"); isValid = false; } catch (Exception e) { - this.print("상대 agent " + knownAgent.getHostId() + "(" + knownAgent.getHostName() + "상태를 알 수 없습니다. (" + e.getLocalizedMessage() + ")"); + this.print("상대 agent " + knownAgent.getHostId() + "(" + knownAgent.getHostName() + ") 상태를 알 수 없습니다. (" + e.getLocalizedMessage() + ")"); isValid = false; } } + + this.print(""); + this.print("Postman 설정 점검"); + if(agentConfigReader.getAgentConfigDto().getPostmanConfig() != null) { + this.print("Postman thread pool size: " + agentConfigReader.getAgentConfigDto().getPostmanConfig().getThreadPoolSize()); + List postManList = agentConfigReader.getAgentConfigDto().getPostmanConfig().getPostmanList(); + if(postManList != null) { + for(AgentConfigDto.Postman postman : postManList) { + AgentConfigDto.KnownAgent knownAgent = knownAgentMap.get(postman.getRecipientHostId()); + if(knownAgent != null) { + boolean isHasDropBoxId = false; + for(String knownAgentDropBoxId : knownAgent.getDropBoxIdList()) { + if(postman.getRecipientDropBoxId().equals(knownAgentDropBoxId)) { + isHasDropBoxId = true; + } + } + if(!isHasDropBoxId) { + this.print("postman " + postman.getPostmanId() + "에 대한 recipientDropBoxId(" + postman.getRecipientDropBoxId() + ")가 knownAgent(" + knownAgent.getHostId() + ") dropBoxIdList 목록에 존재하지 않습니다."); + isValid = false; + } + } + else { + this.print("postman " + postman.getPostmanId() + "에 대한 recipientHostId(" + postman.getRecipientHostId() + ")가 knownAgent 목록에 존재하지 않습니다."); + isValid = false; + } + } + } + else { + this.print("Postman 목록 없음"); + } + } + else { + this.print("Postman 설정 없음"); + isValid = false; + } } else { this.print("상대 agent 설정은 포함되어 있지 않습니다.");