File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -10,10 +10,14 @@ import (
1010
1111 "agones-minecraft/config"
1212 v1Controllers "agones-minecraft/controllers/api/v1"
13+ "agones-minecraft/db"
1314 apiErr "agones-minecraft/middleware/errors"
1415 "agones-minecraft/middleware/jwt"
1516 ginzap "agones-minecraft/middleware/log"
1617 "agones-minecraft/middleware/session"
18+ jwtServicev1 "agones-minecraft/services/auth/jwt"
19+ "agones-minecraft/services/k8s/agones"
20+
1721 twitchMiddleware "agones-minecraft/middleware/twitch"
1822)
1923
@@ -28,7 +32,28 @@ func NewRouter() *gin.Engine {
2832 engine .Use (ginzap .RecoveryWithZap (zap .L (), false ))
2933
3034 engine .GET ("/health" , func (c * gin.Context ) {
31- c .JSON (http .StatusOK , gin.H {"status" : "ok" })
35+ var database bool
36+ var memorystore bool
37+ var cluster bool
38+
39+ if err := db .Ping (); err == nil {
40+ database = true
41+ }
42+
43+ if err := jwtServicev1 .Get ().Ping (); err == nil {
44+ memorystore = true
45+ }
46+
47+ if err := agones .Client ().Ping (); err == nil {
48+ cluster = true
49+ }
50+
51+ c .JSON (http .StatusOK , gin.H {
52+ "api" : true ,
53+ "database" : database ,
54+ "memorystore" : memorystore ,
55+ "cluster" : cluster ,
56+ })
3257 })
3358
3459 AddV1Router (engine )
Original file line number Diff line number Diff line change @@ -69,5 +69,8 @@ func (r *RedisStore) Delete(userId string) error {
6969}
7070
7171func (r * RedisStore ) Ping () error {
72- return r .redis .Ping (context .Background ()).Err ()
72+ ctx , cancel := context .WithTimeout (context .Background (), time .Second * 10 )
73+ defer cancel ()
74+
75+ return r .redis .Ping (ctx ).Err ()
7376}
Original file line number Diff line number Diff line change @@ -70,6 +70,23 @@ func New(config *rest.Config) (*AgonesClient, error) {
7070 return & AgonesClient {agonesClient , gameServerInformer , recordStore }, nil
7171}
7272
73+ func (c * AgonesClient ) Ping () error {
74+ ctx , cancel := context .WithTimeout (context .Background (), time .Second * 10 )
75+ defer cancel ()
76+
77+ res , err := c .clientSet .RESTClient ().Get ().AbsPath ("/healthz" ).DoRaw (ctx )
78+ if err != nil {
79+ return err
80+ }
81+
82+ content := string (res )
83+ if content != "ok" {
84+ return fmt .Errorf ("not ok, error: %s" , content )
85+ }
86+
87+ return nil
88+ }
89+
7390// Gets a GameServer by name
7491func (c * AgonesClient ) Get (serverName string ) (* agonesv1.GameServer , error ) {
7592 return c .informer .Lister ().GameServers (metav1 .NamespaceDefault ).Get (serverName )
You can’t perform that action at this time.
0 commit comments