Skip to content

Commit db0e050

Browse files
committed
updates
1 parent 3d66024 commit db0e050

File tree

10 files changed

+122
-43
lines changed

10 files changed

+122
-43
lines changed

internal/config/config.go

Lines changed: 48 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,15 @@ type TargetCluster struct {
3333
}
3434

3535
type Providers struct {
36-
ClusterProviders []string `json:"clusterProviders"`
37-
ServiceProviders []string `json:"serviceProviders"`
38-
PlatformServices []string `json:"platformServices"`
36+
ClusterProviders []Provider `json:"clusterProviders"`
37+
ServiceProviders []Provider `json:"serviceProviders"`
38+
PlatformServices []Provider `json:"platformServices"`
39+
}
40+
41+
type Provider struct {
42+
Name string `json:"name"`
43+
Config json.RawMessage `json:"config"`
44+
ConfigParsed map[string]interface{}
3945
}
4046

4147
type OpenMCPOperator struct {
@@ -96,5 +102,44 @@ func (c *BootstrapperConfig) Validate() error {
96102
errs = append(errs, field.Invalid(field.NewPath("openmcpOperator.config"), string(c.OpenMCPOperator.Config), "openmcp operator config is not valid yaml"))
97103
}
98104

105+
for i, cp := range c.Providers.ClusterProviders {
106+
if len(cp.Name) == 0 {
107+
errs = append(errs, field.Required(field.NewPath("providers.clusterProviders").Index(i).Child("name"), "cluster provider name is required"))
108+
}
109+
110+
if cp.Config != nil {
111+
err := yaml.Unmarshal(cp.Config, &c.Providers.ClusterProviders[i].ConfigParsed)
112+
if err != nil {
113+
errs = append(errs, field.Invalid(field.NewPath("providers.clusterProviders").Index(i).Child("config"), string(cp.Config), "cluster provider config is not valid yaml"))
114+
}
115+
}
116+
}
117+
118+
for i, sp := range c.Providers.ServiceProviders {
119+
if len(sp.Name) == 0 {
120+
errs = append(errs, field.Required(field.NewPath("providers.serviceProviders").Index(i).Child("name"), "service provider name is required"))
121+
}
122+
123+
if sp.Config != nil {
124+
err := yaml.Unmarshal(sp.Config, &c.Providers.ServiceProviders[i].ConfigParsed)
125+
if err != nil {
126+
errs = append(errs, field.Invalid(field.NewPath("providers.serviceProviders").Index(i).Child("config"), string(sp.Config), "service provider config is not valid yaml"))
127+
}
128+
}
129+
}
130+
131+
for i, ps := range c.Providers.PlatformServices {
132+
if len(ps.Name) == 0 {
133+
errs = append(errs, field.Required(field.NewPath("providers.platformServices").Index(i).Child("name"), "platform service name is required"))
134+
}
135+
136+
if ps.Config != nil {
137+
err := yaml.Unmarshal(ps.Config, &c.Providers.PlatformServices[i].ConfigParsed)
138+
if err != nil {
139+
errs = append(errs, field.Invalid(field.NewPath("providers.platformServices").Index(i).Child("config"), string(ps.Config), "platform service config is not valid yaml"))
140+
}
141+
}
142+
}
143+
99144
return errs.ToAggregate()
100145
}

internal/deployment-repo/deploymentRepoManager.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -312,7 +312,7 @@ func (m *DeploymentRepoManager) ApplyCustomResourceDefinitions(ctx context.Conte
312312
}
313313

