From 118a3aacfe04407e03ea0a7ce50119ed69bea905 Mon Sep 17 00:00:00 2001 From: Berger Eugene Date: Mon, 25 Mar 2024 23:11:56 +0200 Subject: [PATCH] Issue #166: added disabled dependency validation --- issues/issue_166/process-compose.yaml | 21 +++++++++++++++++++++ src/loader/loader.go | 1 + src/loader/validators.go | 24 ++++++++++++++++++++++++ 3 files changed, 46 insertions(+) create mode 100644 issues/issue_166/process-compose.yaml diff --git a/issues/issue_166/process-compose.yaml b/issues/issue_166/process-compose.yaml new file mode 100644 index 0000000..a9d619d --- /dev/null +++ b/issues/issue_166/process-compose.yaml @@ -0,0 +1,21 @@ +is_strict: true + +processes: + pc_log: + command: "tail -f -n100 process-compose-${USER}.log" + working_dir: "/tmp" + test: + command: | + echo "TOTO" + sleep 40 + depends_on: + runtrial: + # condition: toto # this is accepted and doesn't trigger any error even though + condition: process_completed_successfully + + # one shot task, hence why we disable it now + runtrial: + namespace: task + disabled: true + command: + echo "TRIAL DONE" diff --git a/src/loader/loader.go b/src/loader/loader.go index 125c687..4bcda22 100644 --- a/src/loader/loader.go +++ b/src/loader/loader.go @@ -55,6 +55,7 @@ func Load(opts *LoaderOptions) (*types.Project, error) { validateShellConfig, validatePlatformCompatibility, validateHealthDependencyHasHealthCheck, + validateDependencyIsEnabled, ) admitProcesses(opts, mergedProject) return mergedProject, err diff --git a/src/loader/validators.go b/src/loader/validators.go index 054b91c..7b302d4 100644 --- a/src/loader/validators.go +++ b/src/loader/validators.go @@ -137,3 +137,27 @@ func validateHealthDependencyHasHealthCheck(p *types.Project) error { } return nil } + +func validateDependencyIsEnabled(p *types.Project) error { + for procName, proc := range p.Processes { + for depName := range proc.DependsOn { + depProc, ok := p.Processes[depName] + if !ok { + errStr := fmt.Sprintf("dependency process '%s' in process '%s' is not defined", depName, procName) + if p.IsStrict { + return fmt.Errorf(errStr) + } + log.Error().Msg(errStr) + continue + } + if depProc.Disabled { + errStr := fmt.Sprintf("dependency process '%s' in process '%s' is disabled", depName, procName) + if p.IsStrict { + return fmt.Errorf(errStr) + } + log.Error().Msg(errStr) + } + } + } + return nil +}