Skip to content

Commit 327eed6

Browse files
committed
Handle Service Parameters properly when having multiple jumpstarter instances
There was a bug in the code where only the last processed instance data was kept, the service parameters are the endpoint / auth details for exporter as received and synchronized from the K8s API
1 parent e7d3ae4 commit 327eed6

File tree

3 files changed

+15
-6
lines changed

3 files changed

+15
-6
lines changed

cmd/apply.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,8 @@ var applyCmd = &cobra.Command{
9090
fmt.Println("Applying changes:")
9191
fmt.Println()
9292
}
93-
var serviceParametersMap map[string]template.ServiceParameters
93+
// create a serviceParametersMap to store the service parameters for the exporters in the jumpstarter instances
94+
serviceParametersMap := make(map[string]template.ServiceParameters)
9495

9596
for _, inst := range cfg.Loaded.JumpstarterInstances {
9697
instanceCopy := inst.DeepCopy()
@@ -109,9 +110,14 @@ var applyCmd = &cobra.Command{
109110
return fmt.Errorf("error syncing clients for %s: %w", inst.Name, err)
110111
}
111112

112-
serviceParametersMap, err = instanceClient.SyncExporters(context.Background(), cfg, exporterFilter)
113+
instanceServiceParametersMap, err := instanceClient.SyncExporters(context.Background(), cfg, exporterFilter)
113114
if err != nil {
114115
return fmt.Errorf("error syncing exporters for %s: %w", inst.Name, err)
116+
} else {
117+
// merge instanceServiceParametersMap into serviceParametersMap
118+
for k, v := range instanceServiceParametersMap {
119+
serviceParametersMap[k] = v
120+
}
115121
}
116122
}
117123

internal/exporter/host/host.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -180,9 +180,10 @@ func (e *ExporterHostSyncer) processExporterInstance(exporterInstance *api.Expor
180180
return fmt.Errorf("error creating ExporterInstanceTemplater for %s : %w", errName, err)
181181
}
182182

183-
serviceParameters, ok := e.serviceParametersMap[exporterInstance.Name]
183+
spRef := exporterInstance.Spec.JumpstarterInstanceRef.Name + ":" + exporterInstance.Name
184+
serviceParameters, ok := e.serviceParametersMap[spRef]
184185
if !ok {
185-
return fmt.Errorf("service parameters not found for %s", exporterInstance.Name)
186+
return fmt.Errorf("service parameters not found for %s", spRef)
186187
}
187188
et.SetServiceParameters(serviceParameters)
188189

internal/instance/exporter_sync.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -342,7 +342,8 @@ func (i *Instance) SyncExporters(ctx context.Context, cfg *config.Config, filter
342342
fmt.Printf("🔍 [%s] Exporter connection details snippet for exporter %s:\n%s\n", i.config.Name, cfgExporter.Name, yamlOutput)
343343
}
344344

345-
serviceParametersMap[cfgExporter.Name] = *serviceParameters
345+
svcParamRef := i.config.Name + ":" + cfgExporter.Name
346+
serviceParametersMap[svcParamRef] = *serviceParameters
346347
}
347348
}
348349

@@ -366,7 +367,8 @@ func (i *Instance) SyncExporters(ctx context.Context, cfg *config.Config, filter
366367
}
367368
fmt.Printf("🔍 [%s] Exporter connection details snippet for exporter %s:\n%s\n", i.config.Name, exporterObj.Name, yamlOutput)
368369
}
369-
serviceParametersMap[exporterObj.Name] = *serviceParameters
370+
svcParamRef := i.config.Name + ":" + exporterObj.Name
371+
serviceParametersMap[svcParamRef] = *serviceParameters
370372
}
371373
}
372374

0 commit comments

Comments
 (0)