314314
for _, clusterProvider := range m.Config.Providers.ClusterProviders {
315-
clusterProviderCV, err := m.compGetter.GetReferencedComponentVersionRecursive(ctx, m.compGetter.RootComponentVersion(), "cluster-provider-"+clusterProvider)
315+
clusterProviderCV, err := m.compGetter.GetReferencedComponentVersionRecursive(ctx, m.compGetter.RootComponentVersion(), "cluster-provider-"+clusterProvider.Name)
316316
if err != nil {
317317
return fmt.Errorf("failed to get component version for cluster provider %s: %w", clusterProvider, err)
318318
}
@@ -324,7 +324,7 @@ func (m *DeploymentRepoManager) ApplyCustomResourceDefinitions(ctx context.Conte
324324
}
325325

326326
for _, serviceProvider := range m.Config.Providers.ServiceProviders {
327-
serviceProviderCV, err := m.compGetter.GetReferencedComponentVersionRecursive(ctx, m.compGetter.RootComponentVersion(), "service-provider-"+serviceProvider)
327+
serviceProviderCV, err := m.compGetter.GetReferencedComponentVersionRecursive(ctx, m.compGetter.RootComponentVersion(), "service-provider-"+serviceProvider.Name)
328328
if err != nil {
329329
return fmt.Errorf("failed to get component version for service provider %s: %w", serviceProvider, err)
330330
}
@@ -335,7 +335,7 @@ func (m *DeploymentRepoManager) ApplyCustomResourceDefinitions(ctx context.Conte
335335
}
336336

337337
for _, platformService := range m.Config.Providers.PlatformServices {
338-
platformServiceCV, err := m.compGetter.GetReferencedComponentVersionRecursive(ctx, m.compGetter.RootComponentVersion(), "platform-service-"+platformService)
338+
platformServiceCV, err := m.compGetter.GetReferencedComponentVersionRecursive(ctx, m.compGetter.RootComponentVersion(), "platform-service-"+platformService.Name)
339339
if err != nil {
340340
return fmt.Errorf("failed to get component version for platform service %s: %w", platformService, err)
341341
}
@@ -496,15 +496,15 @@ func (m *DeploymentRepoManager) UpdateResourcesKustomization() error {
496496
}
497497

498498
for _, clusterProvider := range m.Config.Providers.ClusterProviders {
499-
files = append(files, filepath.Join("cluster-providers", clusterProvider+".yaml"))
499+
files = append(files, filepath.Join("cluster-providers", clusterProvider.Name+".yaml"))
500500
}
501501

502502
for _, serviceProvider := range m.Config.Providers.ServiceProviders {
503-
files = append(files, filepath.Join("service-providers", serviceProvider+".yaml"))
503+
files = append(files, filepath.Join("service-providers", serviceProvider.Name+".yaml"))
504504
}
505505

506506
for _, platformService := range m.Config.Providers.PlatformServices {
507-
files = append(files, filepath.Join("platform-services", platformService+".yaml"))
507+
files = append(files, filepath.Join("platform-services", platformService.Name+".yaml"))
508508
}
509509

510510
for _, manifest := range m.extraManifests {

internal/deployment-repo/deploymentRepoManager_test.go

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,22 @@ func TestDeploymentRepoManager(t *testing.T) {
5656
Config: json.RawMessage(`{"someKey": "someValue"}`),
5757
},
5858
Providers: config.Providers{
59-
ClusterProviders: []string{"test"},
60-
ServiceProviders: []string{"test"},
61-
PlatformServices: []string{"test"},
59+
ClusterProviders: []config.Provider{
60+
{
61+
Name: "test",
62+
Config: json.RawMessage(`{"verbosity": "info"}`),
63+
},
64+
},
65+
ServiceProviders: []config.Provider{
66+
{
67+
Name: "test",
68+
},
69+
},
70+
PlatformServices: []config.Provider{
71+
{
72+
Name: "test",
73+
},
74+
},
6275
},
6376
ImagePullSecrets: []string{"imgpull-a", "imgpull-b"},
6477
}

internal/deployment-repo/templater.go

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ import (
1010
"github.com/go-git/go-billy/v5"
1111
"github.com/go-git/go-git/v5"
1212

13+
"github.com/openmcp-project/bootstrapper/internal/config"
14+
1315
"github.com/openmcp-project/bootstrapper/internal/log"
1416
ocmcli "github.com/openmcp-project/bootstrapper/internal/ocm-cli"
1517
"github.com/openmcp-project/bootstrapper/internal/template"
@@ -119,10 +121,11 @@ type ProviderOptions struct {
119121
Name string
120122
Image string
121123
ImagePullSecrets []string
124+
Config map[string]interface{}
122125
}
123126

124127
// TemplateProviders templates the specified cluster providers, service providers, and platform services
125-
func TemplateProviders(ctx context.Context, clusterProviders, serviceProviders, platformServices, imagePullSecrets []string, ocmGetter *ocmcli.ComponentGetter, repo *git.Repository) error {
128+
func TemplateProviders(ctx context.Context, clusterProviders, serviceProviders, platformServices []config.Provider, imagePullSecrets []string, ocmGetter *ocmcli.ComponentGetter, repo *git.Repository) error {
126129
basePath := filepath.Join("resources", "openmcp")
127130
clusterProvidersDir := filepath.Join(basePath, "cluster-providers")
128131
serviceProvidersDir := filepath.Join(basePath, "service-providers")
@@ -150,7 +153,7 @@ func TemplateProviders(ctx context.Context, clusterProviders, serviceProviders,
150153
}
151154

152155
for _, cp := range clusterProviders {
153-
componentVersion, err := ocmGetter.GetReferencedComponentVersionRecursive(ctx, ocmGetter.RootComponentVersion(), "cluster-provider-"+cp)
156+
componentVersion, err := ocmGetter.GetReferencedComponentVersionRecursive(ctx, ocmGetter.RootComponentVersion(), "cluster-provider-"+cp.Name)
154157
if err != nil {
155158
return fmt.Errorf("failed to get component version for cluster provider %s: %w", cp, err)
156159
}
@@ -161,9 +164,10 @@ func TemplateProviders(ctx context.Context, clusterProviders, serviceProviders,
161164
}
162165

163166
opts := &ProviderOptions{
164-
Name: cp,
167+
Name: cp.Name,
165168
Image: *imageResource.Access.ImageReference,
166169
ImagePullSecrets: imagePullSecrets,
170+
Config: cp.ConfigParsed,
167171
}
168172

169173
err = templateProvider(opts, clusterProviderTemplate, clusterProvidersDir, repo)
@@ -173,7 +177,7 @@ func TemplateProviders(ctx context.Context, clusterProviders, serviceProviders,
173177
}
174178

175179
for _, sp := range serviceProviders {
176-
componentVersion, err := ocmGetter.GetReferencedComponentVersionRecursive(ctx, ocmGetter.RootComponentVersion(), "service-provider-"+sp)
180+
componentVersion, err := ocmGetter.GetReferencedComponentVersionRecursive(ctx, ocmGetter.RootComponentVersion(), "service-provider-"+sp.Name)
177181
if err != nil {
178182
return fmt.Errorf("failed to get component version for service provider %s: %w", sp, err)
179183
}
@@ -184,9 +188,10 @@ func TemplateProviders(ctx context.Context, clusterProviders, serviceProviders,
184188
}
185189

186190
opts := &ProviderOptions{
187-
Name: sp,
191+
Name: sp.Name,
188192
Image: *imageResource.Access.ImageReference,
189193
ImagePullSecrets: imagePullSecrets,
194+
Config: sp.ConfigParsed,
190195
}
191196

192197
err = templateProvider(opts, serviceProviderTemplate, serviceProvidersDir, repo)
@@ -196,7 +201,7 @@ func TemplateProviders(ctx context.Context, clusterProviders, serviceProviders,
196201
}
197202

198203
for _, ps := range platformServices {
199-
componentVersion, err := ocmGetter.GetReferencedComponentVersionRecursive(ctx, ocmGetter.RootComponentVersion(), "platform-service-"+ps)
204+
componentVersion, err := ocmGetter.GetReferencedComponentVersionRecursive(ctx, ocmGetter.RootComponentVersion(), "platform-service-"+ps.Name)
200205
if err != nil {
201206
return fmt.Errorf("failed to get component version for platform service %s: %w", ps, err)
202207
}
@@ -207,9 +212,10 @@ func TemplateProviders(ctx context.Context, clusterProviders, serviceProviders,
207212
}
208213

209214
opts := &ProviderOptions{
210-
Name: ps,
215+
Name: ps.Name,
211216
Image: *imageResource.Access.ImageReference,
212217
ImagePullSecrets: imagePullSecrets,
218+
Config: ps.ConfigParsed,
213219
}
214220

215221
err = templateProvider(opts, platformServiceTemplate, platformServicesDir, repo)
@@ -238,13 +244,15 @@ func templateProvider(options *ProviderOptions, templateSource, dir string, repo
238244
logger.Debugf("Creating provider %s with image %s in path %s", options.Name, options.Image, providerPath)
239245

240246
te := template.NewTemplateExecution()
247+
241248
templateInput := map[string]interface{}{
242249
"values": map[string]interface{}{
243250
"name": options.Name,
244251
"image": map[string]interface{}{
245252
"location": options.Image,
246253
"imagePullSecrets": options.ImagePullSecrets,
247254
},
255+
"config": options.Config,
248256
},
249257
}
250258

internal/deployment-repo/templates/clusterProvider.yaml

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,6 @@ spec:
1010
- name: "{{ $value }}"
1111
{{- end }}
1212
{{- end }}
13-
{{- if dig "env" "" .values }}
14-
env:
15-
{{- range $key, $value := .values.env }}
16-
{{ $key }}: {{ $value }}
17-
{{- end }}
18-
{{- end }}
19-
{{- if dig "verbosity" "" .values }}
20-
verbosity: {{ .values.verbosity }}
13+
{{- if dig "config" "" .values }}
14+
{{ toYaml .values.config | indent 2 }}
2115
{{- end }}

internal/deployment-repo/templates/platformService.yaml

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,6 @@ spec:
1010
- name: "{{ $value }}"
1111
{{- end }}
1212
{{- end }}
13-
{{- if dig "env" "" .values }}
14-
env:
15-
{{- range $key, $value := .values.env }}
16-
{{ $key }}: {{ $value }}
17-
{{- end }}
18-
{{- end }}
19-
{{- if dig "verbosity" "" .values }}
20-
verbosity: {{ .values.verbosity }}
13+
{{- if dig "config" "" .values }}
14+
{{ toYaml .values.config | indent 2 }}
2115
{{- end }}

internal/deployment-repo/templates/serviceProvider.yaml

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,6 @@ spec:
1010
- name: "{{ $value }}"
1111
{{- end }}
1212
{{- end }}
13-
{{- if dig "env" "" .values }}
14-
env:
15-
{{- range $key, $value := .values.env }}
16-
{{ $key }}: {{ $value }}
17-
{{- end }}
18-
{{- end }}
19-
{{- if dig "verbosity" "" .values }}
20-
verbosity: {{ .values.verbosity }}
13+
{{- if dig "config" "" .values }}
14+
{{ toYaml .values.config | indent 2 }}
2115
{{- end }}

internal/deployment-repo/testdata/01/expected-repo/resources/openmcp/cluster-providers/test.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,4 @@ spec:
77
imagePullSecrets:
88
- name: "imgpull-a"
99
- name: "imgpull-b"
10+
verbosity: info

internal/deployment-repo/testdata/01/expected-repo/resources/openmcp/kustomization.yaml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,19 @@
11
apiVersion: kustomize.config.k8s.io/v1beta1
22
kind: Kustomization
3+
patches:
4+
- patch: |
5+
apiVersion: apps/v1
6+
kind: Deployment
7+
metadata:
8+
name: this_value_is_ignored
9+
spec:
10+
template:
11+
spec:
12+
imagePullSecrets:
13+
- name: imgpull-a
14+
- name: imgpull-b
15+
target:
16+
kind: Deployment
317
resources:
418
- rbac.yaml
519
- namespace.yaml

internal/deployment-repo/testdata/01/templates/openmcp/templates/resources/kustomization.yaml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,19 @@ resources:
55
- rbac.yaml
66
- namespace.yaml
77
- deployment.yaml
8+
9+
{{- if .Values.imagePullSecrets }}
10+
patches:
11+
- target:
12+
kind: Deployment
13+
patch: |
14+
apiVersion: apps/v1
15+
kind: Deployment
16+
metadata:
17+
name: this_value_is_ignored
18+
spec:
19+
template:
20+
spec:
21+
imagePullSecrets:
22+
{{ toYaml .Values.imagePullSecrets | indent 14 }}
23+
{{- end }}

0 commit comments

Comments
 (0)