Skip to content

Commit 91ed119

Browse files
committed
[core] Pass the env's defaults+vars from Consul to ObjectStack context
1 parent 7e2c728 commit 91ed119

24 files changed

Lines changed: 114 additions & 88 deletions

File tree

configuration/template/dplutil.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ func generateDplSubworkflow(confSvc ConfigurationService, varStack map[string]st
129129

130130
// Resolve any templates as part of the DPL command
131131
fields := Fields{WrapPointer(&dplCommand)}
132-
err = fields.Execute(confSvc, dplCommand, varStack, nil, make(map[string]texttemplate.Template), workflowRepo)
132+
err = fields.Execute(confSvc, dplCommand, varStack, nil, nil, make(map[string]texttemplate.Template), workflowRepo)
133133
if err != nil {
134134
return "", fmt.Errorf("JIT failed in template resolution of the dpl_command: %w", err)
135135
}
@@ -157,7 +157,7 @@ func generateDplSubworkflowFromUri(confSvc ConfigurationService, varStack map[st
157157

158158
// Resolve any templates as part of the DPL command
159159
fields := Fields{WrapPointer(&dplCommand)}
160-
err = fields.Execute(confSvc, dplCommand, varStack, nil, make(map[string]texttemplate.Template), workflowRepo)
160+
err = fields.Execute(confSvc, dplCommand, varStack, nil, nil, make(map[string]texttemplate.Template), workflowRepo)
161161
if err != nil {
162162
return "", fmt.Errorf("JIT failed in template resolution of the dpl_command: %w", err)
163163
}

configuration/template/fields.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ func (sf Sequence) Execute(confSvc ConfigurationService,
8282
parentPath string,
8383
varStack VarStack,
8484
buildObjectStack BuildObjectStackFunc,
85+
baseConfigStack map[string]string,
8586
stringTemplateCache map[string]template.Template,
8687
workflowRepo repos.IRepo,
8788
stageCallback StageCallbackFunc) (err error) {
@@ -110,7 +111,7 @@ func (sf Sequence) Execute(confSvc ConfigurationService,
110111
}(),
111112
}).Trace("about to process fields for stage")
112113
}
113-
err = fields.Execute(confSvc, parentPath, stagedStack, objectStack, stringTemplateCache, workflowRepo)
114+
err = fields.Execute(confSvc, parentPath, stagedStack, objectStack, baseConfigStack, stringTemplateCache, workflowRepo)
114115
err = stageCallback(currentStage, err)
115116
if err != nil {
116117
var roleDisabledErrorType *RoleDisabledError
@@ -227,7 +228,7 @@ func (vs *VarStack) consolidated(stage Stage) (consolidatedStack map[string]stri
227228
return
228229
}
229230

230-
func (fields Fields) Execute(confSvc ConfigurationService, parentPath string, varStack map[string]string, objStack map[string]interface{}, stringTemplateCache map[string]template.Template, workflowRepo repos.IRepo) (err error) {
231+
func (fields Fields) Execute(confSvc ConfigurationService, parentPath string, varStack map[string]string, objStack map[string]interface{}, baseConfigStack map[string]string, stringTemplateCache map[string]template.Template, workflowRepo repos.IRepo) (err error) {
231232
environment := make(map[string]interface{}, len(varStack))
232233
strOpStack := MakeUtilFuncMap(varStack)
233234
for k, v := range varStack {
@@ -256,7 +257,7 @@ func (fields Fields) Execute(confSvc ConfigurationService, parentPath string, va
256257
environment[k] = v
257258
}
258259

259-
pluginObjects := MakePluginObjectStack(varStack)
260+
pluginObjects := MakePluginObjectStack(varStack, baseConfigStack)
260261
copyMap(pluginObjects, environment)
261262

262263
configAccessObj := MakeConfigAccessObject(confSvc, varStack)

configuration/template/stack.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -159,8 +159,8 @@ func MakeConfigAccessFuncsMultiVar(confSvc ConfigurationService, varStack map[st
159159
}
160160
}
161161

162-
func MakePluginObjectStack(varStack map[string]string) map[string]interface{} {
163-
return integration.PluginsInstance().ObjectStack(varStack)
162+
func MakePluginObjectStack(varStack map[string]string, baseConfigStack map[string]string) map[string]interface{} {
163+
return integration.PluginsInstance().ObjectStack(varStack, baseConfigStack)
164164
}
165165

166166
func MakeConfigAndRepoAccessFuncs(confSvc ConfigurationService, varStack map[string]string, workflowRepo repos.IRepo) map[string]interface{} {

configuration/template/stackutil.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ func getConfigLegacy(confSvc ConfigurationService, varStack map[string]string, p
5050
}
5151

5252
fields := Fields{WrapPointer(&payload)}
53-
err = fields.Execute(confSvc, query.Path(), varStack, nil, make(map[string]texttemplate.Template), nil)
53+
err = fields.Execute(confSvc, query.Path(), varStack, nil, nil, make(map[string]texttemplate.Template), nil)
5454
log.Warn(varStack)
5555
log.Warn(payload)
5656
return payload

core/environment/manager.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ func (envs *Manager) CreateEnvironment(workflowPath string, userVars map[string]
219219
}
220220

221221
// We load the workflow (includes template processing)
222-
env.workflow, err = envs.loadWorkflow(workflowPath, env.wfAdapter, workflowUserVars)
222+
env.workflow, err = envs.loadWorkflow(workflowPath, env.wfAdapter, workflowUserVars, env.BaseConfigStack)
223223
if err != nil {
224224
err = fmt.Errorf("cannot load workflow template: %w", err)
225225

@@ -507,11 +507,11 @@ func (envs *Manager) environment(environmentId uid.ID) (env *Environment, err er
507507
return
508508
}
509509

510-
func (envs *Manager) loadWorkflow(workflowPath string, parent workflow.Updatable, workflowUserVars map[string]string) (root workflow.Role, err error) {
510+
func (envs *Manager) loadWorkflow(workflowPath string, parent workflow.Updatable, workflowUserVars map[string]string, baseConfigStack map[string]string) (root workflow.Role, err error) {
511511
if strings.Contains(workflowPath, "://") {
512512
return nil, errors.New("workflow loading from file not implemented yet")
513513
}
514-
return workflow.Load(workflowPath, parent, envs.taskman, workflowUserVars)
514+
return workflow.Load(workflowPath, parent, envs.taskman, workflowUserVars, baseConfigStack)
515515
}
516516

517517
func (envs *Manager) handleDeviceEvent(evt event.DeviceEvent) {
@@ -665,7 +665,7 @@ func (envs *Manager) CreateAutoEnvironment(workflowPath string, userVars map[str
665665
Warn("parse workflow public info failed.")
666666
}
667667

668-
env.workflow, err = envs.loadWorkflow(workflowPath, env.wfAdapter, workflowUserVars)
668+
env.workflow, err = envs.loadWorkflow(workflowPath, env.wfAdapter, workflowUserVars, env.BaseConfigStack)
669669
if err != nil {
670670
err = fmt.Errorf("cannot load workflow template: %w", err)
671671
env.sendEnvironmentEvent(&event.EnvironmentEvent{EnvironmentID: env.Id().String(), Error: err})

core/integration/bookkeeping/plugin.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,14 @@ import (
3434
"encoding/json"
3535
"errors"
3636
"fmt"
37-
bkpb "github.com/AliceO2Group/Control/core/integration/bookkeeping/protos"
38-
"google.golang.org/grpc"
3937
"net/url"
4038
"strconv"
4139
"strings"
4240
"time"
4341

42+
bkpb "github.com/AliceO2Group/Control/core/integration/bookkeeping/protos"
43+
"google.golang.org/grpc"
44+
4445
"github.com/AliceO2Group/Control/common/logger/infologger"
4546
"github.com/AliceO2Group/Control/common/utils/uid"
4647
"github.com/AliceO2Group/Control/core/environment"
@@ -252,7 +253,7 @@ func (p *Plugin) Init(instanceId string) error {
252253
return nil
253254
}
254255

255-
func (p *Plugin) ObjectStack(_ map[string]string) (stack map[string]interface{}) {
256+
func (p *Plugin) ObjectStack(_ map[string]string, _ map[string]string) (stack map[string]interface{}) {
256257
stack = make(map[string]interface{})
257258
return stack
258259
}

core/integration/ccdb/plugin.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,15 @@ import (
2929
"encoding/json"
3030
"errors"
3131
"fmt"
32-
"github.com/AliceO2Group/Control/core/environment"
3332
"go/types"
3433
"net/url"
3534
"os/exec"
3635
"strconv"
3736
"strings"
3837
"time"
3938

39+
"github.com/AliceO2Group/Control/core/environment"
40+
4041
"github.com/AliceO2Group/Control/common/logger"
4142
"github.com/AliceO2Group/Control/common/runtype"
4243
"github.com/AliceO2Group/Control/common/utils/uid"
@@ -289,7 +290,7 @@ func (p *Plugin) Init(instanceId string) error {
289290
return nil
290291
}
291292

292-
func (p *Plugin) ObjectStack(_ map[string]string) (stack map[string]interface{}) {
293+
func (p *Plugin) ObjectStack(_ map[string]string, _ map[string]string) (stack map[string]interface{}) {
293294
stack = make(map[string]interface{})
294295
return stack
295296
}

core/integration/dcs/plugin.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ func (p *Plugin) Init(instanceId string) error {
174174
return nil
175175
}
176176

177-
func (p *Plugin) ObjectStack(_ map[string]string) (stack map[string]interface{}) {
177+
func (p *Plugin) ObjectStack(_ map[string]string, _ map[string]string) (stack map[string]interface{}) {
178178
stack = make(map[string]interface{})
179179
return stack
180180
}

core/integration/ddsched/plugin.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ func (p *Plugin) Init(_ string) error {
191191
return nil
192192
}
193193

194-
func (p *Plugin) ObjectStack(_ map[string]string) (stack map[string]interface{}) {
194+
func (p *Plugin) ObjectStack(_ map[string]string, _ map[string]string) (stack map[string]interface{}) {
195195
stack = make(map[string]interface{})
196196
return stack
197197
}

core/integration/kafka/plugin.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ func (p *Plugin) Init(_ string) error {
157157
return nil
158158
}
159159

160-
func (p *Plugin) ObjectStack(_ map[string]string) (stack map[string]interface{}) {
160+
func (p *Plugin) ObjectStack(_ map[string]string, _ map[string]string) (stack map[string]interface{}) {
161161
stack = make(map[string]interface{})
162162
return stack
163163
}

0 commit comments

Comments
 (0)