Skip to content

Commit ccc3b20

Browse files
committed
[#2] Add api : /cluster/status
1 parent f463567 commit ccc3b20

4 files changed

Lines changed: 70 additions & 4 deletions

File tree

src/main/java/org/code13k/heets/app/Cluster.java

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,12 @@
55
import com.hazelcast.config.NetworkConfig;
66
import com.hazelcast.config.TcpIpConfig;
77
import com.hazelcast.core.*;
8+
import com.hazelcast.nio.Address;
89
import org.code13k.heets.config.AppConfig;
910
import org.slf4j.Logger;
1011
import org.slf4j.LoggerFactory;
1112

12-
import java.util.ArrayList;
13+
import java.util.*;
1314

1415
public class Cluster {
1516
// Logger
@@ -86,6 +87,27 @@ public HazelcastInstance getHazelcastInstance() {
8687
return mHazelcastInstance;
8788
}
8889

90+
91+
/**
92+
* Get all values
93+
*/
94+
public Map<String, Object> values() {
95+
HashMap<String, Object> result = new HashMap<>();
96+
97+
result.put("version", getClusterVersion());
98+
result.put("count", getMemberCount());
99+
result.put("info", getMemberInfo());
100+
101+
return result;
102+
}
103+
104+
/**
105+
* Get cluster version
106+
*/
107+
public String getClusterVersion(){
108+
return mHazelcastInstance.getCluster().getClusterVersion().toString();
109+
}
110+
89111
/**
90112
* Get clustered member count
91113
*/
@@ -96,6 +118,23 @@ public int getMemberCount() {
96118
return 1;
97119
}
98120
}
121+
122+
/**
123+
* Get clustered member info
124+
*/
125+
public List<Map<String, String>> getMemberInfo(){
126+
ArrayList<Map<String, String>> result = new ArrayList<>();
127+
mHazelcastInstance.getCluster().getMembers().forEach(member -> {
128+
HashMap<String, String> item = new HashMap<>();
129+
Address memberAddress = member.getAddress();
130+
item.put("version", member.getVersion().toString());
131+
item.put("uuid", member.getUuid());
132+
item.put("address", memberAddress.getHost()+":"+memberAddress.getPort());
133+
result.add(item);
134+
});
135+
return result;
136+
}
137+
99138
}
100139

101140

src/main/java/org/code13k/heets/service/api/ApiHttpServer.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import io.vertx.ext.web.RoutingContext;
99
import org.code13k.heets.config.AppConfig;
1010
import org.code13k.heets.service.api.controller.AppAPI;
11+
import org.code13k.heets.service.api.controller.ClusterAPI;
1112
import org.slf4j.Logger;
1213
import org.slf4j.LoggerFactory;
1314

@@ -20,6 +21,7 @@ public class ApiHttpServer extends AbstractVerticle {
2021

2122
// Data
2223
private AppAPI mAppAPI = new AppAPI();
24+
private ClusterAPI mClusterAPI = new ClusterAPI();
2325

2426
/**
2527
* start()
@@ -38,6 +40,7 @@ public void start() throws Exception {
3840
// Routing
3941
Router router = Router.router(vertx);
4042
setAppRouter(router);
43+
setClusterRouter(router);
4144

4245
// Listen
4346
httpServer.requestHandler(router::accept).listen();
@@ -128,6 +131,21 @@ public void handle(Void event) {
128131
});
129132
}
130133

134+
/**
135+
* Set cluster router
136+
*/
137+
private void setClusterRouter(Router router) {
138+
// GET /cluster/status
139+
router.route().method(HttpMethod.GET).path("/cluster/status").handler(routingContext -> {
140+
routingContext.request().endHandler(new Handler<Void>() {
141+
@Override
142+
public void handle(Void event) {
143+
responseHttpOK(routingContext, mClusterAPI.status());
144+
}
145+
});
146+
});
147+
}
148+
131149
/**
132150
* Response HTTP 200 OK
133151
*/

src/main/java/org/code13k/heets/service/api/controller/AppAPI.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,6 @@
1313
import java.util.Map;
1414

1515
public class AppAPI extends BasicAPI {
16-
// Logger
17-
private static final Logger mLogger = LoggerFactory.getLogger(AppAPI.class);
18-
1916
/**
2017
* Environment
2118
*/
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package org.code13k.heets.service.api.controller;
2+
3+
import org.code13k.heets.app.Cluster;
4+
5+
public class ClusterAPI extends BasicAPI {
6+
/**
7+
* Environment
8+
*/
9+
public String status() {
10+
return toResultJsonString(Cluster.getInstance().values());
11+
}
12+
}

0 commit comments

Comments
 (0)