mirror of
https://github.com/ClusterCockpit/cc-backend
synced 2025-03-03 21:45:55 +01:00
Add default_metrics.json which sets the defaults for job_view_selectedMetrics:cluster for new users
This commit is contained in:
parent
86d85f12be
commit
f158eaa29c
12
configs/default_metrics.json
Normal file
12
configs/default_metrics.json
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"clusters": [
|
||||||
|
{
|
||||||
|
"name": "fritz",
|
||||||
|
"default_metrics": "cpu_load, flops_any, core_power, lustre_open, mem_used, mem_bw, net_bytes_in"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "alex",
|
||||||
|
"default_metrics": "flops_any, mem_bw, mem_used, vectorization_ratio"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
44
internal/config/default_metrics.go
Normal file
44
internal/config/default_metrics.go
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
package config
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"os"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
type DefaultMetricsCluster struct {
|
||||||
|
Name string `json:"name"`
|
||||||
|
DefaultMetrics string `json:"default_metrics"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type DefaultMetricsConfig struct {
|
||||||
|
Clusters []DefaultMetricsCluster `json:"clusters"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func LoadDefaultMetricsConfig() (*DefaultMetricsConfig, error) {
|
||||||
|
filePath := "configs/default_metrics.json"
|
||||||
|
if _, err := os.Stat(filePath); os.IsNotExist(err) {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
data, err := os.ReadFile(filePath)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
var cfg DefaultMetricsConfig
|
||||||
|
if err := json.Unmarshal(data, &cfg); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return &cfg, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func ParseMetricsString(s string) []string {
|
||||||
|
parts := strings.Split(s, ",")
|
||||||
|
var metrics []string
|
||||||
|
for _, p := range parts {
|
||||||
|
trimmed := strings.TrimSpace(p)
|
||||||
|
if trimmed != "" {
|
||||||
|
metrics = append(metrics, trimmed)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return metrics
|
||||||
|
}
|
@ -19,6 +19,7 @@ import (
|
|||||||
sq "github.com/Masterminds/squirrel"
|
sq "github.com/Masterminds/squirrel"
|
||||||
"github.com/jmoiron/sqlx"
|
"github.com/jmoiron/sqlx"
|
||||||
"golang.org/x/crypto/bcrypt"
|
"golang.org/x/crypto/bcrypt"
|
||||||
|
"github.com/ClusterCockpit/cc-backend/internal/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -127,6 +128,30 @@ func (r *UserRepository) AddUser(user *schema.User) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
log.Infof("new user %#v created (roles: %s, auth-source: %d, projects: %s)", user.Username, rolesJson, user.AuthSource, projectsJson)
|
log.Infof("new user %#v created (roles: %s, auth-source: %d, projects: %s)", user.Username, rolesJson, user.AuthSource, projectsJson)
|
||||||
|
|
||||||
|
defaultMetricsCfg, err := config.LoadDefaultMetricsConfig()
|
||||||
|
if err != nil {
|
||||||
|
log.Errorf("Error loading default metrics config: %v", err)
|
||||||
|
} else if defaultMetricsCfg != nil {
|
||||||
|
for _, cluster := range defaultMetricsCfg.Clusters {
|
||||||
|
metricsArray := config.ParseMetricsString(cluster.DefaultMetrics)
|
||||||
|
metricsJSON, err := json.Marshal(metricsArray)
|
||||||
|
if err != nil {
|
||||||
|
log.Errorf("Error marshaling default metrics for cluster %s: %v", cluster.Name, err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
confKey := "job_view_selectedMetrics:" + cluster.Name
|
||||||
|
if _, err := sq.Insert("configuration").
|
||||||
|
Columns("username", "confkey", "value").
|
||||||
|
Values(user.Username, confKey, string(metricsJSON)).
|
||||||
|
RunWith(r.DB).Exec(); err != nil {
|
||||||
|
log.Errorf("Error inserting default job view metrics for user %s and cluster %s: %v", user.Username, cluster.Name, err)
|
||||||
|
} else {
|
||||||
|
log.Infof("Default job view metrics for user %s and cluster %s set to %s", user.Username, cluster.Name, string(metricsJSON))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user