1
1
package v1alpha1
2
2
3
3
import (
4
+ "bytes"
4
5
"crypto/sha256"
5
6
"fmt"
6
7
"path"
@@ -89,7 +90,7 @@ func tryFillMissingSections(
89
90
}
90
91
}
91
92
92
- func buildConfiguration (cr * Storage , crDB * Database ) (string , error ) {
93
+ func buildConfiguration (cr * Storage , crDB * Database ) ([] byte , error ) {
93
94
// If any kind of configuration exists on Database object, then
94
95
// it will be used to fully override storage object.
95
96
// This is a temporary solution that should go away when it would
@@ -101,34 +102,24 @@ func buildConfiguration(cr *Storage, crDB *Database) (string, error) {
101
102
rawYamlConfiguration = cr .Spec .Configuration
102
103
}
103
104
104
- dynconfig , err := TryParseDynconfig (rawYamlConfiguration )
105
- if err == nil {
106
- config , err := yaml .Marshal (dynconfig .Config )
107
- return string (config ), err
105
+ config := make (map [string ]interface {})
106
+ if err := yaml .Unmarshal ([]byte (rawYamlConfiguration ), & config ); err != nil {
107
+ return []byte ("" ), err
108
108
}
109
109
110
- config := make (map [string ]interface {})
111
- err = yaml .Unmarshal ([]byte (rawYamlConfiguration ), & config )
112
- if err != nil {
113
- return "" , err
110
+ dynconfig := schema.Dynconfig {}
111
+ if err := TryParseDynconfig (rawYamlConfiguration , & dynconfig ); err == nil {
112
+ return yaml .Marshal (dynconfig .Config )
114
113
}
115
114
116
115
generatedConfig := generateSomeDefaults (cr , crDB )
117
116
tryFillMissingSections (config , generatedConfig )
118
117
119
- data , err := yaml .Marshal (config )
120
- if err != nil {
121
- return "" , err
122
- }
123
-
124
- return string (data ), nil
118
+ return yaml .Marshal (config )
125
119
}
126
120
127
- func TryParseDynconfig (rawYamlConfiguration string ) (schema.Dynconfig , error ) {
128
- dynconfig := schema.Dynconfig {}
129
- err := yaml .Unmarshal ([]byte (rawYamlConfiguration ), & dynconfig )
130
- if err != nil {
131
- return schema.Dynconfig {}, err
132
- }
133
- return dynconfig , nil
121
+ func TryParseDynconfig (rawYamlConfiguration string , dynconfig * schema.Dynconfig ) error {
122
+ dec := yaml .NewDecoder (bytes .NewReader ([]byte (rawYamlConfiguration )))
123
+ dec .KnownFields (true )
124
+ return dec .Decode (& dynconfig )
134
125
}
0 commit comments