chore: code cleanup, remove todos, etc

This commit is contained in:
jamesread 2026-02-26 23:07:07 +00:00
parent e9a3863b1b
commit 4744169aa0
5 changed files with 105 additions and 32 deletions

View File

@ -9,6 +9,19 @@ repos:
- id: end-of-file-fixer
- id: check-yaml
- id: check-added-large-files
- id: check-merge-conflict
- id: detect-private-key
- id: mixed-line-ending
args: ['--fix', 'lf']
- id: check-json
exclude: |
(?x)^(
service/internal/entities/testdata/.*\.json|
integration-tests/tests/.*/entities/.*\.json|
var/entities/.*\.json
)$
- id: check-case-conflict
- id: detect-aws-credentials
# Alternative semantic commit checker
- repo: https://github.com/compilerla/conventional-pre-commit
@ -34,9 +47,23 @@ repos:
pass_filenames: false
always_run: true
- id: it
name: it
entry: make service-codestyle frontend-codestyle
- id: service-unittests
name: service-unittests
entry: make service-unittests
language: system
pass_filenames: false
always_run: true
- id: service-build
name: service-build
entry: make service
language: system
pass_filenames: false
always_run: true
- id: it
name: integration-tests
entry: make it
language: system
pass_filenames: false
always_run: true

View File

@ -1268,7 +1268,7 @@ func (api *oliveTinAPI) RestartAction(ctx ctx.Context, req *connect.Request[apiv
return api.StartAction(ctx, &connect.Request[apiv1.StartActionRequest]{
Msg: &apiv1.StartActionRequest{
// FIXME
BindingId: execReqLogEntry.GetBindingId(),
UniqueTrackingId: req.Msg.ExecutionTrackingId,
},
})

View File

@ -259,8 +259,7 @@ func (arg *ActionArgument) sanitize() {
arg.sanitizeNoType()
// TODO Validate the default against the type checker, but this creates a
// import loop
// Default value validation runs in executor at config load (validateArgumentDefaults).
}
func (arg *ActionArgument) sanitizeNoType() {

View File

@ -603,14 +603,14 @@ func getExecutionsCount(rate config.RateSpec, req *ExecutionRequest) int {
then := time.Now().Add(-duration)
currentEntityPrefix := ""
if req.Binding != nil && req.Binding.Entity != nil {
currentEntityPrefix = req.Binding.Entity.UniqueKey
}
for _, logEntry := range req.executor.GetLogsByBindingId(req.Binding.ID) {
// FIXME
/*
if logEntry.EntityPrefix != req.EntityPrefix {
if logEntry.EntityPrefix != currentEntityPrefix {
continue
}
*/
if logEntry.DatetimeStarted.After(then) && !logEntry.Blocked {
executions += 1
@ -761,28 +761,12 @@ func fail(req *ExecutionRequest, err error) bool {
func stepRequestAction(req *ExecutionRequest) bool {
metricActionsRequested.Inc()
// If there is no binding or action, do not proceed. Leave default
// log entry values (icon/title/id) and stop execution gracefully.
if req.Binding == nil || req.Binding.Action == nil {
log.Warnf("Action request has no binding/action; skipping execution")
if !stepRequestActionHasBinding(req) {
return false
}
req.logEntry.Binding = req.Binding
req.logEntry.ActionConfigTitle = req.Binding.Action.Title
req.logEntry.ActionTitle = tpl.ParseTemplateOfActionBeforeExec(req.Binding.Action.Title, req.Binding.Entity)
req.logEntry.ActionIcon = req.Binding.Action.Icon
req.logEntry.Tags = req.Tags
req.executor.logmutex.Lock()
if _, containsKey := req.executor.LogsByBindingId[req.Binding.ID]; !containsKey {
req.executor.LogsByBindingId[req.Binding.ID] = make([]*InternalLogEntry, 0)
}
req.executor.LogsByBindingId[req.Binding.ID] = append(req.executor.LogsByBindingId[req.Binding.ID], req.logEntry)
req.executor.logmutex.Unlock()
stepRequestActionPopulateLogEntry(req)
stepRequestActionRegisterLog(req)
log.WithFields(log.Fields{
"actionTitle": req.logEntry.ActionTitle,
@ -794,6 +778,35 @@ func stepRequestAction(req *ExecutionRequest) bool {
return true
}
func stepRequestActionHasBinding(req *ExecutionRequest) bool {
if req.Binding == nil || req.Binding.Action == nil {
log.Warnf("Action request has no binding/action; skipping execution")
return false
}
return true
}
func stepRequestActionPopulateLogEntry(req *ExecutionRequest) {
req.logEntry.Binding = req.Binding
req.logEntry.ActionConfigTitle = req.Binding.Action.Title
req.logEntry.ActionTitle = tpl.ParseTemplateOfActionBeforeExec(req.Binding.Action.Title, req.Binding.Entity)
req.logEntry.ActionIcon = req.Binding.Action.Icon
req.logEntry.Tags = req.Tags
if req.Binding.Entity != nil {
req.logEntry.EntityPrefix = req.Binding.Entity.UniqueKey
}
}
func stepRequestActionRegisterLog(req *ExecutionRequest) {
req.executor.logmutex.Lock()
defer req.executor.logmutex.Unlock()
if _, containsKey := req.executor.LogsByBindingId[req.Binding.ID]; !containsKey {
req.executor.LogsByBindingId[req.Binding.ID] = make([]*InternalLogEntry, 0)
}
req.executor.LogsByBindingId[req.Binding.ID] = append(req.executor.LogsByBindingId[req.Binding.ID], req.logEntry)
}
func stepLogStart(req *ExecutionRequest) bool {
log.WithFields(log.Fields{
"actionTitle": req.logEntry.ActionTitle,

View File

@ -41,7 +41,41 @@ type RebuildActionMapRequest struct {
DashboardActionTitles []string
}
func validateArgumentDefaults(cfg *config.Config) {
if cfg == nil {
return
}
for _, action := range cfg.Actions {
validateActionArgumentDefaults(action)
}
}
func validateActionArgumentDefaults(action *config.Action) {
if action == nil {
return
}
for i := range action.Arguments {
validateArgumentDefault(action, &action.Arguments[i])
}
}
func validateArgumentDefault(action *config.Action, arg *config.ActionArgument) {
if arg.Default == "" {
return
}
if err := ValidateArgument(arg, arg.Default, action); err != nil {
log.WithFields(log.Fields{
"actionTitle": action.Title,
"argName": arg.Name,
"default": arg.Default,
"error": err,
}).Warn("Argument default value failed validation")
}
}
func (e *Executor) RebuildActionMap() {
validateArgumentDefaults(e.Cfg)
e.MapActionBindingsLock.Lock()
clear(e.MapActionBindings)