diff --git a/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/DevOpsDetectApi.java b/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/DevOpsDetectApi.java new file mode 100644 index 000000000..b10a8b6b6 --- /dev/null +++ b/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/DevOpsDetectApi.java @@ -0,0 +1,22 @@ +package cn.stylefeng.roses.kernel.scanner.api; + +import cn.stylefeng.roses.kernel.scanner.api.pojo.devops.DevOpsReportResourceParam; + +/** + * 检测是否运维平台本地化部署的API + * + * @author fengshuonan + * @date 2022/10/17 23:54 + */ +public interface DevOpsDetectApi { + + /** + * 本地化上报资源到运维平台 + * + * @param devOpsReportResourceParam 上报时候的参数,里边包括了所有当前项目资源 + * @author fengshuonan + * @date 2022/10/17 23:56 + */ + void saveResource(DevOpsReportResourceParam devOpsReportResourceParam); + +} diff --git a/kernel-d-scanner/scanner-sdk-scanner/src/main/java/cn/stylefeng/roses/kernel/scanner/DevOpsReportImpl.java b/kernel-d-scanner/scanner-sdk-scanner/src/main/java/cn/stylefeng/roses/kernel/scanner/devops/DefaultDevOpsReportImpl.java similarity index 96% rename from kernel-d-scanner/scanner-sdk-scanner/src/main/java/cn/stylefeng/roses/kernel/scanner/DevOpsReportImpl.java rename to kernel-d-scanner/scanner-sdk-scanner/src/main/java/cn/stylefeng/roses/kernel/scanner/devops/DefaultDevOpsReportImpl.java index fb3cd5d31..f0b0cad6e 100644 --- a/kernel-d-scanner/scanner-sdk-scanner/src/main/java/cn/stylefeng/roses/kernel/scanner/DevOpsReportImpl.java +++ b/kernel-d-scanner/scanner-sdk-scanner/src/main/java/cn/stylefeng/roses/kernel/scanner/devops/DefaultDevOpsReportImpl.java @@ -1,4 +1,4 @@ -package cn.stylefeng.roses.kernel.scanner; +package cn.stylefeng.roses.kernel.scanner.devops; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; @@ -28,7 +28,7 @@ import static cn.stylefeng.roses.kernel.scanner.api.constants.ScannerConstants.* * @author fengshuonan * @date 2022/4/2 14:38 */ -public class DevOpsReportImpl implements DevOpsReportApi { +public class DefaultDevOpsReportImpl implements DevOpsReportApi { @Override public void reportResources(DevOpsReportProperties devOpsReportProperties, List sysResourcePersistencePojoList) { diff --git a/kernel-d-scanner/scanner-sdk-scanner/src/main/java/cn/stylefeng/roses/kernel/scanner/devops/LocalizedDevOpsReportImpl.java b/kernel-d-scanner/scanner-sdk-scanner/src/main/java/cn/stylefeng/roses/kernel/scanner/devops/LocalizedDevOpsReportImpl.java new file mode 100644 index 000000000..d790b00db --- /dev/null +++ b/kernel-d-scanner/scanner-sdk-scanner/src/main/java/cn/stylefeng/roses/kernel/scanner/devops/LocalizedDevOpsReportImpl.java @@ -0,0 +1,34 @@ +package cn.stylefeng.roses.kernel.scanner.devops; + +import cn.stylefeng.roses.kernel.scanner.api.DevOpsDetectApi; +import cn.stylefeng.roses.kernel.scanner.api.DevOpsReportApi; +import cn.stylefeng.roses.kernel.scanner.api.pojo.devops.DevOpsReportProperties; +import cn.stylefeng.roses.kernel.scanner.api.pojo.devops.DevOpsReportResourceParam; +import cn.stylefeng.roses.kernel.scanner.api.pojo.resource.SysResourcePersistencePojo; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 新的方式向devops平台汇报资源,通过本地化集成devops平台 + * + * @author fengshuonan + * @date 2022/10/18 0:04 + */ +public class LocalizedDevOpsReportImpl implements DevOpsReportApi { + + @Resource + private DevOpsDetectApi devOpsDetectApi; + + @Override + public void reportResources(DevOpsReportProperties devOpsReportProperties, List sysResourcePersistencePojoList) { + + // 组装请求参数 + DevOpsReportResourceParam devOpsReportResourceParam = new DevOpsReportResourceParam( + devOpsReportProperties.getProjectUniqueCode(), null, sysResourcePersistencePojoList, devOpsReportProperties.getFieldMetadataClassPath()); + + // 进行post请求,汇报资源 + devOpsDetectApi.saveResource(devOpsReportResourceParam); + } + +} diff --git a/kernel-d-scanner/scanner-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/scanner/starter/GunsResourceAutoConfiguration.java b/kernel-d-scanner/scanner-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/scanner/starter/GunsResourceAutoConfiguration.java index fbd8c24c3..ad850b257 100644 --- a/kernel-d-scanner/scanner-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/scanner/starter/GunsResourceAutoConfiguration.java +++ b/kernel-d-scanner/scanner-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/scanner/starter/GunsResourceAutoConfiguration.java @@ -27,12 +27,14 @@ package cn.stylefeng.roses.kernel.scanner.starter; import cn.hutool.core.util.StrUtil; import cn.stylefeng.roses.kernel.scanner.ApiResourceScanner; import cn.stylefeng.roses.kernel.scanner.DefaultResourceCollector; -import cn.stylefeng.roses.kernel.scanner.DevOpsReportImpl; -import cn.stylefeng.roses.kernel.scanner.api.DevOpsReportApi; +import cn.stylefeng.roses.kernel.scanner.api.DevOpsDetectApi; import cn.stylefeng.roses.kernel.scanner.api.ResourceCollectorApi; import cn.stylefeng.roses.kernel.scanner.api.pojo.devops.DevOpsReportProperties; import cn.stylefeng.roses.kernel.scanner.api.pojo.scanner.ScannerProperties; +import cn.stylefeng.roses.kernel.scanner.devops.DefaultDevOpsReportImpl; +import cn.stylefeng.roses.kernel.scanner.devops.LocalizedDevOpsReportImpl; import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.ConfigurationProperties; @@ -115,14 +117,27 @@ public class GunsResourceAutoConfiguration { } /** - * 向DevOps平台汇报资源 + * 向DevOps平台汇报资源,传统方式,远程资源汇报 * * @author fengshuonan * @date 2022/4/2 14:41 */ @Bean - public DevOpsReportApi devOpsReportApi() { - return new DevOpsReportImpl(); + @ConditionalOnMissingBean(DevOpsDetectApi.class) + public DefaultDevOpsReportImpl defaultDevOpsReport() { + return new DefaultDevOpsReportImpl(); + } + + /** + * 向DevOps平台汇报资源,新方式,本地化集成运维平台 + * + * @author fengshuonan + * @date 2022/10/18 0:03 + */ + @Bean + @ConditionalOnBean(DevOpsDetectApi.class) + public LocalizedDevOpsReportImpl localizedDevOpsReport() { + return new LocalizedDevOpsReportImpl(); } }