diff --git a/src/main/java/AIWA/McpBackend/controller/api/dto/vpc/VpcTotalResponseDto.java b/src/main/java/AIWA/McpBackend/controller/api/dto/vpc/VpcTotalResponseDto.java index 23b9dfa..8f11082 100644 --- a/src/main/java/AIWA/McpBackend/controller/api/dto/vpc/VpcTotalResponseDto.java +++ b/src/main/java/AIWA/McpBackend/controller/api/dto/vpc/VpcTotalResponseDto.java @@ -11,14 +11,14 @@ @Getter public class VpcTotalResponseDto { private String vpcId; - private List tags; + private String vpcName; private List subnets; private List routingTables; // Constructor, Getter, Setter - public VpcTotalResponseDto(String vpcId, List tags, List subnets, List routingTables) { + public VpcTotalResponseDto(String vpcId, String vpcName, List subnets, List routingTables) { this.vpcId = vpcId; - this.tags = tags; + this.vpcName = vpcName; this.subnets = subnets; this.routingTables = routingTables; } diff --git a/src/main/java/AIWA/McpBackend/service/gcp/GcpResourceService.java b/src/main/java/AIWA/McpBackend/service/gcp/GcpResourceService.java index 7c720e5..945a4c2 100644 --- a/src/main/java/AIWA/McpBackend/service/gcp/GcpResourceService.java +++ b/src/main/java/AIWA/McpBackend/service/gcp/GcpResourceService.java @@ -184,8 +184,6 @@ public ListResult listSubnets(String projectId, String userId } } - // VPC 정보와 서브넷 및 라우팅 테이블 조회 - // VPC 정보와 서브넷 및 라우팅 테이블 조회 public ResponseEntity listVpcsWithDetails(String projectId, String userId) { List vpcList = new ArrayList<>(); @@ -208,15 +206,15 @@ public ResponseEntity listVpcsWithDetails(String projectId, String userId) { // 페이징된 네트워크 목록을 순회 for (Network network : response.iterateAll()) { - // VPC ID 추출 - String vpcId = String.valueOf(network.getId()); // Network 객체에서 ID는 long 타입일 수 있으므로 문자열로 변환 + // VPC 이름 추출 + String vpcName = network.getName(); // VPC의 이름을 가져옴 - // VPC에 관련된 태그를 처리하기 위한 방법 - // VPC 태그 정보가 네트워크 객체에 포함되지 않으면 다른 방법을 사용해야 할 수 있음 - List tags = new ArrayList<>(); // 태그 정보는 네트워크 리소스에서 별도로 처리할 수 있음. + // VPC ID (optional) + String vpcId = String.valueOf(network.getId()); // ID는 long 타입일 수 있으므로 문자열로 변환 - // SubnetworksClient를 사용하여 서브넷 목록 조회 + // VPC와 연관된 서브넷 목록 조회 List subnets = new ArrayList<>(); + List cidrBlocks = new ArrayList<>(); try (SubnetworksClient subnetworksClient = SubnetworksClient.create(SubnetworksSettings.newBuilder() .setCredentialsProvider(FixedCredentialsProvider.create(credentials)) .build())) { @@ -227,7 +225,11 @@ public ResponseEntity listVpcsWithDetails(String projectId, String userId) { projectId, region); for (Subnetwork subnetwork : subnetworkResponse.iterateAll()) { - subnets.add(subnetwork.getName()); + // 서브넷의 VPC를 확인하여 해당 VPC에 속한 서브넷만 추가 + if (subnetwork.getNetwork().contains(network.getSelfLink())) { + subnets.add(subnetwork.getName()); + cidrBlocks.add(subnetwork.getIpCidrRange()); + } } } @@ -247,8 +249,8 @@ public ResponseEntity listVpcsWithDetails(String projectId, String userId) { } } - // VPC 정보 DTO 생성 - VpcTotalResponseDto vpcDto = new VpcTotalResponseDto(vpcId, tags, subnets, routingTables); + // VPC 정보 DTO 생성 (이제 이름도 포함) + VpcTotalResponseDto vpcDto = new VpcTotalResponseDto(vpcId, vpcName, subnets, routingTables); vpcList.add(vpcDto); } @@ -263,6 +265,7 @@ public ResponseEntity listVpcsWithDetails(String projectId, String userId) { } + //static ip 조회 public List getStaticIpsFromGCP(String projectId, String userId) { String region = "asia-northeast3";