use of com.alibaba.csp.sentinel.dashboard.domain.cluster.state.ClusterUniversalStatePairVO in project Sentinel by alibaba.
the class ClusterConfigService method getClusterUniversalState.
/**
* Get cluster state list of all available machines of provided application.
*
* @param app application name
* @return cluster state list of all available machines of the application
* @since 1.4.1
*/
public CompletableFuture<List<ClusterUniversalStatePairVO>> getClusterUniversalState(String app) {
if (StringUtil.isBlank(app)) {
return AsyncUtils.newFailedFuture(new IllegalArgumentException("app cannot be empty"));
}
AppInfo appInfo = appManagement.getDetailApp(app);
if (appInfo == null || appInfo.getMachines() == null) {
return CompletableFuture.completedFuture(new ArrayList<>());
}
List<CompletableFuture<ClusterUniversalStatePairVO>> futures = appInfo.getMachines().stream().filter(e -> e.isHealthy()).map(machine -> getClusterUniversalState(app, machine.getIp(), machine.getPort()).thenApply(e -> new ClusterUniversalStatePairVO(machine.getIp(), machine.getPort(), e))).collect(Collectors.toList());
return AsyncUtils.sequenceSuccessFuture(futures);
}
use of com.alibaba.csp.sentinel.dashboard.domain.cluster.state.ClusterUniversalStatePairVO in project Sentinel by alibaba.
the class ClusterEntityUtils method wrapToAppClusterServerState.
public static List<AppClusterServerStateWrapVO> wrapToAppClusterServerState(List<ClusterUniversalStatePairVO> list) {
if (list == null || list.isEmpty()) {
return new ArrayList<>();
}
Map<String, AppClusterServerStateWrapVO> map = new HashMap<>();
Set<String> tokenServerSet = new HashSet<>();
// Handle token servers that belong to current app.
for (ClusterUniversalStatePairVO stateVO : list) {
int mode = stateVO.getState().getStateInfo().getMode();
if (mode == ClusterStateManager.CLUSTER_SERVER) {
String ip = stateVO.getIp();
String serverId = ip + '@' + stateVO.getCommandPort();
ClusterServerStateVO serverStateVO = stateVO.getState().getServer();
map.computeIfAbsent(serverId, v -> new AppClusterServerStateWrapVO().setId(serverId).setIp(ip).setPort(serverStateVO.getPort()).setState(serverStateVO).setBelongToApp(true).setConnectedCount(serverStateVO.getConnection().stream().mapToInt(ConnectionGroupVO::getConnectedCount).sum()));
tokenServerSet.add(ip + ":" + serverStateVO.getPort());
}
}
// Handle token servers from other app.
for (ClusterUniversalStatePairVO stateVO : list) {
int mode = stateVO.getState().getStateInfo().getMode();
if (mode == ClusterStateManager.CLUSTER_CLIENT) {
ClusterClientStateVO clientState = stateVO.getState().getClient();
if (clientState == null) {
continue;
}
String serverIp = clientState.getClientConfig().getServerHost();
int serverPort = clientState.getClientConfig().getServerPort();
if (tokenServerSet.contains(serverIp + ":" + serverPort)) {
continue;
}
// We are not able to get the commandPort of foreign token server directly.
String serverId = String.format("%s:%d", serverIp, serverPort);
map.computeIfAbsent(serverId, v -> new AppClusterServerStateWrapVO().setId(serverId).setIp(serverIp).setPort(serverPort).setBelongToApp(false));
}
}
return new ArrayList<>(map.values());
}
use of com.alibaba.csp.sentinel.dashboard.domain.cluster.state.ClusterUniversalStatePairVO in project Sentinel by alibaba.
the class ClusterEntityUtils method wrapToClusterGroup.
public static List<ClusterGroupEntity> wrapToClusterGroup(List<ClusterUniversalStatePairVO> list) {
if (list == null || list.isEmpty()) {
return new ArrayList<>();
}
Map<String, ClusterGroupEntity> map = new HashMap<>();
for (ClusterUniversalStatePairVO stateVO : list) {
int mode = stateVO.getState().getStateInfo().getMode();
String ip = stateVO.getIp();
if (mode == ClusterStateManager.CLUSTER_SERVER) {
String serverAddress = getIp(ip);
int port = stateVO.getState().getServer().getPort();
map.computeIfAbsent(serverAddress, v -> new ClusterGroupEntity().setBelongToApp(true).setMachineId(ip + '@' + stateVO.getCommandPort()).setIp(ip).setPort(port));
}
}
for (ClusterUniversalStatePairVO stateVO : list) {
int mode = stateVO.getState().getStateInfo().getMode();
String ip = stateVO.getIp();
if (mode == ClusterStateManager.CLUSTER_CLIENT) {
String targetServer = stateVO.getState().getClient().getClientConfig().getServerHost();
Integer targetPort = stateVO.getState().getClient().getClientConfig().getServerPort();
if (StringUtil.isBlank(targetServer) || targetPort == null || targetPort <= 0) {
continue;
}
ClusterGroupEntity group = map.computeIfAbsent(targetServer, v -> new ClusterGroupEntity().setBelongToApp(true).setMachineId(targetServer).setIp(targetServer).setPort(targetPort));
group.getClientSet().add(ip + '@' + stateVO.getCommandPort());
}
}
return new ArrayList<>(map.values());
}
use of com.alibaba.csp.sentinel.dashboard.domain.cluster.state.ClusterUniversalStatePairVO in project pig by pig-mesh.
the class ClusterEntityUtils method wrapToAppClusterClientState.
public static List<AppClusterClientStateWrapVO> wrapToAppClusterClientState(List<ClusterUniversalStatePairVO> list) {
if (list == null || list.isEmpty()) {
return new ArrayList<>();
}
Map<String, AppClusterClientStateWrapVO> map = new HashMap<>();
for (ClusterUniversalStatePairVO stateVO : list) {
int mode = stateVO.getState().getStateInfo().getMode();
if (mode == ClusterStateManager.CLUSTER_CLIENT) {
String ip = stateVO.getIp();
String clientId = ip + '@' + stateVO.getCommandPort();
ClusterClientStateVO clientStateVO = stateVO.getState().getClient();
map.computeIfAbsent(clientId, v -> new AppClusterClientStateWrapVO().setId(clientId).setIp(ip).setState(clientStateVO).setCommandPort(stateVO.getCommandPort()));
}
}
return new ArrayList<>(map.values());
}
use of com.alibaba.csp.sentinel.dashboard.domain.cluster.state.ClusterUniversalStatePairVO in project pig by pig-mesh.
the class ClusterEntityUtils method wrapToClusterGroup.
public static List<ClusterGroupEntity> wrapToClusterGroup(List<ClusterUniversalStatePairVO> list) {
if (list == null || list.isEmpty()) {
return new ArrayList<>();
}
Map<String, ClusterGroupEntity> map = new HashMap<>();
for (ClusterUniversalStatePairVO stateVO : list) {
int mode = stateVO.getState().getStateInfo().getMode();
String ip = stateVO.getIp();
if (mode == ClusterStateManager.CLUSTER_SERVER) {
String serverAddress = getIp(ip);
int port = stateVO.getState().getServer().getPort();
String targetAddress = serverAddress + ":" + port;
map.computeIfAbsent(targetAddress, v -> new ClusterGroupEntity().setBelongToApp(true).setMachineId(ip + '@' + stateVO.getCommandPort()).setIp(ip).setPort(port));
}
}
for (ClusterUniversalStatePairVO stateVO : list) {
int mode = stateVO.getState().getStateInfo().getMode();
String ip = stateVO.getIp();
if (mode == ClusterStateManager.CLUSTER_CLIENT) {
String targetServer = stateVO.getState().getClient().getClientConfig().getServerHost();
Integer targetPort = stateVO.getState().getClient().getClientConfig().getServerPort();
if (StringUtil.isBlank(targetServer) || targetPort == null || targetPort <= 0) {
continue;
}
String targetAddress = targetServer + ":" + targetPort;
ClusterGroupEntity group = map.computeIfAbsent(targetAddress, v -> new ClusterGroupEntity().setBelongToApp(true).setMachineId(targetServer).setIp(targetServer).setPort(targetPort));
group.getClientSet().add(ip + '@' + stateVO.getCommandPort());
}
}
return new ArrayList<>(map.values());
}
Aggregations