From dc0c56f1cb229a3e129f103e4d77278ebe746e44 Mon Sep 17 00:00:00 2001 From: guyuliang Date: Fri, 30 Aug 2024 15:12:34 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=A9=E7=BF=BC=E4=BA=91=E5=AE=B9=E5=99=A8?= =?UTF-8?q?=E9=9B=86=E7=BE=A4=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/model/ContarinerClusterModel.java | 13 +++++ .../plugin/domain/model/TianyiSyncModel.java | 1 + .../common/TianyiLocationProvider.java | 13 +++++ .../TianYiContainerClusterProvider.java | 54 +++++++++++++++++++ .../ContainerClusterConvertor.java | 31 +++++++++++ 5 files changed, 112 insertions(+) create mode 100644 bocloud.ctstack.plugin/src/main/java/com/bocloud/ctstack/plugin/domain/model/ContarinerClusterModel.java create mode 100644 bocloud.ctstack.plugin/src/main/java/com/bocloud/ctstack/plugin/provider/container/TianYiContainerClusterProvider.java create mode 100644 bocloud.ctstack.plugin/src/main/java/com/bocloud/ctstack/plugin/provider/tianyiconvertor/ContainerClusterConvertor.java diff --git a/bocloud.ctstack.plugin/src/main/java/com/bocloud/ctstack/plugin/domain/model/ContarinerClusterModel.java b/bocloud.ctstack.plugin/src/main/java/com/bocloud/ctstack/plugin/domain/model/ContarinerClusterModel.java new file mode 100644 index 00000000..c93a2928 --- /dev/null +++ b/bocloud.ctstack.plugin/src/main/java/com/bocloud/ctstack/plugin/domain/model/ContarinerClusterModel.java @@ -0,0 +1,13 @@ +package com.bocloud.ctstack.plugin.domain.model; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ContarinerClusterModel { + + private String name; +} diff --git a/bocloud.ctstack.plugin/src/main/java/com/bocloud/ctstack/plugin/domain/model/TianyiSyncModel.java b/bocloud.ctstack.plugin/src/main/java/com/bocloud/ctstack/plugin/domain/model/TianyiSyncModel.java index 274cb234..c216c52a 100644 --- a/bocloud.ctstack.plugin/src/main/java/com/bocloud/ctstack/plugin/domain/model/TianyiSyncModel.java +++ b/bocloud.ctstack.plugin/src/main/java/com/bocloud/ctstack/plugin/domain/model/TianyiSyncModel.java @@ -34,6 +34,7 @@ public class TianyiSyncModel { private List hostModels; private ResourcePoolModel resourcePoolModel; private List rdsModels; + private List contarinerClusterModels; /** * @param serverModels * @param imageModels diff --git a/bocloud.ctstack.plugin/src/main/java/com/bocloud/ctstack/plugin/provider/common/TianyiLocationProvider.java b/bocloud.ctstack.plugin/src/main/java/com/bocloud/ctstack/plugin/provider/common/TianyiLocationProvider.java index 14009bdd..25b239b8 100644 --- a/bocloud.ctstack.plugin/src/main/java/com/bocloud/ctstack/plugin/provider/common/TianyiLocationProvider.java +++ b/bocloud.ctstack.plugin/src/main/java/com/bocloud/ctstack/plugin/provider/common/TianyiLocationProvider.java @@ -9,6 +9,7 @@ import com.bocloud.ctstack.plugin.domain.model.database.RdsModel; import com.bocloud.ctstack.plugin.provider.TianyiProvider; import com.bocloud.ctstack.plugin.provider.compute.TianyiImageProvider; import com.bocloud.ctstack.plugin.provider.compute.TianyiServerProvider; +import com.bocloud.ctstack.plugin.provider.container.TianYiContainerClusterProvider; import com.bocloud.ctstack.plugin.provider.database.TianyiRdsProvider; import com.bocloud.ctstack.plugin.provider.network.TianyiFloatingIpProvider; import com.bocloud.ctstack.plugin.provider.network.TianyiSecurityGroupProvider; @@ -254,6 +255,8 @@ public class TianyiLocationProvider extends TianyiProvider { List flavorModels = (List) flavorList.getData(); syncModel.setFlavorModels(flavorModels); } + + // 同步安全组 log.info("获取安全组信息..."); TianyiSecurityGroupProvider tianyiSecurityGroupProvider = new TianyiSecurityGroupProvider(this.getButler()); @@ -280,6 +283,16 @@ public class TianyiLocationProvider extends TianyiProvider { syncModel.setImageModels((List) imageList.getData()); } + + // 同步镜像 + log.info("获取容器信息..."); + TianYiContainerClusterProvider tianYiContainerClusterProvider = new TianYiContainerClusterProvider(this.getButler()); + GeneralResult containerClusterList = tianYiContainerClusterProvider.list(); + log.info("同步容器结果:{}",containerClusterList.isSuccess()); + if (containerClusterList.isSuccess()) { + syncModel.setContarinerClusterModels((List) containerClusterList.getData()); + } + // 同步云硬盘 log.info("获取云硬盘信息..."); TianyiVolumeProvider tianyiVolumeProvider = new TianyiVolumeProvider(this.getButler()); diff --git a/bocloud.ctstack.plugin/src/main/java/com/bocloud/ctstack/plugin/provider/container/TianYiContainerClusterProvider.java b/bocloud.ctstack.plugin/src/main/java/com/bocloud/ctstack/plugin/provider/container/TianYiContainerClusterProvider.java new file mode 100644 index 00000000..4eec0800 --- /dev/null +++ b/bocloud.ctstack.plugin/src/main/java/com/bocloud/ctstack/plugin/provider/container/TianYiContainerClusterProvider.java @@ -0,0 +1,54 @@ +package com.bocloud.ctstack.plugin.provider.container; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.bocloud.cmp.domain.Butler; +import com.bocloud.ctstack.plugin.domain.model.ContarinerClusterModel; +import com.bocloud.ctstack.plugin.provider.TianyiProvider; +import com.bocloud.ctstack.plugin.provider.tianyiconvertor.BeanConvertor; +import com.bocloud.ctstack.plugin.provider.tianyiconvertor.ContainerClusterConvertor; +import com.megatron.common.model.GeneralResult; +import com.megatron.common.model.Result; +import lombok.extern.slf4j.Slf4j; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Slf4j +public class TianYiContainerClusterProvider extends TianyiProvider { + + + BeanConvertor containerClusterConvertor = new ContainerClusterConvertor(); + + Butler butler = null; + + /** + * 构造方法,所有的云平台驱动都必须要实现或重写该构造方法 + * + * @param butler 云平台认证信息 + */ + public TianYiContainerClusterProvider(Butler butler) { + super(butler); + this.butler = butler; + } + + + public GeneralResult list() { + try { + String url = "/v1.1/ccse/clusters/page"; + Map header = new HashMap<>(); + header.put("regionId", this.getRegionId()); + Result result = doGet(url, header); + log.info("result:{}", JSON.toJSONString(result)); + JSONObject checkedResult = checkResult(result, "查询容器集群列表"); + log.info("checkedResult:{}", JSON.toJSONString(checkedResult)); + List records = JSONObject.parseObject(checkedResult.getString("records"), List.class); + return new GeneralResult(true, containerClusterConvertor.convertList(records), "查询成功"); + } catch (Exception e) { + log.error("查询容器集群列表失败 : " + e); + return new GeneralResult(false, "查询容器集群列表失败", e.getMessage()); + } + } +} diff --git a/bocloud.ctstack.plugin/src/main/java/com/bocloud/ctstack/plugin/provider/tianyiconvertor/ContainerClusterConvertor.java b/bocloud.ctstack.plugin/src/main/java/com/bocloud/ctstack/plugin/provider/tianyiconvertor/ContainerClusterConvertor.java new file mode 100644 index 00000000..acbc7704 --- /dev/null +++ b/bocloud.ctstack.plugin/src/main/java/com/bocloud/ctstack/plugin/provider/tianyiconvertor/ContainerClusterConvertor.java @@ -0,0 +1,31 @@ +package com.bocloud.ctstack.plugin.provider.tianyiconvertor; + +import com.alibaba.fastjson.JSONObject; +import com.bocloud.ctstack.plugin.domain.model.ContarinerClusterModel; + +import java.util.ArrayList; +import java.util.List; + +public class ContainerClusterConvertor implements BeanConvertor { + + + @Override + public List convertList(List list) { + List contarinerClusterModels = new ArrayList<>(); + for (JSONObject object : list) { + contarinerClusterModels.add(convertModel(object)); + } + return contarinerClusterModels; + } + + @Override + public ContarinerClusterModel convertModel(JSONObject jsonObject) { + if (null == jsonObject) return null; + if (jsonObject.isEmpty()) return null; + ContarinerClusterModel contarinerClusterModel = new ContarinerClusterModel(); + + contarinerClusterModel.setName(jsonObject.getString("clusterName")); + + return contarinerClusterModel; + } +}