Make NATS API subjects configurable

This commit is contained in:
2025-12-17 06:08:09 +01:00
parent 0419fec810
commit d30c6ef3bf
2 changed files with 24 additions and 17 deletions

View File

@@ -13,6 +13,7 @@ import (
"time"
"github.com/ClusterCockpit/cc-backend/internal/archiver"
"github.com/ClusterCockpit/cc-backend/internal/config"
"github.com/ClusterCockpit/cc-backend/internal/importer"
"github.com/ClusterCockpit/cc-backend/internal/repository"
"github.com/ClusterCockpit/cc-backend/pkg/nats"
@@ -20,13 +21,6 @@ import (
"github.com/ClusterCockpit/cc-lib/schema"
)
// NATS subject constants for Job and Node APIs.
const (
SubjectJobStart = "cc.job.start"
SubjectJobStop = "cc.job.stop"
SubjectNodeState = "cc.node.state"
)
// NatsAPI provides NATS subscription-based handlers for Job and Node operations.
// It mirrors the functionality of the REST API but uses NATS messaging.
type NatsAPI struct {
@@ -52,19 +46,24 @@ func (api *NatsAPI) StartSubscriptions() error {
return nil
}
if err := client.Subscribe(SubjectJobStart, api.handleStartJob); err != nil {
return err
}
if config.Keys.APISubjects != nil {
if err := client.Subscribe(SubjectJobStop, api.handleStopJob); err != nil {
return err
}
s := config.Keys.APISubjects
if err := client.Subscribe(SubjectNodeState, api.handleNodeState); err != nil {
return err
}
if err := client.Subscribe(s.SubjectJobStart, api.handleStartJob); err != nil {
return err
}
cclog.Info("NATS API subscriptions started")
if err := client.Subscribe(s.SubjectJobStop, api.handleStopJob); err != nil {
return err
}
if err := client.Subscribe(s.SubjectNodeState, api.handleNodeState); err != nil {
return err
}
cclog.Info("NATS API subscriptions started")
}
return nil
}