- Rename Go module switchboard-core → armature (155+ files) - Rename Docker image → gobha/armature - Rename K8s resources, secrets, deployments - Rename Prometheus metrics switchboard_* → armature_* - Rename env vars SWITCHBOARD_ADMIN_* → ARMATURE_ADMIN_* - Rename DB names switchboard_core* → armature* - Update all frontend branding, notification templates, docs - Update CI scripts, e2e tests, Keycloak realm, nginx conf - Rename scripts/switchboard-ca.sh → scripts/armature-ca.sh - Rename k8s/switchboard.yaml → k8s/armature.yaml - Rename chart alerting/dashboard files - Fix: DockerHub push uses env: binding for secret injection - Helm chart updated (name, labels, template functions, dashboard, alerting) - Replace favicon/icon assets with Armature brand No functional changes. Pure mechanical rename + CI fix. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
63 lines
1.5 KiB
Go
63 lines
1.5 KiB
Go
package handlers
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
|
|
"armature/storage"
|
|
)
|
|
|
|
// storageConfigured is a package-level flag set during init.
|
|
// Read by PublicSettings to include in the boot payload.
|
|
var storageConfigured bool
|
|
|
|
// SetStorageConfigured sets the package-level flag indicating whether
|
|
// file storage is available. Called from main.go after storage init.
|
|
func SetStorageConfigured(configured bool) {
|
|
storageConfigured = configured
|
|
}
|
|
|
|
// StorageHandler handles file storage admin endpoints.
|
|
type StorageHandler struct {
|
|
store storage.ObjectStore
|
|
}
|
|
|
|
// NewStorageHandler creates a StorageHandler.
|
|
// store may be nil if storage is not configured.
|
|
func NewStorageHandler(store storage.ObjectStore) *StorageHandler {
|
|
return &StorageHandler{store: store}
|
|
}
|
|
|
|
// Configured returns true if a storage backend is available.
|
|
func (h *StorageHandler) Configured() bool {
|
|
return h.store != nil
|
|
}
|
|
|
|
// Status returns storage backend status and statistics.
|
|
//
|
|
// GET /admin/storage/status
|
|
func (h *StorageHandler) Status(c *gin.Context) {
|
|
if h.store == nil {
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"backend": "none",
|
|
"configured": false,
|
|
"healthy": false,
|
|
})
|
|
return
|
|
}
|
|
|
|
stats, err := h.store.Stats(c.Request.Context())
|
|
if err != nil {
|
|
c.JSON(http.StatusInternalServerError, gin.H{
|
|
"error": "failed to collect storage stats",
|
|
"backend": h.store.Backend(),
|
|
"configured": true,
|
|
"healthy": false,
|
|
})
|
|
return
|
|
}
|
|
|
|
c.JSON(http.StatusOK, stats)
|
|
}
|