@@ -61,15 +61,8 @@ const (
6161`
6262)
6363
64- type Mode string
65-
66- const (
67- Standalone Mode = "standalone"
68- CL Mode = "cl"
69- )
70-
7164type Cfg struct {
72- Mode Mode `toml:"mode"`
65+ Mode services. Mode `toml:"mode"`
7366 CLDF CLDF `toml:"cldf" validate:"required"`
7467 JD * jd.Input `toml:"jd" validate:"required"`
7568 Fake * services.FakeInput `toml:"fake" validate:"required"`
@@ -129,16 +122,29 @@ func NewEnvironment() (in *Cfg, err error) {
129122 ///////////////////////////////
130123 // Start: Initialize Configs //
131124 ///////////////////////////////
125+
126+ var hasCLNodeService bool
127+
132128 // Override the default config to "cl"...
133129 if in .Mode == "" {
134- in .Mode = Standalone
130+ in .Mode = services . Standalone
135131 }
136132
137133 // Verifier configs...
138- for _ , ver := range in .Verifier {
134+ for i , ver := range in .Verifier {
135+ services .ApplyVerifierDefaults (ver )
139136 // deterministic key generation algorithm.
140137 ver .ConfigFilePath = fmt .Sprintf ("/app/cmd/verifier/testconfig/%s/verifier-%d.toml" , ver .CommitteeName , ver .NodeIndex + 1 )
141138 ver .SigningKey = cciptestinterfaces .XXXNewVerifierPrivateKey (ver .CommitteeName , ver .NodeIndex )
139+ in .Verifier [i ] = ver // technically not needed because it's a pointer.
140+
141+ hasCLNodeService = hasCLNodeService || (ver .Mode == services .CL )
142+ }
143+
144+ // Executor config...
145+ if in .Executor != nil {
146+ services .ApplyExecutorDefaults (in .Executor )
147+ hasCLNodeService = hasCLNodeService || (in .Executor .Mode == services .CL )
142148 }
143149
144150 /////////////////////////////
@@ -262,7 +268,7 @@ func NewEnvironment() (in *Cfg, err error) {
262268 timeTrack .Record ("[infra] deployed CL nodes" )
263269 timeTrack .Record ("[changeset] deployed product contracts" )
264270
265- if in . Mode == CL { //nolint:nestif // large block needed for clarity, refactor as a cl node component later
271+ if hasCLNodeService { //nolint:nestif // large block needed for clarity, refactor as a cl node component later
266272 clChainConfigs := make ([]string , 0 )
267273 clChainConfigs = append (clChainConfigs , CommonCLNodesConfig )
268274 for i , impl := range impls {
@@ -311,23 +317,31 @@ func NewEnvironment() (in *Cfg, err error) {
311317 if err != nil {
312318 return nil , fmt .Errorf ("decoding verifier signing key (%s): %w" , ver .ContainerName , err )
313319 }
314- cc .ImportEVMKey (pk , ver .CommitteeName )
320+ cc .ImportEVMKey (pk , ver .ContainerName )
315321 }
316322 }
317323 }
318324 }
319325
320- // Start standalone executor/verifiers if in standalone mode.
321- if in .Mode == Standalone {
322- _ , err = services .NewExecutor (in .Executor )
323- if err != nil {
324- return nil , fmt .Errorf ("failed to create executor service: %w" , err )
326+ // TODO: remove this if condition once configuration is injected into the node.
327+ // For now, if the core node is started, assume that it will launch all services.
328+ // TODO: Maybe it starts with just the verifiers.
329+ if ! hasCLNodeService {
330+ // Start standalone executor if in standalone mode.
331+ if in .Executor != nil && in .Executor .Mode == services .Standalone {
332+ _ , err = services .NewExecutor (in .Executor )
333+ if err != nil {
334+ return nil , fmt .Errorf ("failed to create executor service: %w" , err )
335+ }
325336 }
326337
338+ // Start standalone verifiers if in standalone mode.
327339 for _ , ver := range in .Verifier {
328- _ , err = services .NewVerifier (ver )
329- if err != nil {
330- return nil , fmt .Errorf ("failed to create verifier service: %w" , err )
340+ if ver .Mode == services .Standalone {
341+ _ , err = services .NewVerifier (ver )
342+ if err != nil {
343+ return nil , fmt .Errorf ("failed to create verifier service: %w" , err )
344+ }
331345 }
332346 }
333347 }
0 commit comments