Skip to content

Commit e699258

Browse files
committed
Fix runtime config API compile and test issues
1 parent fa5aa22 commit e699258

4 files changed

Lines changed: 39 additions & 11 deletions

File tree

pkg/api/v1/workload_service.go

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -451,7 +451,7 @@ func runtimeConfigForImageBuild(req *createRequest, runtimeConfigOverride *templ
451451
return nil, err
452452
}
453453

454-
baseConfig := runner.GetBaseRuntimeConfig(transportType)
454+
baseConfig := getBaseRuntimeConfig(transportType)
455455
merged := &templates.RuntimeConfig{
456456
BuilderImage: baseConfig.BuilderImage,
457457
AdditionalPackages: append([]string{}, baseConfig.AdditionalPackages...),
@@ -466,6 +466,22 @@ func runtimeConfigForImageBuild(req *createRequest, runtimeConfigOverride *templ
466466
return merged, nil
467467
}
468468

469+
func getBaseRuntimeConfig(transportType templates.TransportType) *templates.RuntimeConfig {
470+
provider := config.NewProvider()
471+
if userConfig, err := provider.GetRuntimeConfig(string(transportType)); err == nil && userConfig != nil {
472+
return &templates.RuntimeConfig{
473+
BuilderImage: userConfig.BuilderImage,
474+
AdditionalPackages: append([]string{}, userConfig.AdditionalPackages...),
475+
}
476+
}
477+
478+
defaultConfig := templates.GetDefaultRuntimeConfig(transportType)
479+
return &templates.RuntimeConfig{
480+
BuilderImage: defaultConfig.BuilderImage,
481+
AdditionalPackages: append([]string{}, defaultConfig.AdditionalPackages...),
482+
}
483+
}
484+
469485
// GetWorkloadNamesFromRequest gets workload names from either the names field or group
470486
func (s *WorkloadService) GetWorkloadNamesFromRequest(ctx context.Context, req bulkOperationRequest) ([]string, error) {
471487
if len(req.Names) > 0 {

pkg/api/v1/workload_service_test.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ import (
1515
"github.com/stacklok/toolhive/pkg/config"
1616
"github.com/stacklok/toolhive/pkg/container/templates"
1717
groupsmocks "github.com/stacklok/toolhive/pkg/groups/mocks"
18-
"github.com/stacklok/toolhive/pkg/runner"
1918
workloadsmocks "github.com/stacklok/toolhive/pkg/workloads/mocks"
2019
)
2120

@@ -326,7 +325,7 @@ func TestRuntimeConfigForImageBuild(t *testing.T) {
326325
require.NotNil(t, result)
327326
assert.Equal(t, "golang:1.24-alpine", result.BuilderImage)
328327

329-
base := runner.GetBaseRuntimeConfig(templates.TransportTypeGO)
328+
base := getBaseRuntimeConfig(templates.TransportTypeGO)
330329
expectedPackages := append([]string{}, base.AdditionalPackages...)
331330
expectedPackages = append(expectedPackages, "curl")
332331
assert.Equal(t, expectedPackages, result.AdditionalPackages)

pkg/api/v1/workloads_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ func TestCreateWorkload(t *testing.T) {
149149
})
150150
},
151151
expectedRuntimeConfig: func() *templates.RuntimeConfig {
152-
base := runner.GetBaseRuntimeConfig(templates.TransportTypeGO)
152+
base := getBaseRuntimeConfig(templates.TransportTypeGO)
153153
return &templates.RuntimeConfig{
154154
BuilderImage: "golang:1.24-alpine",
155155
AdditionalPackages: append(append([]string{}, base.AdditionalPackages...), "ca-certificates"),

pkg/runner/protocol_test.go

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -563,36 +563,49 @@ func TestCreateTemplateData(t *testing.T) {
563563
func TestLoadRuntimeConfig_UsesBaseConfigWhenOverrideNil(t *testing.T) {
564564
t.Parallel()
565565

566-
base := loadRuntimeConfig(templates.TransportTypeGO, nil)
566+
base, err := loadRuntimeConfig(templates.TransportTypeGO, nil)
567+
require.NoError(t, err)
567568
require.NotNil(t, base)
568569
assert.NotEmpty(t, base.BuilderImage)
569570
}
570571

571-
func TestLoadRuntimeConfig_ReplacesBaseConfigWithOverride(t *testing.T) {
572+
func TestLoadRuntimeConfig_MergesBaseConfigWithOverride(t *testing.T) {
572573
t.Parallel()
573574

575+
base, err := loadRuntimeConfig(templates.TransportTypeGO, nil)
576+
require.NoError(t, err)
577+
require.NotNil(t, base)
578+
574579
override := &templates.RuntimeConfig{
575580
BuilderImage: "golang:1.24-alpine",
576581
AdditionalPackages: []string{"curl"},
577582
}
578-
got := loadRuntimeConfig(templates.TransportTypeGO, override)
583+
got, err := loadRuntimeConfig(templates.TransportTypeGO, override)
584+
require.NoError(t, err)
579585
require.NotNil(t, got)
580586
assert.Equal(t, override.BuilderImage, got.BuilderImage)
581-
assert.Equal(t, override.AdditionalPackages, got.AdditionalPackages)
587+
expectedPackages := append([]string{}, base.AdditionalPackages...)
588+
expectedPackages = append(expectedPackages, "curl")
589+
assert.Equal(t, expectedPackages, got.AdditionalPackages)
582590

583591
// Ensure the returned config is detached from input slices.
584592
override.AdditionalPackages[0] = "git"
585-
assert.Equal(t, []string{"curl"}, got.AdditionalPackages)
593+
assert.Equal(t, expectedPackages, got.AdditionalPackages)
586594
}
587595

588596
func TestLoadRuntimeConfig_UsesOverrideBuilderImage(t *testing.T) {
589597
t.Parallel()
590598

599+
base, err := loadRuntimeConfig(templates.TransportTypeGO, nil)
600+
require.NoError(t, err)
601+
require.NotNil(t, base)
602+
591603
customImage := "golang:1.24-alpine"
592-
got := loadRuntimeConfig(templates.TransportTypeGO, &templates.RuntimeConfig{
604+
got, err := loadRuntimeConfig(templates.TransportTypeGO, &templates.RuntimeConfig{
593605
BuilderImage: customImage,
594606
})
607+
require.NoError(t, err)
595608
require.NotNil(t, got)
596609
assert.Equal(t, customImage, got.BuilderImage)
597-
assert.Empty(t, got.AdditionalPackages)
610+
assert.Equal(t, base.AdditionalPackages, got.AdditionalPackages)
598611
}

0 commit comments

Comments
 (0)