mirror of
https://github.com/akvorado/akvorado.git
synced 2025-12-11 22:14:02 +01:00
44 lines
964 B
Go
44 lines
964 B
Go
// SPDX-FileCopyrightText: 2022 Free Mobile
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
package orchestrator
|
|
|
|
import (
|
|
"net/http"
|
|
"strconv"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
func (c *Component) configurationHandlerFunc(gc *gin.Context) {
|
|
service := gc.Param("service")
|
|
indexStr := gc.Param("index")
|
|
index, err := strconv.Atoi(indexStr)
|
|
if indexStr != "" && err != nil {
|
|
gc.JSON(http.StatusNotFound, gin.H{"message": "Invalid configuration index."})
|
|
return
|
|
}
|
|
|
|
c.serviceLock.Lock()
|
|
var configuration any
|
|
serviceConfigurations, ok := c.serviceConfigurations[ServiceType(service)]
|
|
if ok {
|
|
l := len(serviceConfigurations)
|
|
switch {
|
|
case l == 0:
|
|
ok = false
|
|
case index < l:
|
|
configuration = serviceConfigurations[index]
|
|
default:
|
|
configuration = serviceConfigurations[0]
|
|
}
|
|
}
|
|
c.serviceLock.Unlock()
|
|
|
|
if !ok {
|
|
gc.JSON(http.StatusNotFound, gin.H{"message": "Configuration not found."})
|
|
return
|
|
}
|
|
gc.YAML(http.StatusOK, configuration)
|
|
}
|