|
|
|
@ -4,6 +4,8 @@ import java.util.ArrayList;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
|
|
import net.sf.json.JSONArray;
|
|
|
|
|
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
|
|
import com.base.Custom4exception;
|
|
|
|
@ -14,6 +16,7 @@ import com.platform.entities.VolumeEntity;
|
|
|
|
|
import com.platform.glusterfs.ClusterInfo;
|
|
|
|
|
import com.platform.glusterfs.GetTreeData;
|
|
|
|
|
import com.platform.glusterfs.VolumeInfo;
|
|
|
|
|
import com.platform.http.gfs.HttpUtils;
|
|
|
|
|
|
|
|
|
|
public class ThreadVolume extends Thread {
|
|
|
|
|
|
|
|
|
@ -71,88 +74,100 @@ public class ThreadVolume extends Thread {
|
|
|
|
|
public void getVolumeMsg() {
|
|
|
|
|
List<FolderNode> folderlist = new ArrayList<FolderNode>();
|
|
|
|
|
List<VolumeEntity> volumeList = new ArrayList<VolumeEntity>();
|
|
|
|
|
// brick状态 map集合
|
|
|
|
|
Map<String, String> brickStatusMap = cluster.showClusterInfo();
|
|
|
|
|
|
|
|
|
|
// 查询 volume name
|
|
|
|
|
List<String> volumeNameList = volumeInfo.showAllVolumeName();
|
|
|
|
|
if (null != volumeNameList) {
|
|
|
|
|
for (String volumeName : volumeNameList) {
|
|
|
|
|
try {
|
|
|
|
|
VolumeEntity volume = new VolumeEntity();
|
|
|
|
|
volume.setName(volumeName);
|
|
|
|
|
List<String> path = volumeInfo
|
|
|
|
|
.getVolumeMountPoint(volumeName);
|
|
|
|
|
// 默认加载第一个路径
|
|
|
|
|
if (null != path) {
|
|
|
|
|
for (String one : path) {
|
|
|
|
|
if (!one.contains("df")) {
|
|
|
|
|
volume.setPath(one);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (null == volume.getPath()) {
|
|
|
|
|
volume.setPath("");
|
|
|
|
|
}
|
|
|
|
|
volume.setAllSize((double) (volumeInfo
|
|
|
|
|
.getVolumeAvailableSize(volumeName)
|
|
|
|
|
+ volumeInfo.getVolumeUseSize(volumeName)));
|
|
|
|
|
// 状态Started,Stopped,Created
|
|
|
|
|
String status = volumeInfo.getVolumeStatus(volumeName);
|
|
|
|
|
if ("Started".equals(status)) {
|
|
|
|
|
volume.setStatus(true);
|
|
|
|
|
} else {
|
|
|
|
|
volume.setStatus(false);
|
|
|
|
|
}
|
|
|
|
|
volume.setUsedSize((double) volumeInfo.getVolumeUseSize(volumeName));
|
|
|
|
|
volume.setType(volumeInfo.getVolumeType(volumeName));
|
|
|
|
|
// TODO 查询brick--
|
|
|
|
|
// 返回 ip:path
|
|
|
|
|
List<String> brickStrs = volumeInfo
|
|
|
|
|
.getVolumeBricks(volumeName);
|
|
|
|
|
// brick已用大小:
|
|
|
|
|
Map<String, Double> usedSize = volumeInfo
|
|
|
|
|
.getVolumebricksDataSize(volumeName);
|
|
|
|
|
Map<String, Double> availableSize = volumeInfo
|
|
|
|
|
.getVolumebricksAvailableSize(volumeName);
|
|
|
|
|
|
|
|
|
|
List<Brick> brickList = new ArrayList<Brick>();
|
|
|
|
|
for (String brickIpPath : brickStrs) {
|
|
|
|
|
Brick b = new Brick();
|
|
|
|
|
String ipAndpath[] = brickIpPath.split(":");
|
|
|
|
|
String brickip = ipAndpath[0];
|
|
|
|
|
String brickpath = ipAndpath[1];
|
|
|
|
|
// iP , path ,
|
|
|
|
|
b.setIp(brickip);
|
|
|
|
|
if (brickStatusMap == null
|
|
|
|
|
|| brickStatusMap.size() == 0) {
|
|
|
|
|
b.setStatus(false);
|
|
|
|
|
} else if (brickStatusMap.containsKey(brickip)) {
|
|
|
|
|
b.setStatus(true);
|
|
|
|
|
} else {
|
|
|
|
|
b.setStatus(false);
|
|
|
|
|
}
|
|
|
|
|
b.setPath(brickpath);
|
|
|
|
|
b.setAvailableSize(availableSize.get(brickIpPath));
|
|
|
|
|
b.setUsedSize(usedSize.get(brickIpPath));
|
|
|
|
|
brickList.add(b);
|
|
|
|
|
}
|
|
|
|
|
volume.setBrick(brickList);
|
|
|
|
|
|
|
|
|
|
// 默认加载第一个路径
|
|
|
|
|
if (null != path && path.size() > 0) {
|
|
|
|
|
// 装入 folder:
|
|
|
|
|
// 查询 每个 volume 下的 folder
|
|
|
|
|
FolderNode foldertmp = gfsTree.getDatas(path.get(0));
|
|
|
|
|
folderlist.add(foldertmp);
|
|
|
|
|
}
|
|
|
|
|
volumeList.add(volume);
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
new CustomException(
|
|
|
|
|
Custom4exception.threadVolume_class_Except, e);
|
|
|
|
|
}
|
|
|
|
|
HttpUtils ht = new HttpUtils();
|
|
|
|
|
String rest = ht.sendPost("gfs/getAllvolume", null);
|
|
|
|
|
// JSONArray jsondata = JSONArray.fromObject(volumeList);
|
|
|
|
|
JSONArray json = JSONArray.fromObject(rest);
|
|
|
|
|
List<VolumeEntity> volumes = (List<VolumeEntity>)JSONArray.toCollection(json, VolumeEntity.class);
|
|
|
|
|
for (VolumeEntity volumeEntity : volumes) {
|
|
|
|
|
if (null != volumeEntity.getFolder()) {
|
|
|
|
|
folderlist.addAll(volumeEntity.getFolder());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
volumeList = volumes;
|
|
|
|
|
|
|
|
|
|
// // brick状态 map集合
|
|
|
|
|
// Map<String, String> brickStatusMap = cluster.showClusterInfo();
|
|
|
|
|
//
|
|
|
|
|
// // 查询 volume name
|
|
|
|
|
// List<String> volumeNameList = volumeInfo.showAllVolumeName();
|
|
|
|
|
// if (null != volumeNameList) {
|
|
|
|
|
// for (String volumeName : volumeNameList) {
|
|
|
|
|
// try {
|
|
|
|
|
// VolumeEntity volume = new VolumeEntity();
|
|
|
|
|
// volume.setName(volumeName);
|
|
|
|
|
// List<String> path = volumeInfo
|
|
|
|
|
// .getVolumeMountPoint(volumeName);
|
|
|
|
|
// // 默认加载第一个路径
|
|
|
|
|
// if (null != path) {
|
|
|
|
|
// for (String one : path) {
|
|
|
|
|
// if (!one.contains("df")) {
|
|
|
|
|
// volume.setPath(one);
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// if (null == volume.getPath()) {
|
|
|
|
|
// volume.setPath("");
|
|
|
|
|
// }
|
|
|
|
|
// volume.setAllSize((double) (volumeInfo
|
|
|
|
|
// .getVolumeAvailableSize(volumeName)
|
|
|
|
|
// + volumeInfo.getVolumeUseSize(volumeName)));
|
|
|
|
|
// // 状态Started,Stopped,Created
|
|
|
|
|
// String status = volumeInfo.getVolumeStatus(volumeName);
|
|
|
|
|
// if ("Started".equals(status)) {
|
|
|
|
|
// volume.setStatus(true);
|
|
|
|
|
// } else {
|
|
|
|
|
// volume.setStatus(false);
|
|
|
|
|
// }
|
|
|
|
|
// volume.setUsedSize((double) volumeInfo.getVolumeUseSize(volumeName));
|
|
|
|
|
// volume.setType(volumeInfo.getVolumeType(volumeName));
|
|
|
|
|
// // TODO 查询brick--
|
|
|
|
|
// // 返回 ip:path
|
|
|
|
|
// List<String> brickStrs = volumeInfo
|
|
|
|
|
// .getVolumeBricks(volumeName);
|
|
|
|
|
// // brick已用大小:
|
|
|
|
|
// Map<String, Double> usedSize = volumeInfo
|
|
|
|
|
// .getVolumebricksDataSize(volumeName);
|
|
|
|
|
// Map<String, Double> availableSize = volumeInfo
|
|
|
|
|
// .getVolumebricksAvailableSize(volumeName);
|
|
|
|
|
//
|
|
|
|
|
// List<Brick> brickList = new ArrayList<Brick>();
|
|
|
|
|
// for (String brickIpPath : brickStrs) {
|
|
|
|
|
// Brick b = new Brick();
|
|
|
|
|
// String ipAndpath[] = brickIpPath.split(":");
|
|
|
|
|
// String brickip = ipAndpath[0];
|
|
|
|
|
// String brickpath = ipAndpath[1];
|
|
|
|
|
// // iP , path ,
|
|
|
|
|
// b.setIp(brickip);
|
|
|
|
|
// if (brickStatusMap == null
|
|
|
|
|
// || brickStatusMap.size() == 0) {
|
|
|
|
|
// b.setStatus(false);
|
|
|
|
|
// } else if (brickStatusMap.containsKey(brickip)) {
|
|
|
|
|
// b.setStatus(true);
|
|
|
|
|
// } else {
|
|
|
|
|
// b.setStatus(false);
|
|
|
|
|
// }
|
|
|
|
|
// b.setPath(brickpath);
|
|
|
|
|
// b.setAvailableSize(availableSize.get(brickIpPath));
|
|
|
|
|
// b.setUsedSize(usedSize.get(brickIpPath));
|
|
|
|
|
// brickList.add(b);
|
|
|
|
|
// }
|
|
|
|
|
// volume.setBrick(brickList);
|
|
|
|
|
//
|
|
|
|
|
// // 默认加载第一个路径
|
|
|
|
|
// if (null != path && path.size() > 0) {
|
|
|
|
|
// // 装入 folder:
|
|
|
|
|
// // 查询 每个 volume 下的 folder
|
|
|
|
|
// FolderNode foldertmp = gfsTree.getDatas(path.get(0));
|
|
|
|
|
// folderlist.add(foldertmp);
|
|
|
|
|
// }
|
|
|
|
|
// volumeList.add(volume);
|
|
|
|
|
// } catch (Exception e) {
|
|
|
|
|
// new CustomException(
|
|
|
|
|
// Custom4exception.threadVolume_class_Except, e);
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// 更新folder 目录
|
|
|
|
|
CacheTreeData.setFolders(folderlist);
|
|
|
|
|
CacheTreeData.setVolumeList(volumeList);
|
|
|
|
|