Skip to content

Commit 0299753

Browse files
committed
feat: Add API endpoint to list PostgreSQL instances in Kube controller
1 parent 719957f commit 0299753

2 files changed

Lines changed: 32 additions & 0 deletions

File tree

internal/server/controller/kube.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,37 @@ func (s *KubeController) mapToConfig(configMap map[string]string) *model.KubeBad
263263
return &config
264264
}
265265

266+
func (s *KubeController) ListPostgresqls(c *gin.Context) {
267+
namespace := c.Param("namespace")
268+
key := fmt.Sprintf("postgresql_%s", namespace)
269+
270+
result, ok := s.cache.Get(key)
271+
if !ok || c.Query("force") == "true" {
272+
postgresqls, err := s.KubeHelper.GetPostgresqls(namespace)
273+
if err != nil {
274+
c.JSON(500, gin.H{
275+
"error": err.Error(),
276+
})
277+
return
278+
}
279+
var out []model.KubeBadges
280+
for _, obj := range postgresqls {
281+
metadata, _ := obj["metadata"].(map[string]interface{})
282+
name, _ := metadata["name"].(string)
283+
out = append(out, model.KubeBadges{
284+
Kind: "postgresql",
285+
Name: name,
286+
Key: fmt.Sprintf("/kube/postgresql/%s/%s", namespace, name),
287+
Badge: fmt.Sprintf("/badges/kube/postgresql/%s/%s", namespace, name),
288+
})
289+
}
290+
result = out
291+
s.cache.Set(key, result, time.Minute*2)
292+
}
293+
294+
c.JSON(http.StatusOK, s.populateKubeBadges(result))
295+
}
296+
266297
func (s *KubeController) ListKustomizations(c *gin.Context) {
267298
namespace := c.Param("namespace")
268299
key := fmt.Sprintf("kustomizations_%s", namespace)

internal/server/routes.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ func (s *Server) initRouter() {
9797

9898
// List Kustomizations (optional)
9999
api.GET("/kustomizations/:namespace", kubeController.ListKustomizations)
100+
api.GET("/postgresqls/:namespace", kubeController.ListPostgresqls)
100101
}
101102

102103
badges := s.internalEngine.Group("/badges")

0 commit comments

Comments
 (0)