diff --git a/pkg/report/model.go b/pkg/report/model.go index 3621f1c2c..775c251f7 100644 --- a/pkg/report/model.go +++ b/pkg/report/model.go @@ -108,13 +108,6 @@ func (m *model) Run(ctx context.Context) (err error) { return errors.New("no model steps defined") } - for _, s := range m.steps { - err = s.Validate() - if err != nil { - return err - } - } - return nil }() if err != nil { diff --git a/pkg/report/model_graph.go b/pkg/report/model_graph.go index 1cf3a7d9f..9c1e4ac3e 100644 --- a/pkg/report/model_graph.go +++ b/pkg/report/model_graph.go @@ -65,9 +65,30 @@ func (m *model) datasource(ctx context.Context, def *FrameDefinition) (ds Dataso return nil, fmt.Errorf("unresolved source: %s", def.Source) } + err = m.validateBranch(start) + if err != nil { + return + } + return m.reduceBranch(ctx, start) } +func (m *model) validateBranch(n *modelGraphNode) (err error) { + err = n.step.Validate() + if err != nil { + return err + } + + for _, c := range n.cc { + err = m.validateBranch(c) + if err != nil { + return err + } + } + + return nil +} + func (m *model) reduceBranch(ctx context.Context, n *modelGraphNode) (out Datasource, err error) { // leaf node, nothing else to do if len(n.cc) == 0 {