package com.platform.utils; 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; import com.base.CustomException; import com.platform.entities.Brick; import com.platform.entities.FolderNode; 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 { /** * 挂载点路径 -- 暂时无用的 */ private static String pointPath = "/home"; /** Volume信息查询 */ private VolumeInfo volumeInfo = new VolumeInfo(); private ClusterInfo cluster = new ClusterInfo(); /** gfs目录树形展示 */ private GetTreeData gfsTree = new GetTreeData(); public ThreadVolume() { // TODO Auto-generated constructor stub } public ThreadVolume(String name) { setName(name); } public ThreadVolume(String name, String path) { if (null != path && !"".equals(path.trim())) { ThreadVolume.pointPath = path; } } @Override public void run() { super.run(); while (true) { try { getVolumeMsg(); Thread.sleep(Constant.get_volume_sleep_time); } catch (InterruptedException e) { new CustomException( Custom4exception.threadVolume_Thread_Except, e); } } } public static String getPointPath() { return pointPath; } public static void setPointPath(String pointPath) { ThreadVolume.pointPath = pointPath; } public void getVolumeMsg() { List folderlist = new ArrayList(); List volumeList = new ArrayList(); HttpUtils ht = new HttpUtils(); String rest = ht.sendPost("gfs/getAllvolume", null); // JSONArray jsondata = JSONArray.fromObject(volumeList); JSONArray json = JSONArray.fromObject(rest); List volumes = (List)JSONArray.toCollection(json, VolumeEntity.class); for (VolumeEntity volumeEntity : volumes) { if (null != volumeEntity.getFolder()) { folderlist.addAll(volumeEntity.getFolder()); } } volumeList = volumes; // // brick状态 map集合 // Map brickStatusMap = cluster.showClusterInfo(); // // // 查询 volume name // List volumeNameList = volumeInfo.showAllVolumeName(); // if (null != volumeNameList) { // for (String volumeName : volumeNameList) { // try { // VolumeEntity volume = new VolumeEntity(); // volume.setName(volumeName); // List 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 brickStrs = volumeInfo // .getVolumeBricks(volumeName); // // brick已用大小: // Map usedSize = volumeInfo // .getVolumebricksDataSize(volumeName); // Map availableSize = volumeInfo // .getVolumebricksAvailableSize(volumeName); // // List brickList = new ArrayList(); // 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); } }