From 6a8e831af6b39a071a05ac4d0a51a213588298f7 Mon Sep 17 00:00:00 2001 From: StephenButtolph Date: Wed, 10 Jun 2020 03:15:03 -0400 Subject: [PATCH] Added version to admin api --- api/admin/service.go | 18 +++++++++++++++++- node/node.go | 2 +- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/api/admin/service.go b/api/admin/service.go index 0805727..e05a440 100644 --- a/api/admin/service.go +++ b/api/admin/service.go @@ -15,12 +15,14 @@ import ( "github.com/ava-labs/gecko/network" "github.com/ava-labs/gecko/snow/engine/common" "github.com/ava-labs/gecko/utils/logging" + "github.com/ava-labs/gecko/version" cjson "github.com/ava-labs/gecko/utils/json" ) // Admin is the API service for node admin management type Admin struct { + version version.Version nodeID ids.ShortID networkID uint32 log logging.Logger @@ -31,12 +33,13 @@ type Admin struct { } // NewService returns a new admin API service -func NewService(nodeID ids.ShortID, networkID uint32, log logging.Logger, chainManager chains.Manager, peers network.Network, httpServer *api.Server) *common.HTTPHandler { +func NewService(version version.Version, nodeID ids.ShortID, networkID uint32, log logging.Logger, chainManager chains.Manager, peers network.Network, httpServer *api.Server) *common.HTTPHandler { newServer := rpc.NewServer() codec := cjson.NewCodec() newServer.RegisterCodec(codec, "application/json") newServer.RegisterCodec(codec, "application/json;charset=UTF-8") newServer.RegisterService(&Admin{ + version: version, nodeID: nodeID, networkID: networkID, log: log, @@ -47,6 +50,19 @@ func NewService(nodeID ids.ShortID, networkID uint32, log logging.Logger, chainM return &common.HTTPHandler{Handler: newServer} } +// GetNodeVersionReply are the results from calling GetNodeVersion +type GetNodeVersionReply struct { + Version string `json:"version"` +} + +// GetNodeVersion returns the version this node is running +func (service *Admin) GetNodeVersion(_ *http.Request, _ *struct{}, reply *GetNodeVersionReply) error { + service.log.Debug("Admin: GetNodeVersion called") + + reply.Version = service.version.String() + return nil +} + // GetNodeIDReply are the results from calling GetNodeID type GetNodeIDReply struct { NodeID ids.ShortID `json:"nodeID"` diff --git a/node/node.go b/node/node.go index 037cb11..ea0e8fc 100644 --- a/node/node.go +++ b/node/node.go @@ -461,7 +461,7 @@ func (n *Node) initMetricsAPI() { func (n *Node) initAdminAPI() { if n.Config.AdminAPIEnabled { n.Log.Info("initializing Admin API") - service := admin.NewService(n.ID, n.Config.NetworkID, n.Log, n.chainManager, n.Net, &n.APIServer) + service := admin.NewService(Version, n.ID, n.Config.NetworkID, n.Log, n.chainManager, n.Net, &n.APIServer) n.APIServer.AddRoute(service, &sync.RWMutex{}, "admin", "", n.HTTPLog) } }