diff --git a/nex-be/src/main/java/com/unisinsight/project/controller/NetworkManageController.java b/nex-be/src/main/java/com/unisinsight/project/controller/NetworkManageController.java index b7bbb94..0ff4e12 100644 --- a/nex-be/src/main/java/com/unisinsight/project/controller/NetworkManageController.java +++ b/nex-be/src/main/java/com/unisinsight/project/controller/NetworkManageController.java @@ -2,6 +2,7 @@ package com.unisinsight.project.controller; import com.unisinsight.project.entity.dao.NetworkManage; +import com.unisinsight.project.entity.dto.BridgeInterfaceDTO; import com.unisinsight.project.entity.req.NetworkManagePageReq; import com.unisinsight.project.entity.req.NetworkManageReq; import com.unisinsight.project.entity.res.PageResult; @@ -14,6 +15,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.validation.Valid; +import java.util.List; /** * 存储池管理 @@ -62,5 +64,10 @@ public class NetworkManageController { return Result.successResult(networkManageService.synchData()); } + @ApiOperation(value = "获取桥接接口列表") + @GetMapping("/bridge-interfaces") + public Result> getBridgeInterfaces() { + return Result.successResult(networkManageService.getBridgeInterfaces()); + } } diff --git a/nex-be/src/main/java/com/unisinsight/project/entity/dto/BridgeInterfaceDTO.java b/nex-be/src/main/java/com/unisinsight/project/entity/dto/BridgeInterfaceDTO.java new file mode 100644 index 0000000..03c6625 --- /dev/null +++ b/nex-be/src/main/java/com/unisinsight/project/entity/dto/BridgeInterfaceDTO.java @@ -0,0 +1,34 @@ +package com.unisinsight.project.entity.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * 网络桥接接口信息DTO + */ +@Data +@ApiModel(description = "网络桥接接口信息") +public class BridgeInterfaceDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "接口名称") + private String name; + + @ApiModelProperty(value = "接口状态") + private String status; + + @ApiModelProperty(value = "接口标志") + private String flags; + + public BridgeInterfaceDTO() {} + + public BridgeInterfaceDTO(String name, String status, String flags) { + this.name = name; + this.status = status; + this.flags = flags; + } +} diff --git a/nex-be/src/main/java/com/unisinsight/project/feign/ExternalApiClient.java b/nex-be/src/main/java/com/unisinsight/project/feign/ExternalApiClient.java index 2b1ad63..e92251e 100644 --- a/nex-be/src/main/java/com/unisinsight/project/feign/ExternalApiClient.java +++ b/nex-be/src/main/java/com/unisinsight/project/feign/ExternalApiClient.java @@ -1,11 +1,7 @@ package com.unisinsight.project.feign; import com.unisinsight.project.config.FeignConfig; -import com.unisinsight.project.entity.dto.ApiResponse; -import com.unisinsight.project.entity.dto.Network; -import com.unisinsight.project.entity.dto.NetworkData; -import com.unisinsight.project.entity.dto.StoragePoolData; -import com.unisinsight.project.entity.dto.VmInfoDTO; +import com.unisinsight.project.entity.dto.*; import com.unisinsight.project.entity.req.*; import com.unisinsight.project.entity.res.ImageStatusRes; import org.springframework.cloud.openfeign.FeignClient; @@ -91,4 +87,8 @@ public interface ExternalApiClient { ApiResponse removeIso(@RequestBody ImageOperationReq operationReq); @PostMapping("/api/v1/vm/attach-iso") ApiResponse attachIso(@RequestBody ImageOperationIsoReq operationReq); + + @GetMapping("/api/v1/network/bridge-interfaces") + ApiResponse> getBridgeInterfaces(); + } diff --git a/nex-be/src/main/java/com/unisinsight/project/service/NetworkManageService.java b/nex-be/src/main/java/com/unisinsight/project/service/NetworkManageService.java index ef6b2d1..848993a 100644 --- a/nex-be/src/main/java/com/unisinsight/project/service/NetworkManageService.java +++ b/nex-be/src/main/java/com/unisinsight/project/service/NetworkManageService.java @@ -2,6 +2,7 @@ package com.unisinsight.project.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.unisinsight.project.entity.dao.NetworkManage; +import com.unisinsight.project.entity.dto.BridgeInterfaceDTO; import com.unisinsight.project.entity.req.NetworkManagePageReq; import com.unisinsight.project.entity.req.NetworkManageReq; import com.unisinsight.project.entity.res.PageResult; @@ -63,4 +64,6 @@ public interface NetworkManageService { PageResult pageNetworkManages(NetworkManagePageReq networkManagePageReq); String synchData(); + + List getBridgeInterfaces(); } diff --git a/nex-be/src/main/java/com/unisinsight/project/service/impl/NetworkManageServiceImpl.java b/nex-be/src/main/java/com/unisinsight/project/service/impl/NetworkManageServiceImpl.java index ba6690c..aa68ad3 100644 --- a/nex-be/src/main/java/com/unisinsight/project/service/impl/NetworkManageServiceImpl.java +++ b/nex-be/src/main/java/com/unisinsight/project/service/impl/NetworkManageServiceImpl.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.unisinsight.project.entity.dao.NetworkManage; import com.unisinsight.project.entity.dto.ApiResponse; +import com.unisinsight.project.entity.dto.BridgeInterfaceDTO; import com.unisinsight.project.entity.dto.Network; import com.unisinsight.project.entity.dto.NetworkData; import com.unisinsight.project.entity.req.NetworkManagePageReq; @@ -390,4 +391,20 @@ public class NetworkManageServiceImpl extends ServiceImpl getBridgeInterfaces() { + try { + ApiResponse> response = client.getBridgeInterfaces(); + if (!"200".equals(response.getCode())) { + throw new BusinessException("调用外部接口失败: " + response.getMessage()); + } + // 只返回状态为"up"的接口 + return response.getData().stream() + .filter(interfaceDTO -> "up".equals(interfaceDTO.getStatus())) + .collect(Collectors.toList()); + } catch (Exception e) { + throw new BusinessException("调用外部接口失败: " + e.getMessage()); + } + } }