refactor: general-node and map-node to use flotte types for service registration

This commit is contained in:
Alex Wellnitz 2025-02-11 15:17:34 +01:00
parent eec969fc75
commit 88caecde51
8 changed files with 146 additions and 28 deletions

View File

@ -1,24 +1,12 @@
package generalnode
import "github.com/gin-gonic/gin"
import (
"github.com/gin-gonic/gin"
)
func Start() {
router := gin.Default()
// Get Status
router.GET("/status", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
})
// Add Service
router.POST("/service", func(c *gin.Context) {
c.JSON(200, gin.H{
"serviceName": "service1",
"status": "registered",
})
})
router = registerRoutes(router)
router.Run("localhost:8000") // listen and serve on 0.0.0.0:8000
}

View File

@ -0,0 +1,38 @@
package generalnode
import (
"encoding/json"
"github.com/alexohneander/flotte/pkg/types/request"
respone "github.com/alexohneander/flotte/pkg/types/response"
"github.com/gin-gonic/gin"
)
func registerRoutes(router *gin.Engine) *gin.Engine {
// Get Status
router.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
})
// Add Service
router.POST("/service", func(c *gin.Context) {
defer c.Request.Body.Close()
var req request.ServiceRegister
err := json.NewDecoder(c.Request.Body).Decode(&req)
if err != nil {
c.JSON(400, gin.H{
"message": err.Error(),
})
}
c.JSON(200, respone.ServiceRegister{
ServiceName: req.Name,
Status: "registered",
})
})
return router
}

View File

@ -1,13 +1,57 @@
package mapnode
import "github.com/gin-gonic/gin"
import (
"bytes"
"encoding/json"
"fmt"
"log"
"net/http"
"github.com/alexohneander/flotte/pkg/types/request"
"github.com/gin-gonic/gin"
)
func Start() {
err := registerAsMapNode()
if err != nil {
panic(err)
}
router := gin.Default()
router.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
})
router = registerRoutes(router)
router.Run("localhost:4000") // listen and serve on 0.0.0.0:4000
}
func registerAsMapNode() error {
// http post request to general-node
serviceRegisterReq := request.ServiceRegister{
Name: "map-01",
NodeType: "map",
Address: "localhost",
Port: 4000,
}
json_data, err := json.Marshal(serviceRegisterReq)
if err != nil {
log.Fatal(err)
return err
}
resp, err := http.Post("http://localhost:8000/service", "application/json",
bytes.NewBuffer(json_data))
if err != nil {
log.Fatal(err)
return err
}
defer resp.Body.Close()
var res map[string]interface{}
json.NewDecoder(resp.Body).Decode(&res)
fmt.Println(res)
return nil
}

View File

@ -0,0 +1,14 @@
package mapnode
import "github.com/gin-gonic/gin"
func registerRoutes(router *gin.Engine) *gin.Engine {
router.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
})
return router
}

View File

@ -3,11 +3,17 @@ package reducenode
import "github.com/gin-gonic/gin"
func Start() {
err := registerAsReduceNode()
if err != nil {
panic(err)
}
router := gin.Default()
router.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
})
router.Run() // listen and serve on 0.0.0.0:8080
router = registerRoutes(router)
router.Run("localhost:4001") // listen and serve on 0.0.0.0:4001
}
func registerAsReduceNode() error {
return nil
}

View File

@ -0,0 +1,14 @@
package reducenode
import "github.com/gin-gonic/gin"
func registerRoutes(router *gin.Engine) *gin.Engine {
router.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
})
return router
}

View File

@ -0,0 +1,8 @@
package request
type ServiceRegister struct {
Name string `json:"name"`
NodeType string `json:"nodeType"`
Address string `json:"address"`
Port int `json:"port"`
}

View File

@ -0,0 +1,6 @@
package response
type ServiceRegister struct {
ServiceName string `json:"serviceName"`
Status string `json:"status"`
}