天翼云容器集群同步

develop
guyuliang 2024-08-30 15:12:34 +08:00
parent c2ba1a27fd
commit dc0c56f1cb
5 changed files with 112 additions and 0 deletions

View File

@ -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;
}

View File

@ -34,6 +34,7 @@ public class TianyiSyncModel {
private List<HostModel> hostModels;
private ResourcePoolModel resourcePoolModel;
private List<RdsModel> rdsModels;
private List<ContarinerClusterModel> contarinerClusterModels;
/**
* @param serverModels
* @param imageModels

View File

@ -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<FlavorModel> flavorModels = (List<FlavorModel>) 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<ImageModel>) imageList.getData());
}
// 同步镜像
log.info("获取容器信息...");
TianYiContainerClusterProvider tianYiContainerClusterProvider = new TianYiContainerClusterProvider(this.getButler());
GeneralResult containerClusterList = tianYiContainerClusterProvider.list();
log.info("同步容器结果:{}",containerClusterList.isSuccess());
if (containerClusterList.isSuccess()) {
syncModel.setContarinerClusterModels((List<ContarinerClusterModel>) containerClusterList.getData());
}
// 同步云硬盘
log.info("获取云硬盘信息...");
TianyiVolumeProvider tianyiVolumeProvider = new TianyiVolumeProvider(this.getButler());

View File

@ -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<ContarinerClusterModel, JSONObject> 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<String, Object> 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<JSONObject> 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());
}
}
}

View File

@ -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<ContarinerClusterModel, JSONObject> {
@Override
public List<ContarinerClusterModel> convertList(List<? extends JSONObject> list) {
List<ContarinerClusterModel> 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;
}
}