Skip to content

Commit 7dcfa94

Browse files
authored
fix: config not loaded correctly in v1 (#154)
* fix wrong config parsing * feat: release v1.1.1
1 parent 84ef31e commit 7dcfa94

File tree

8 files changed

+63
-17
lines changed

8 files changed

+63
-17
lines changed

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
v1.1.0-dev
1+
v1.1.1

charts/project-workspace-operator/Chart.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@ apiVersion: v2
22
name: project-workspace-operator
33
description: A Helm chart for the project-workspace-operator
44
type: application
5-
version: v1.1.0
6-
appVersion: v1.1.0
5+
version: v1.1.1
6+
appVersion: v1.1.1

charts/project-workspace-operator/values.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ image:
2020
repository: ghcr.io/openmcp-project/images/project-workspace-operator
2121
pullPolicy: IfNotPresent
2222
# Overrides the image tag whose default is the chart appVersion.
23-
tag: v1.1.0
23+
tag: v1.1.1
2424

2525
imagePullSecrets: []
2626
nameOverride: ""

cmd/project-workspace-operator/main.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package main
22

33
import (
44
"context"
5+
"encoding/json"
56
goflag "flag"
67
"fmt"
78
"os"
@@ -349,11 +350,21 @@ func (o *Options) Complete() error {
349350
return err
350351
}
351352

353+
clog := o.Log.WithName("config")
352354
if o.ProjectWorkspaceConfigPath != "" {
355+
clog.Info("Loading project workspace config", "path", o.ProjectWorkspaceConfigPath)
353356
o.ProjectWorkspaceConfig, err = config.LoadConfig(o.ProjectWorkspaceConfigPath)
354357
if err != nil {
355358
return err
356359
}
360+
cfgJson, err := json.Marshal(o.ProjectWorkspaceConfig)
361+
if err != nil {
362+
clog.Error(err, "Unable to marshal loaded config for logging")
363+
} else {
364+
clog.Info("Successfully loaded project workspace config", "config", string(cfgJson))
365+
}
366+
} else {
367+
clog.Info("No config argument specified, skipping config loading")
357368
}
358369

359370
if o.ProjectWorkspaceConfig == nil {

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ require (
77
github.com/onsi/ginkgo/v2 v2.27.2
88
github.com/onsi/gomega v1.38.2
99
github.com/openmcp-project/controller-utils v0.24.0
10-
github.com/openmcp-project/project-workspace-operator/api v1.1.0
10+
github.com/openmcp-project/project-workspace-operator/api v1.1.1
1111
github.com/stretchr/testify v1.11.1
1212
k8s.io/api v0.34.2
1313
k8s.io/apimachinery v0.34.2

internal/controller/core/config/config.go

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package config
22

33
import (
4-
"errors"
54
"fmt"
65
"os"
76

@@ -27,15 +26,21 @@ func LoadConfig(path string) (*pwv1alpha1.ProjectWorkspaceConfig, error) {
2726
if err != nil {
2827
return nil, fmt.Errorf("error reading config file: %w", err)
2928
}
29+
raw := map[string]any{}
30+
err = yaml.Unmarshal(data, &raw)
31+
if err != nil {
32+
return nil, fmt.Errorf("error unmarshaling config file: %w", err)
33+
}
3034
cfg := &pwv1alpha1.ProjectWorkspaceConfig{}
31-
err = yaml.Unmarshal(data, cfg)
35+
_, hasKind := raw["kind"]
36+
_, hasApiVersion := raw["apiVersion"]
37+
if hasKind && hasApiVersion {
38+
err = yaml.Unmarshal(data, cfg)
39+
} else {
40+
err = yaml.Unmarshal(data, &cfg.Spec)
41+
}
3242
if err != nil {
33-
cfgSpec := &pwv1alpha1.ProjectWorkspaceConfigSpec{}
34-
err2 := yaml.Unmarshal(data, cfgSpec)
35-
if err2 != nil {
36-
return nil, fmt.Errorf("config can neither be parsed as full config nor as spec: %w", errors.Join(err, err2))
37-
}
38-
cfg.Spec = *cfgSpec
43+
return nil, fmt.Errorf("config can neither be parsed as full config nor as spec: %w", err)
3944
}
4045
return cfg, nil
4146
}

internal/controller/core/config/config_test.go

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,27 @@ import (
1212
)
1313

1414
func TestLoadConfig(t *testing.T) {
15-
pwConfig, err := config.LoadConfig("./testdata/config_valid.yaml")
15+
for _, validConfig := range []string{
16+
"./testdata/config_valid.yaml",
17+
"./testdata/config_valid2.yaml",
18+
} {
19+
pwConfig, err := config.LoadConfig(validConfig)
1620

17-
if assert.NoError(t, err) {
18-
assert.NotNil(t, pwConfig)
21+
if assert.NoError(t, err) {
22+
assert.NotNil(t, pwConfig)
23+
resourcesBlockingDeletion := []metav1.GroupVersionKind{
24+
{
25+
Group: "",
26+
Version: "v1",
27+
Kind: "Secret",
28+
},
29+
}
30+
assert.ElementsMatch(t, pwConfig.Spec.Project.ResourcesBlockingDeletion, resourcesBlockingDeletion)
31+
assert.ElementsMatch(t, pwConfig.Spec.Workspace.ResourcesBlockingDeletion, resourcesBlockingDeletion)
32+
}
1933
}
2034

21-
pwConfig, err = config.LoadConfig("./testdata/config_invalid.yaml")
35+
pwConfig, err := config.LoadConfig("./testdata/config_invalid.yaml")
2236

2337
if assert.Error(t, err) {
2438
assert.Nil(t, pwConfig)
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
apiVersion: core.openmcp.cloud/v1alpha1
2+
kind: ProjectWorkspaceConfig
3+
metadata:
4+
name: project-workspace-config
5+
spec:
6+
project:
7+
resourcesBlockingDeletion:
8+
- group: ""
9+
version: "v1"
10+
kind: "Secret"
11+
12+
workspace:
13+
resourcesBlockingDeletion:
14+
- group: ""
15+
version: "v1"
16+
kind: "Secret"

0 commit comments

Comments
 (0)