Skip to content

Commit 6e20ed0

Browse files
authored
Add API endpoint to set config values (#2434)
* Add API endpoint to set config values
1 parent 088703f commit 6e20ed0

File tree

23 files changed

+805
-526
lines changed

23 files changed

+805
-526
lines changed

api/controllers/kubernetes/install/app.go

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,30 @@ package install
22

33
import (
44
"context"
5+
"errors"
6+
"fmt"
57

68
kotsv1beta1 "github.com/replicatedhq/kotskinds/apis/kots/v1beta1"
79
)
810

911
func (c *InstallController) GetAppConfig(ctx context.Context) (kotsv1beta1.Config, error) {
10-
return c.appConfigManager.Get()
12+
if c.releaseData == nil || c.releaseData.AppConfig == nil {
13+
return kotsv1beta1.Config{}, errors.New("app config not found")
14+
}
15+
16+
values, err := c.appConfigManager.GetConfigValues()
17+
if err != nil {
18+
return kotsv1beta1.Config{}, fmt.Errorf("get app config values: %w", err)
19+
}
20+
21+
appConfig, err := c.appConfigManager.ApplyValuesToConfig(*c.releaseData.AppConfig, values)
22+
if err != nil {
23+
return kotsv1beta1.Config{}, fmt.Errorf("apply values to config: %w", err)
24+
}
25+
26+
return appConfig, nil
27+
}
28+
29+
func (c *InstallController) SetAppConfigValues(ctx context.Context, values map[string]string) error {
30+
return c.appConfigManager.SetConfigValues(ctx, values)
1131
}

api/controllers/kubernetes/install/app_test.go

Lines changed: 0 additions & 112 deletions
This file was deleted.

api/controllers/kubernetes/install/controller.go

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import (
99
"github.com/replicatedhq/embedded-cluster/api/internal/managers/kubernetes/installation"
1010
"github.com/replicatedhq/embedded-cluster/api/internal/statemachine"
1111
"github.com/replicatedhq/embedded-cluster/api/internal/store"
12-
appconfigstore "github.com/replicatedhq/embedded-cluster/api/internal/store/app/config"
1312
"github.com/replicatedhq/embedded-cluster/api/pkg/logger"
1413
"github.com/replicatedhq/embedded-cluster/api/types"
1514
ecv1beta1 "github.com/replicatedhq/embedded-cluster/kinds/apis/v1beta1"
@@ -28,6 +27,7 @@ type Controller interface {
2827
SetupInfra(ctx context.Context) error
2928
GetInfra(ctx context.Context) (types.Infra, error)
3029
GetAppConfig(ctx context.Context) (kotsv1beta1.Config, error)
30+
SetAppConfigValues(ctx context.Context, values map[string]string) error
3131
}
3232

3333
var _ Controller = (*InstallController)(nil)
@@ -152,6 +152,7 @@ func WithStore(store store.Store) InstallControllerOption {
152152

153153
func NewInstallController(opts ...InstallControllerOption) (*InstallController, error) {
154154
controller := &InstallController{
155+
store: store.NewMemoryStore(),
155156
logger: logger.NewDiscardLogger(),
156157
stateMachine: NewStateMachine(),
157158
}
@@ -160,16 +161,6 @@ func NewInstallController(opts ...InstallControllerOption) (*InstallController,
160161
opt(controller)
161162
}
162163

163-
if controller.store == nil {
164-
appConfig := kotsv1beta1.Config{}
165-
if controller.releaseData != nil && controller.releaseData.AppConfig != nil {
166-
appConfig = *controller.releaseData.AppConfig
167-
}
168-
controller.store = store.NewMemoryStore(
169-
store.WithAppConfigStore(appconfigstore.NewMemoryStore(appconfigstore.WithConfig(appConfig))),
170-
)
171-
}
172-
173164
if controller.installationManager == nil {
174165
controller.installationManager = installation.NewInstallationManager(
175166
installation.WithLogger(controller.logger),

api/controllers/kubernetes/install/controller_mock.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,3 +62,9 @@ func (m *MockController) GetAppConfig(ctx context.Context) (kotsv1beta1.Config,
6262
}
6363
return args.Get(0).(kotsv1beta1.Config), args.Error(1)
6464
}
65+
66+
// SetAppConfigValues mocks the SetAppConfigValues method
67+
func (m *MockController) SetAppConfigValues(ctx context.Context, values map[string]string) error {
68+
args := m.Called(ctx, values)
69+
return args.Error(0)
70+
}

api/controllers/linux/install/app.go

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,30 @@ package install
22

33
import (
44
"context"
5+
"errors"
6+
"fmt"
57

68
kotsv1beta1 "github.com/replicatedhq/kotskinds/apis/kots/v1beta1"
79
)
810

911
func (c *InstallController) GetAppConfig(ctx context.Context) (kotsv1beta1.Config, error) {
10-
return c.appConfigManager.Get()
12+
if c.releaseData == nil || c.releaseData.AppConfig == nil {
13+
return kotsv1beta1.Config{}, errors.New("app config not found")
14+
}
15+
16+
values, err := c.appConfigManager.GetConfigValues()
17+
if err != nil {
18+
return kotsv1beta1.Config{}, fmt.Errorf("get app config values: %w", err)
19+
}
20+
21+
appConfig, err := c.appConfigManager.ApplyValuesToConfig(*c.releaseData.AppConfig, values)
22+
if err != nil {
23+
return kotsv1beta1.Config{}, fmt.Errorf("apply values to config: %w", err)
24+
}
25+
26+
return appConfig, nil
27+
}
28+
29+
func (c *InstallController) SetAppConfigValues(ctx context.Context, values map[string]string) error {
30+
return c.appConfigManager.SetConfigValues(ctx, values)
1131
}

api/controllers/linux/install/app_test.go

Lines changed: 0 additions & 112 deletions
This file was deleted.

api/controllers/linux/install/controller.go

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import (
1010
"github.com/replicatedhq/embedded-cluster/api/internal/managers/linux/preflight"
1111
"github.com/replicatedhq/embedded-cluster/api/internal/statemachine"
1212
"github.com/replicatedhq/embedded-cluster/api/internal/store"
13-
appconfigstore "github.com/replicatedhq/embedded-cluster/api/internal/store/app/config"
1413
"github.com/replicatedhq/embedded-cluster/api/internal/utils"
1514
"github.com/replicatedhq/embedded-cluster/api/pkg/logger"
1615
"github.com/replicatedhq/embedded-cluster/api/types"
@@ -34,6 +33,7 @@ type Controller interface {
3433
SetupInfra(ctx context.Context, ignoreHostPreflights bool) error
3534
GetInfra(ctx context.Context) (types.Infra, error)
3635
GetAppConfig(ctx context.Context) (kotsv1beta1.Config, error)
36+
SetAppConfigValues(ctx context.Context, values map[string]string) error
3737
}
3838

3939
type RunHostPreflightsOptions struct {
@@ -190,6 +190,7 @@ func WithStore(store store.Store) InstallControllerOption {
190190

191191
func NewInstallController(opts ...InstallControllerOption) (*InstallController, error) {
192192
controller := &InstallController{
193+
store: store.NewMemoryStore(),
193194
rc: runtimeconfig.New(nil),
194195
logger: logger.NewDiscardLogger(),
195196
}
@@ -198,16 +199,6 @@ func NewInstallController(opts ...InstallControllerOption) (*InstallController,
198199
opt(controller)
199200
}
200201

201-
if controller.store == nil {
202-
appConfig := kotsv1beta1.Config{}
203-
if controller.releaseData != nil && controller.releaseData.AppConfig != nil {
204-
appConfig = *controller.releaseData.AppConfig
205-
}
206-
controller.store = store.NewMemoryStore(
207-
store.WithAppConfigStore(appconfigstore.NewMemoryStore(appconfigstore.WithConfig(appConfig))),
208-
)
209-
}
210-
211202
if controller.stateMachine == nil {
212203
controller.stateMachine = NewStateMachine(WithStateMachineLogger(controller.logger))
213204
}

api/controllers/linux/install/controller_mock.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,3 +95,9 @@ func (m *MockController) GetAppConfig(ctx context.Context) (kotsv1beta1.Config,
9595
}
9696
return args.Get(0).(kotsv1beta1.Config), args.Error(1)
9797
}
98+
99+
// SetAppConfigValues mocks the SetAppConfigValues method
100+
func (m *MockController) SetAppConfigValues(ctx context.Context, values map[string]string) error {
101+
args := m.Called(ctx, values)
102+
return args.Error(0)
103+
}

api/docs/docs.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/docs/swagger.json

Lines changed: 2 additions & 2 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)