-
Notifications
You must be signed in to change notification settings - Fork 34
/
save_config_scheduler.go
34 lines (27 loc) · 1.19 KB
/
save_config_scheduler.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package usecases
import (
"fmt"
"github.com/rs/zerolog/log"
"github.com/berops/claudie/proto/pb"
)
// SaveConfigScheduler is a gRPC servie: the function saves config to the DB after receiving it from Scheduler
func (u *Usecases) SaveConfigScheduler(request *pb.SaveConfigRequest) (*pb.SaveConfigResponse, error) {
config := request.GetConfig()
log.Info().Msgf("Saving config %s from Scheduler", config.Name)
// Save new config to the DB
config.DsChecksum = config.MsChecksum
config.SchedulerTTL = 0
err := u.DB.UpdateDs(config)
if err != nil {
return nil, fmt.Errorf("error while updating dsChecksum for %s : %w", config.Name, err)
}
// Update workflow state for k8s clusters. (attached LB clusters included)
if err := u.DB.UpdateAllStates(config.Name, config.State); err != nil {
return nil, fmt.Errorf("error while saving workflow state config %s in MongoDB: %w", config.Name, err)
}
if err := u.DB.UpdateSchedulerTTL(config.Name, config.SchedulerTTL); err != nil {
return nil, fmt.Errorf("error while updating schedulerTTL for %s : %w", config.Name, err)
}
log.Info().Msgf("Config %s successfully saved from Scheduler", config.Name)
return &pb.SaveConfigResponse{Config: config}, nil
}